This is a messaging/voip application intended to run on desktop systems
- git clone https://github.com/gstark31897/Akai
- cd Akai/client
- qmake -makefile
- make
- ./Akai is the current executable, more to come on this later
This is a messaging/voip application intended to run on desktop systems
The login box just goes away if you don't put in a valid username and password, this needs to be rectified.
Sent and received messages need to be delivered to all logged in devices.
I'd suggest putting them into a status at the bottom of the main window
We need encryption around messages (this is separate from the client to server SSL wrapper)
There's code already, it just needs a server side broker and socket connections.
We need encryption for client to server communications.
we also probably want to add an email account, for account recovery
This is most likely due to how often qt has to spawn a thread for reading from the audio input, look into making a persistant thread or using larger buffers.
to reproduce:
there needs to be a try catch around the string encode method, and an assosiated error message.
It'll probably use the same pipeline as video, just a different input.
needs to have max hosts, ssl cert/key, and port
http://doc.qt.io/qt-5/qstatusbar.html
see addPerminateWidget
Error message when building on Ubuntu 16.04.01:
Error Message when making by default:
(xenial)zackery@localhost:~/Desktop/C++/Akai/Akai/client$ make g++ -c -m64 -pipe -g -O2 -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I. -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -Iobjects -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o objects/messagelist.o messagelist.cpp messagelist.cpp: In constructor ‘FriendMenu::FriendMenu(QString, QWidget*)’: messagelist.cpp:9:54: error: no matching function for call to ‘FriendMenu::addAction(const char [5], FriendMenu*, void (FriendMenu::*)())’ addAction("Call", this, &FriendMenu::callSelected); ^ In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QMenu:1:0, from messagelist.h:14, from messagelist.cpp:1: /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:76:14: note: candidate: QAction* QMenu::addAction(const QString&) QAction *addAction(const QString &text); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:76:14: note: candidate expects 1 argument, 3 provided /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:77:14: note: candidate: QAction* QMenu::addAction(const QIcon&, const QString&) QAction *addAction(const QIcon &icon, const QString &text); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:77:14: note: candidate expects 2 arguments, 3 provided /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:78:14: note: candidate: QAction* QMenu::addAction(const QString&, const QObject*, const char*, const QKeySequence&) QAction *addAction(const QString &text, const QObject *receiver, const char* member, const QKeySequenc ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:78:14: note: no known conversion for argument 3 from ‘void (FriendMenu::*)()’ to ‘const char*’ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:79:14: note: candidate: QAction* QMenu::addAction(const QIcon&, const QString&, const QObject*, const char*, const QKeySequence&) QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char* member ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:79:14: note: candidate expects 5 arguments, 3 provided In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qaction.h:39:0, from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QAction:1, from messagelist.h:5, from messagelist.cpp:1: /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:538:10: note: candidate: void QWidget::addAction(QAction*) void addAction(QAction *action); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:538:10: note: candidate expects 1 argument, 3 provided messagelist.cpp:10:62: error: no matching function for call to ‘FriendMenu::addAction(const char [9], FriendMenu*, void (FriendMenu::*)())’ addAction("Unfriend", this, &FriendMenu::unfriendSelected); ^ In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QMenu:1:0, from messagelist.h:14, from messagelist.cpp:1: /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:76:14: note: candidate: QAction* QMenu::addAction(const QString&) QAction *addAction(const QString &text); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:76:14: note: candidate expects 1 argument, 3 provided /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:77:14: note: candidate: QAction* QMenu::addAction(const QIcon&, const QString&) QAction *addAction(const QIcon &icon, const QString &text); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:77:14: note: candidate expects 2 arguments, 3 provided /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:78:14: note: candidate: QAction* QMenu::addAction(const QString&, const QObject*, const char*, const QKeySequence&) QAction *addAction(const QString &text, const QObject *receiver, const char* member, const QKeySequenc ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:78:14: note: no known conversion for argument 3 from ‘void (FriendMenu::*)()’ to ‘const char*’ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:79:14: note: candidate: QAction* QMenu::addAction(const QIcon&, const QString&, const QObject*, const char*, const QKeySequence&) QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char* member ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:79:14: note: candidate expects 5 arguments, 3 provided In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qaction.h:39:0, from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QAction:1, from messagelist.h:5, from messagelist.cpp:1: /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:538:10: note: candidate: void QWidget::addAction(QAction*) void addAction(QAction *action); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:538:10: note: candidate expects 1 argument, 3 provided Makefile:407: recipe for target 'objects/messagelist.o' failed make: *** [objects/messagelist.o] Error 1
Error message after adding "-std=c++11" to the end of line 30 in the Akai.pro file located in Akai/client:
(xenial)zackery@localhost:~/Desktop/C++/Akai/Akai/client$ make g++ -c -m64 -pipe -g -std=c++11 -O2 -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I. -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -Iobjects -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o objects/messagelist.o messagelist.cpp messagelist.cpp: In constructor ‘FriendMenu::FriendMenu(QString, QWidget*)’: messagelist.cpp:9:54: error: no matching function for call to ‘FriendMenu::addAction(const char [5], FriendMenu*, void (FriendMenu::*)())’ addAction("Call", this, &FriendMenu::callSelected); ^ In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QMenu:1:0, from messagelist.h:14, from messagelist.cpp:1: /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:76:14: note: candidate: QAction* QMenu::addAction(const QString&) QAction *addAction(const QString &text); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:76:14: note: candidate expects 1 argument, 3 provided /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:77:14: note: candidate: QAction* QMenu::addAction(const QIcon&, const QString&) QAction *addAction(const QIcon &icon, const QString &text); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:77:14: note: candidate expects 2 arguments, 3 provided /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:78:14: note: candidate: QAction* QMenu::addAction(const QString&, const QObject*, const char*, const QKeySequence&) QAction *addAction(const QString &text, const QObject *receiver, const char* member, const QKeySequenc ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:78:14: note: no known conversion for argument 3 from ‘void (FriendMenu::*)()’ to ‘const char*’ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:79:14: note: candidate: QAction* QMenu::addAction(const QIcon&, const QString&, const QObject*, const char*, const QKeySequence&) QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char* member ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:79:14: note: candidate expects 5 arguments, 3 provided In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qaction.h:39:0, from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QAction:1, from messagelist.h:5, from messagelist.cpp:1: /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:538:10: note: candidate: void QWidget::addAction(QAction*) void addAction(QAction *action); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:538:10: note: candidate expects 1 argument, 3 provided messagelist.cpp:10:62: error: no matching function for call to ‘FriendMenu::addAction(const char [9], FriendMenu*, void (FriendMenu::*)())’ addAction("Unfriend", this, &FriendMenu::unfriendSelected); ^ In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QMenu:1:0, from messagelist.h:14, from messagelist.cpp:1: /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:76:14: note: candidate: QAction* QMenu::addAction(const QString&) QAction *addAction(const QString &text); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:76:14: note: candidate expects 1 argument, 3 provided /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:77:14: note: candidate: QAction* QMenu::addAction(const QIcon&, const QString&) QAction *addAction(const QIcon &icon, const QString &text); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:77:14: note: candidate expects 2 arguments, 3 provided /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:78:14: note: candidate: QAction* QMenu::addAction(const QString&, const QObject*, const char*, const QKeySequence&) QAction *addAction(const QString &text, const QObject *receiver, const char* member, const QKeySequenc ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:78:14: note: no known conversion for argument 3 from ‘void (FriendMenu::*)()’ to ‘const char*’ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:79:14: note: candidate: QAction* QMenu::addAction(const QIcon&, const QString&, const QObject*, const char*, const QKeySequence&) QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char* member ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:79:14: note: candidate expects 5 arguments, 3 provided In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qaction.h:39:0, from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QAction:1, from messagelist.h:5, from messagelist.cpp:1: /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:538:10: note: candidate: void QWidget::addAction(QAction*) void addAction(QAction *action); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:538:10: note: candidate expects 1 argument, 3 provided Makefile:407: recipe for target 'objects/messagelist.o' failed make: *** [objects/messagelist.o] Error 1
This isn't very important yet, but will be once there's actual users...
Presently, the client asks the server for a full message history every time it logs in, but I propose the addition of a date command to notify the client of the newest message, and a requirement for date on the msghist command.
Options menu needs to store audio device settings, perfered audio sample rates, and server configurations.
somewhere that we can store certs, keys, and server info
Crashed people's inernet while testing audio, we probably need to split the audio into smaller uniform packets instead of sending full 16000 byte packets over the udp port. This will make droped packets easier to manager, and will hopefully reduce network strain.
Not very important yet, but it'll probably be similar to audio.
This is a pretty big issue, we need a popup that asks the user if they want to accept a call before they start sending packets.
if clients have the same external ip address, they can't call eachother, they should attempt to reach eachother locally if external ip's match.
Tested program on a Windows machine and the audio cutout repeatedly (subsecond intervals)
This might be fixed, but should be double checked
there just needs to be a try catch arround the read on the server.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.