Use instance getters for Message/RosterModel in managers

master
Melvin Keskin 2021-03-30 17:10:01 +02:00 committed by Linus Jahn
parent b3467992bb
commit 28138987f9
7 changed files with 35 additions and 43 deletions

View File

@ -63,11 +63,11 @@ ClientWorker::ClientWorker(Caches *caches, bool enableLogging, QObject* parent)
m_enableLogging(enableLogging),
m_registrationManager(new RegistrationManager(this, m_client, m_caches->settings, this)),
m_vCardManager(new VCardManager(this, m_client, m_caches->avatarStorage, this)),
m_rosterManager(new RosterManager(m_client, RosterModel::instance(), m_caches->avatarStorage, m_vCardManager, this)),
m_messageHandler(new MessageHandler(this, m_client, MessageModel::instance(), this)),
m_rosterManager(new RosterManager(m_client, m_caches->avatarStorage, m_vCardManager, this)),
m_messageHandler(new MessageHandler(this, m_client, this)),
m_discoveryManager(new DiscoveryManager(m_client, this)),
m_uploadManager(new UploadManager(m_client, m_rosterManager, this)),
m_downloadManager(new DownloadManager(caches->transferCache, MessageModel::instance(), this)),
m_downloadManager(new DownloadManager(caches->transferCache, this)),
m_versionManager(new VersionManager(m_client, this)),
m_isApplicationWindowActive(true)
{

View File

@ -41,11 +41,10 @@
#include "MessageModel.h"
#include "TransferCache.h"
DownloadManager::DownloadManager(TransferCache *transferCache, MessageModel *model, QObject *parent)
DownloadManager::DownloadManager(TransferCache *transferCache, QObject *parent)
: QObject(parent),
m_netMngr(new QNetworkAccessManager(this)),
m_transferCache(transferCache),
m_model(model)
m_transferCache(transferCache)
{
connect(this, &DownloadManager::startDownloadRequested,
this, &DownloadManager::startDownload);
@ -74,7 +73,7 @@ void DownloadManager::startDownload(const QString &msgId, const QString &url)
connect(dl, &DownloadJob::finished, this, [=]() {
const QString &mediaLocation = dl->downloadLocation();
emit m_model->updateMessageRequested(msgId, [=] (Message &msg) {
emit MessageModel::instance()->updateMessageRequested(msgId, [=](Message &msg) {
msg.setMediaLocation(mediaLocation);
});

View File

@ -36,7 +36,6 @@
#include <QMap>
class TransferCache;
class MessageModel;
class QNetworkAccessManager;
class DownloadJob : public QObject
@ -72,7 +71,7 @@ class DownloadManager : public QObject
{
Q_OBJECT
public:
DownloadManager(TransferCache *m_transferCache, MessageModel *m_model, QObject *parent = nullptr);
DownloadManager(TransferCache *m_transferCache, QObject *parent = nullptr);
~DownloadManager();
signals:
@ -92,7 +91,6 @@ private slots:
private:
QNetworkAccessManager *m_netMngr;
TransferCache *m_transferCache;
MessageModel *m_model;
QMap<QString, DownloadJob *> m_downloads;
};

View File

@ -46,20 +46,20 @@
#include "MessageModel.h"
#include "MediaUtils.h"
MessageHandler::MessageHandler(ClientWorker *clientWorker, QXmppClient *client, MessageModel *model, QObject *parent)
MessageHandler::MessageHandler(ClientWorker *clientWorker, QXmppClient *client, QObject *parent)
: QObject(parent),
m_clientWorker(clientWorker),
m_client(client),
m_model(model)
m_client(client)
{
connect(client, &QXmppClient::messageReceived, this, &MessageHandler::handleMessage);
connect(this, &MessageHandler::sendMessageRequested, this, &MessageHandler::sendMessage);
connect(model, &MessageModel::sendCorrectedMessageRequested, this, &MessageHandler::sendCorrectedMessage);
connect(MessageModel::instance(), &MessageModel::sendCorrectedMessageRequested,
this, &MessageHandler::sendCorrectedMessage);
client->addExtension(&m_receiptManager);
connect(&m_receiptManager, &QXmppMessageReceiptManager::messageDelivered,
this, [=] (const QString&, const QString &id) {
emit model->setMessageDeliveryStateRequested(id, Enums::DeliveryState::Delivered);
emit MessageModel::instance()->setMessageDeliveryStateRequested(id, Enums::DeliveryState::Delivered);
});
m_carbonManager = new QXmppCarbonManager();
@ -80,7 +80,7 @@ MessageHandler::MessageHandler(ClientWorker *clientWorker, QXmppClient *client,
connect(discoveryManager, &QXmppDiscoveryManager::infoReceived,
this, &MessageHandler::handleDiscoInfo);
connect(model, &MessageModel::pendingMessagesFetched,
connect(MessageModel::instance(), &MessageModel::pendingMessagesFetched,
this, &MessageHandler::handlePendingMessages);
}
@ -92,7 +92,8 @@ MessageHandler::~MessageHandler()
void MessageHandler::handleMessage(const QXmppMessage &msg)
{
if (msg.type() == QXmppMessage::Error) {
emit m_model->setMessageDeliveryStateRequested(msg.id(), Enums::DeliveryState::Error, msg.error().text());
emit MessageModel::instance()->setMessageDeliveryStateRequested(
msg.id(), Enums::DeliveryState::Error, msg.error().text());
return;
}
@ -129,11 +130,11 @@ void MessageHandler::handleMessage(const QXmppMessage &msg)
// save the message to the database
// in case of message correction, replace old message
if (msg.replaceId().isEmpty()) {
emit m_model->addMessageRequested(message);
emit MessageModel::instance()->addMessageRequested(message);
} else {
message.setIsEdited(true);
message.setId(QString());
emit m_model->updateMessageRequested(msg.replaceId(), [=] (Message &m) {
emit MessageModel::instance()->updateMessageRequested(msg.replaceId(), [=](Message &m) {
// replace completely
m = message;
});
@ -155,7 +156,7 @@ void MessageHandler::handleMessage(const QXmppMessage &msg)
// * The corresponding chat is not opened while the application window is active.
if (!message.sentByMe() &&
!Kaidan::instance()->notificationsMuted(contactJid) &&
(m_model->currentChatJid() != message.from() ||
(MessageModel::instance()->currentChatJid() != message.from() ||
!m_clientWorker->isApplicationWindowActive())) {
emit m_clientWorker->showMessageNotificationRequested(contactJid, contactName, msg.body());
}
@ -186,7 +187,7 @@ void MessageHandler::sendMessage(const QString& toJid,
break;
}
emit m_model->addMessageRequested(msg);
emit MessageModel::instance()->addMessageRequested(msg);
sendPendingMessage(msg);
}
@ -202,7 +203,7 @@ void MessageHandler::sendCorrectedMessage(const Message &msg)
deliveryState = Enums::DeliveryState::Error;
}
emit m_model->updateMessageRequested(msg.id(), [=] (Message &localMessage) {
emit MessageModel::instance()->updateMessageRequested(msg.id(), [=](Message &localMessage) {
localMessage.setDeliveryState(deliveryState);
localMessage.setErrorText(errorText);
});
@ -232,8 +233,10 @@ void MessageHandler::sendPendingMessage(const Message &message)
success = m_client->sendPacket(message);
}
if (success)
emit m_model->setMessageDeliveryStateRequested(message.id(), Enums::DeliveryState::Sent);
if (success) {
emit MessageModel::instance()->setMessageDeliveryStateRequested(
message.id(), Enums::DeliveryState::Sent);
}
// TODO this "true" from sendPacket doesn't yet mean the message was successfully sent
else {
@ -244,7 +247,8 @@ void MessageHandler::sendPendingMessage(const Message &message)
// translation work in the UI, the tr() call of the passive
// notification must contain exactly the same string.
emit Kaidan::instance()->passiveNotificationRequested(tr("Message could not be sent."));
emit m_model->setMessageDeliveryStateRequested(message.id(), Enums::DeliveryState::Error, "Message could not be sent.");
emit MessageModel::instance()->setMessageDeliveryStateRequested(
message.id(), Enums::DeliveryState::Error, "Message could not be sent.");
}
}
}

View File

@ -39,7 +39,6 @@
class ClientWorker;
class Kaidan;
class MessageModel;
class QXmppMessage;
class QXmppDiscoveryIq;
class QXmppCarbonManager;
@ -52,7 +51,7 @@ class MessageHandler : public QObject
Q_OBJECT
public:
MessageHandler(ClientWorker *clientWorker, QXmppClient *client, MessageModel *model, QObject *parent = nullptr);
MessageHandler(ClientWorker *clientWorker, QXmppClient *client, QObject *parent = nullptr);
~MessageHandler();
public slots:
@ -97,6 +96,5 @@ private:
ClientWorker *m_clientWorker;
QXmppClient *m_client;
QXmppMessageReceiptManager m_receiptManager;
MessageModel *m_model;
QXmppCarbonManager *m_carbonManager;
};

View File

@ -37,13 +37,11 @@
#include <QXmppRosterManager.h>
RosterManager::RosterManager(QXmppClient *client,
RosterModel *model,
AvatarFileStorage *avatarStorage,
VCardManager *vCardManager,
QObject *parent)
: QObject(parent),
m_client(client),
m_model(model),
m_avatarStorage(avatarStorage),
m_vCardManager(vCardManager),
m_manager(client->findExtension<QXmppRosterManager>())
@ -52,23 +50,22 @@ RosterManager::RosterManager(QXmppClient *client,
this, &RosterManager::populateRoster);
connect(m_manager, &QXmppRosterManager::itemAdded,
this, [this, vCardManager, model] (const QString &jid) {
emit model->addItemRequested(RosterItem(m_manager->getRosterEntry(jid)));
this, [this, vCardManager] (const QString &jid) {
emit RosterModel::instance()->addItemRequested(RosterItem(m_manager->getRosterEntry(jid)));
vCardManager->requestVCard(jid);
});
connect(m_manager, &QXmppRosterManager::itemChanged,
this, [this, model] (const QString &jid) {
emit model->updateItemRequested(jid, [=] (RosterItem &item) {
this, [this] (const QString &jid) {
emit RosterModel::instance()->updateItemRequested(jid, [=] (RosterItem &item) {
item.setName(m_manager->getRosterEntry(jid).name());
});
});
connect(m_manager, &QXmppRosterManager::itemRemoved, model, &RosterModel::removeItemRequested);
connect(m_manager, &QXmppRosterManager::itemRemoved, RosterModel::instance(), &RosterModel::removeItemRequested);
connect(m_manager, &QXmppRosterManager::subscriptionReceived,
this, [this] (const QString &jid) {
this, [] (const QString &jid) {
// emit signal to ask user
emit RosterModel::instance()->subscriptionRequestReceived(jid, {});
});
@ -107,7 +104,7 @@ void RosterManager::populateRoster()
}
// replace current contacts with new ones from server
emit m_model->replaceItemsRequested(items);
emit RosterModel::instance()->replaceItemsRequested(items);
}
void RosterManager::addContact(const QString &jid, const QString &name, const QString &msg)

View File

@ -37,7 +37,6 @@ class QXmppClient;
class QXmppRosterManager;
// Kaidan
class AvatarFileStorage;
class RosterModel;
class VCardManager;
class RosterManager : public QObject
@ -45,9 +44,7 @@ class RosterManager : public QObject
Q_OBJECT
public:
RosterManager(QXmppClient *client, RosterModel *rosterModel,
AvatarFileStorage *avatarStorage, VCardManager *vCardManager,
QObject *parent = nullptr);
RosterManager(QXmppClient *client, AvatarFileStorage *avatarStorage, VCardManager *vCardManager, QObject *parent = nullptr);
signals:
/**
@ -86,7 +83,6 @@ private slots:
private:
QXmppClient *m_client;
RosterModel *m_model;
AvatarFileStorage *m_avatarStorage;
VCardManager *m_vCardManager;
QXmppRosterManager *m_manager;