forked from blue/squawk
first ideas for notifications
This commit is contained in:
parent
4c20a314f0
commit
18859cb960
6 changed files with 55 additions and 38 deletions
|
@ -763,7 +763,7 @@ void Models::Roster::removeAccount(const QString& account)
|
|||
acc->deleteLater();
|
||||
}
|
||||
|
||||
QString Models::Roster::getContactName(const QString& account, const QString& jid)
|
||||
QString Models::Roster::getContactName(const QString& account, const QString& jid) const
|
||||
{
|
||||
ElId id(account, jid);
|
||||
std::map<ElId, Contact*>::const_iterator cItr = contacts.find(id);
|
||||
|
@ -907,7 +907,7 @@ bool Models::Roster::groupHasContact(const QString& account, const QString& grou
|
|||
}
|
||||
}
|
||||
|
||||
QString Models::Roster::getContactIconPath(const QString& account, const QString& jid, const QString& resource)
|
||||
QString Models::Roster::getContactIconPath(const QString& account, const QString& jid, const QString& resource) const
|
||||
{
|
||||
ElId id(account, jid);
|
||||
std::map<ElId, Contact*>::const_iterator cItr = contacts.find(id);
|
||||
|
|
|
@ -65,7 +65,7 @@ public:
|
|||
void addRoomParticipant(const QString& account, const QString& jid, const QString& name, const QMap<QString, QVariant>& data);
|
||||
void changeRoomParticipant(const QString& account, const QString& jid, const QString& name, const QMap<QString, QVariant>& data);
|
||||
void removeRoomParticipant(const QString& account, const QString& jid, const QString& name);
|
||||
QString getContactName(const QString& account, const QString& jid);
|
||||
QString getContactName(const QString& account, const QString& jid) const;
|
||||
|
||||
QVariant data ( const QModelIndex& index, int role ) const override;
|
||||
Qt::ItemFlags flags(const QModelIndex &index) const override;
|
||||
|
@ -77,7 +77,7 @@ public:
|
|||
|
||||
std::deque<QString> groupList(const QString& account) const;
|
||||
bool groupHasContact(const QString& account, const QString& group, const QString& contactJID) const;
|
||||
QString getContactIconPath(const QString& account, const QString& jid, const QString& resource);
|
||||
QString getContactIconPath(const QString& account, const QString& jid, const QString& resource) const;
|
||||
Account* getAccount(const QString& name);
|
||||
QModelIndex getAccountIndex(const QString& name);
|
||||
QModelIndex getGroupIndex(const QString& account, const QString& name);
|
||||
|
|
|
@ -28,10 +28,9 @@ Squawk::Squawk(QWidget *parent) :
|
|||
preferences(nullptr),
|
||||
about(nullptr),
|
||||
dialogueQueue(this),
|
||||
rosterModel(),
|
||||
rosterModel(*(Shared::Global::getInstance()->rosterModel)),
|
||||
conversations(),
|
||||
contextMenu(new QMenu()),
|
||||
dbus("org.freedesktop.Notifications", "/org/freedesktop/Notifications", "org.freedesktop.Notifications", QDBusConnection::sessionBus()),
|
||||
vCards(),
|
||||
currentConversation(nullptr),
|
||||
restoreSelection(),
|
||||
|
@ -441,33 +440,7 @@ void Squawk::changeMessage(const QString& account, const QString& jid, const QSt
|
|||
|
||||
void Squawk::notify(const QString& account, const Shared::Message& msg)
|
||||
{
|
||||
QString name = QString(rosterModel.getContactName(account, msg.getPenPalJid()));
|
||||
QString path = QString(rosterModel.getContactIconPath(account, msg.getPenPalJid(), msg.getPenPalResource()));
|
||||
QVariantList args;
|
||||
args << QString(QCoreApplication::applicationName());
|
||||
args << QVariant(QVariant::UInt); //TODO some normal id
|
||||
if (path.size() > 0) {
|
||||
args << path;
|
||||
} else {
|
||||
args << QString("mail-message"); //TODO should here better be unknown user icon?
|
||||
}
|
||||
if (msg.getType() == Shared::Message::groupChat) {
|
||||
args << msg.getFromResource() + " from " + name;
|
||||
} else {
|
||||
args << name;
|
||||
}
|
||||
|
||||
QString body(msg.getBody());
|
||||
QString oob(msg.getOutOfBandUrl());
|
||||
if (body == oob) {
|
||||
body = tr("Attached file");
|
||||
}
|
||||
|
||||
args << body;
|
||||
args << QStringList();
|
||||
args << QVariantMap();
|
||||
args << 3000;
|
||||
dbus.callWithArgumentList(QDBus::AutoDetect, "Notify", args);
|
||||
Shared::Global::notify(account, msg);
|
||||
}
|
||||
|
||||
void Squawk::onConversationMessage(const Shared::Message& msg)
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
#include <QMainWindow>
|
||||
#include <QScopedPointer>
|
||||
#include <QCloseEvent>
|
||||
#include <QtDBus/QDBusInterface>
|
||||
#include <QSettings>
|
||||
#include <QInputDialog>
|
||||
|
||||
|
@ -43,6 +42,7 @@
|
|||
#include "dialogqueue.h"
|
||||
|
||||
#include "shared/shared.h"
|
||||
#include "shared/global.h"
|
||||
|
||||
namespace Ui {
|
||||
class Squawk;
|
||||
|
@ -124,10 +124,9 @@ private:
|
|||
Settings* preferences;
|
||||
About* about;
|
||||
DialogQueue dialogueQueue;
|
||||
Models::Roster rosterModel;
|
||||
Models::Roster& rosterModel;
|
||||
Conversations conversations;
|
||||
QMenu* contextMenu;
|
||||
QDBusInterface dbus;
|
||||
std::map<QString, VCard*> vCards;
|
||||
Conversation* currentConversation;
|
||||
QModelIndex restoreSelection;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue