Use instance getters for Message/RosterModel in managers
parent
b3467992bb
commit
28138987f9
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue