mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
refactor: cleanup notifications and core
This commit is contained in:
parent
d01999814e
commit
09ad16bc44
|
@ -234,26 +234,6 @@ void Core::makeTox(QByteArray savedata)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Creates CoreAv instance. Should be called after makeTox method
|
|
||||||
*/
|
|
||||||
void Core::makeAv()
|
|
||||||
{
|
|
||||||
if (!tox) {
|
|
||||||
qCritical() << "No Tox instance, can't create ToxAV";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
av = new CoreAV(tox);
|
|
||||||
if (!av->getToxAv()) {
|
|
||||||
qCritical() << "Toxav core failed to start";
|
|
||||||
emit failedToStart();
|
|
||||||
}
|
|
||||||
for (const auto& callback : toCallWhenAvReady) {
|
|
||||||
callback(av);
|
|
||||||
}
|
|
||||||
toCallWhenAvReady.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Initializes the core, must be called before anything else
|
* @brief Initializes the core, must be called before anything else
|
||||||
*/
|
*/
|
||||||
|
@ -263,7 +243,6 @@ void Core::start(const QByteArray& savedata)
|
||||||
if (isNewProfile) {
|
if (isNewProfile) {
|
||||||
qDebug() << "Creating a new profile";
|
qDebug() << "Creating a new profile";
|
||||||
makeTox(QByteArray());
|
makeTox(QByteArray());
|
||||||
makeAv();
|
|
||||||
setStatusMessage(tr("Toxing on qTox"));
|
setStatusMessage(tr("Toxing on qTox"));
|
||||||
setUsername(profile.getName());
|
setUsername(profile.getName());
|
||||||
} else {
|
} else {
|
||||||
|
@ -274,7 +253,6 @@ void Core::start(const QByteArray& savedata)
|
||||||
}
|
}
|
||||||
|
|
||||||
makeTox(savedata);
|
makeTox(savedata);
|
||||||
makeAv();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
qsrand(time(nullptr));
|
qsrand(time(nullptr));
|
||||||
|
@ -284,6 +262,15 @@ void Core::start(const QByteArray& savedata)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// toxcore is successfully created, create toxav
|
||||||
|
av = new CoreAV(tox);
|
||||||
|
if (!av->getToxAv()) {
|
||||||
|
qCritical() << "Toxav failed to start";
|
||||||
|
emit failedToStart();
|
||||||
|
deadifyTox();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// set GUI with user and statusmsg
|
// set GUI with user and statusmsg
|
||||||
QString name = getUsername();
|
QString name = getUsername();
|
||||||
if (!name.isEmpty()) {
|
if (!name.isEmpty()) {
|
||||||
|
@ -332,6 +319,7 @@ void Core::start(const QByteArray& savedata)
|
||||||
|
|
||||||
process(); // starts its own timer
|
process(); // starts its own timer
|
||||||
av->start();
|
av->start();
|
||||||
|
emit avReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Using the now commented out statements in checkConnection(), I watched how
|
/* Using the now commented out statements in checkConnection(), I watched how
|
||||||
|
@ -1385,11 +1373,6 @@ bool Core::isReady() const
|
||||||
return av && av->getToxAv() && tox && ready;
|
return av && av->getToxAv() && tox && ready;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::callWhenAvReady(std::function<void(CoreAV* av)>&& toCall)
|
|
||||||
{
|
|
||||||
toCallWhenAvReady.emplace_back(std::move(toCall));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Sets the NoSpam value to prevent friend request spam
|
* @brief Sets the NoSpam value to prevent friend request spam
|
||||||
* @param nospam an arbitrary which becomes part of the Tox ID
|
* @param nospam an arbitrary which becomes part of the Tox ID
|
||||||
|
|
|
@ -81,7 +81,6 @@ public:
|
||||||
QPair<QByteArray, QByteArray> getKeypair() const;
|
QPair<QByteArray, QByteArray> getKeypair() const;
|
||||||
|
|
||||||
bool isReady() const;
|
bool isReady() const;
|
||||||
void callWhenAvReady(std::function<void(CoreAV* av)>&& toCall);
|
|
||||||
|
|
||||||
void sendFile(uint32_t friendId, QString filename, QString filePath, long long filesize);
|
void sendFile(uint32_t friendId, QString filename, QString filePath, long long filesize);
|
||||||
|
|
||||||
|
@ -170,6 +169,7 @@ signals:
|
||||||
|
|
||||||
void failedToStart();
|
void failedToStart();
|
||||||
void badProxy();
|
void badProxy();
|
||||||
|
void avReady();
|
||||||
|
|
||||||
void fileSendStarted(ToxFile file);
|
void fileSendStarted(ToxFile file);
|
||||||
void fileReceiveRequested(ToxFile file);
|
void fileReceiveRequested(ToxFile file);
|
||||||
|
@ -235,7 +235,6 @@ private:
|
||||||
QMutex messageSendMutex;
|
QMutex messageSendMutex;
|
||||||
bool ready;
|
bool ready;
|
||||||
const ICoreSettings* const s;
|
const ICoreSettings* const s;
|
||||||
std::vector<std::function<void(CoreAV* av)>> toCallWhenAvReady;
|
|
||||||
|
|
||||||
static QThread* coreThread;
|
static QThread* coreThread;
|
||||||
|
|
||||||
|
|
|
@ -18,8 +18,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "chatform.h"
|
#include "chatform.h"
|
||||||
|
|
||||||
#include "src/audio/audio.h"
|
|
||||||
#include "src/chatlog/chatlinecontentproxy.h"
|
#include "src/chatlog/chatlinecontentproxy.h"
|
||||||
#include "src/chatlog/chatlog.h"
|
#include "src/chatlog/chatlog.h"
|
||||||
#include "src/chatlog/chatmessage.h"
|
#include "src/chatlog/chatmessage.h"
|
||||||
|
@ -53,6 +51,15 @@
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ChatForm::incomingNotification Notify that we are called by someone.
|
||||||
|
* @param friendId Friend that is calling us.
|
||||||
|
*
|
||||||
|
* @brief ChatForm::outgoingNotification Notify that we are calling someone.
|
||||||
|
*
|
||||||
|
* @brief stopNotification Tell others to stop notification of a call.
|
||||||
|
*/
|
||||||
|
|
||||||
static const int CHAT_WIDGET_MIN_HEIGHT = 50;
|
static const int CHAT_WIDGET_MIN_HEIGHT = 50;
|
||||||
static const int DELIVER_OFFLINE_MESSAGES_DELAY = 250;
|
static const int DELIVER_OFFLINE_MESSAGES_DELAY = 250;
|
||||||
static const int SCREENSHOT_GRABBER_OPENING_DELAY = 500;
|
static const int SCREENSHOT_GRABBER_OPENING_DELAY = 500;
|
||||||
|
@ -368,7 +375,7 @@ void ChatForm::onAvStart(uint32_t friendId, bool video)
|
||||||
hideNetcam();
|
hideNetcam();
|
||||||
}
|
}
|
||||||
|
|
||||||
Audio::getInstance().stopLoop();
|
emit stopNotification();
|
||||||
updateCallButtons();
|
updateCallButtons();
|
||||||
startCounter();
|
startCounter();
|
||||||
}
|
}
|
||||||
|
@ -385,6 +392,7 @@ void ChatForm::onAvEnd(uint32_t friendId, bool error)
|
||||||
netcam->showNormal();
|
netcam->showNormal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
emit stopNotification();
|
||||||
updateCallButtons();
|
updateCallButtons();
|
||||||
stopCounter(error);
|
stopCounter(error);
|
||||||
hideNetcam();
|
hideNetcam();
|
||||||
|
@ -403,6 +411,7 @@ void ChatForm::onAnswerCallTriggered(bool video)
|
||||||
{
|
{
|
||||||
headWidget->removeCallConfirm();
|
headWidget->removeCallConfirm();
|
||||||
uint32_t friendId = f->getId();
|
uint32_t friendId = f->getId();
|
||||||
|
emit stopNotification();
|
||||||
emit acceptCall(friendId);
|
emit acceptCall(friendId);
|
||||||
|
|
||||||
updateCallButtons();
|
updateCallButtons();
|
||||||
|
|
|
@ -30,7 +30,6 @@
|
||||||
#include "src/widget/tool/screenshotgrabber.h"
|
#include "src/widget/tool/screenshotgrabber.h"
|
||||||
|
|
||||||
class CallConfirmWidget;
|
class CallConfirmWidget;
|
||||||
class CoreAV;
|
|
||||||
class FileTransferInstance;
|
class FileTransferInstance;
|
||||||
class Friend;
|
class Friend;
|
||||||
class History;
|
class History;
|
||||||
|
@ -57,8 +56,10 @@ public:
|
||||||
static const QString ACTION_PREFIX;
|
static const QString ACTION_PREFIX;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
void incomingNotification(uint32_t friendId);
|
void incomingNotification(uint32_t friendId);
|
||||||
void outgoingNotification();
|
void outgoingNotification();
|
||||||
|
void stopNotification();
|
||||||
void rejectCall(uint32_t friendId);
|
void rejectCall(uint32_t friendId);
|
||||||
void acceptCall(uint32_t friendId);
|
void acceptCall(uint32_t friendId);
|
||||||
|
|
||||||
|
|
|
@ -244,7 +244,6 @@ void Widget::init()
|
||||||
|
|
||||||
const Settings& s = Settings::getInstance();
|
const Settings& s = Settings::getInstance();
|
||||||
|
|
||||||
core->callWhenAvReady([this](CoreAV* av){connect(av, &CoreAV::avEnd, this, &Widget::onCallEnd);});
|
|
||||||
connect(core, &Core::fileDownloadFinished, filesForm, &FilesForm::onFileDownloadComplete);
|
connect(core, &Core::fileDownloadFinished, filesForm, &FilesForm::onFileDownloadComplete);
|
||||||
connect(core, &Core::fileUploadFinished, filesForm, &FilesForm::onFileUploadComplete);
|
connect(core, &Core::fileUploadFinished, filesForm, &FilesForm::onFileUploadComplete);
|
||||||
connect(ui->addButton, &QPushButton::clicked, this, &Widget::onAddClicked);
|
connect(ui->addButton, &QPushButton::clicked, this, &Widget::onAddClicked);
|
||||||
|
@ -954,23 +953,20 @@ void Widget::outgoingNotification()
|
||||||
audio.playMono16Sound(Audio::getSound(Audio::Sound::OutgoingCall));
|
audio.playMono16Sound(Audio::getSound(Audio::Sound::OutgoingCall));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Widget::onStopNotification Stop the notification sound.
|
||||||
|
*/
|
||||||
|
void Widget::onStopNotification()
|
||||||
|
{
|
||||||
|
Audio::getInstance().stopLoop();
|
||||||
|
}
|
||||||
|
|
||||||
void Widget::onRejectCall(uint32_t friendId)
|
void Widget::onRejectCall(uint32_t friendId)
|
||||||
{
|
{
|
||||||
Audio::getInstance().stopLoop();
|
|
||||||
CoreAV* av = Core::getInstance()->getAv();
|
CoreAV* av = Core::getInstance()->getAv();
|
||||||
av->cancelCall(friendId);
|
av->cancelCall(friendId);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Widget::onAcceptCall(uint32_t friendId)
|
|
||||||
{
|
|
||||||
Audio::getInstance().stopLoop();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Widget::onCallEnd(uint32_t friendId)
|
|
||||||
{
|
|
||||||
Audio::getInstance().stopLoop();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Widget::addFriend(uint32_t friendId, const ToxPk& friendPk)
|
void Widget::addFriend(uint32_t friendId, const ToxPk& friendPk)
|
||||||
{
|
{
|
||||||
Settings& s = Settings::getInstance();
|
Settings& s = Settings::getInstance();
|
||||||
|
@ -1000,8 +996,8 @@ void Widget::addFriend(uint32_t friendId, const ToxPk& friendPk)
|
||||||
|
|
||||||
connect(friendForm, &ChatForm::incomingNotification, this, &Widget::incomingNotification);
|
connect(friendForm, &ChatForm::incomingNotification, this, &Widget::incomingNotification);
|
||||||
connect(friendForm, &ChatForm::outgoingNotification, this, &Widget::outgoingNotification);
|
connect(friendForm, &ChatForm::outgoingNotification, this, &Widget::outgoingNotification);
|
||||||
|
connect(friendForm, &ChatForm::stopNotification, this, &Widget::onStopNotification);
|
||||||
connect(friendForm, &ChatForm::rejectCall, this, &Widget::onRejectCall);
|
connect(friendForm, &ChatForm::rejectCall, this, &Widget::onRejectCall);
|
||||||
connect(friendForm, &ChatForm::acceptCall, this, &Widget::onAcceptCall);
|
|
||||||
|
|
||||||
connect(widget, &FriendWidget::newWindowOpened, this, &Widget::openNewDialog);
|
connect(widget, &FriendWidget::newWindowOpened, this, &Widget::openNewDialog);
|
||||||
connect(widget, &FriendWidget::chatroomWidgetClicked, this, &Widget::onChatroomWidgetClicked);
|
connect(widget, &FriendWidget::chatroomWidgetClicked, this, &Widget::onChatroomWidgetClicked);
|
||||||
|
|
|
@ -217,8 +217,7 @@ private slots:
|
||||||
void outgoingNotification();
|
void outgoingNotification();
|
||||||
void incomingNotification(uint32_t friendId);
|
void incomingNotification(uint32_t friendId);
|
||||||
void onRejectCall(uint32_t friendId);
|
void onRejectCall(uint32_t friendId);
|
||||||
void onAcceptCall(uint32_t friendId);
|
void onStopNotification();
|
||||||
void onCallEnd(uint32_t friendId);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// QMainWindow overrides
|
// QMainWindow overrides
|
||||||
|
|
Loading…
Reference in New Issue
Block a user