Skip to content

Commit

Permalink
Merge branch 'notification_fixes' [#192]
Browse files Browse the repository at this point in the history
  • Loading branch information
Thaodan committed Jul 17, 2022
2 parents 4d5a9a9 + b7b53d5 commit 456edcc
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 26 deletions.
13 changes: 8 additions & 5 deletions qml/main.qml
Original file line number Diff line number Diff line change
Expand Up @@ -102,10 +102,10 @@ ApplicationWindow {
if (feedbackBgConfig.value)
feedback.give()
notification.buffer = buffer
notification.summary = qsTr("IRC: highlight on %1").arg(buffer.title)
notification.previewSummary = qsTr("%1 on %2:").arg(sender).arg(buffer.title)
notification.summary = buffer.title
notification.previewBody = message
notification.body = message
notification.body = ("%1: %2").arg(sender).arg(message)
notification.timestamp = timestamp
notification.publish()
}
}
Expand All @@ -116,11 +116,12 @@ ApplicationWindow {
if (feedbackBgConfig.value)
feedback.give()
notification.buffer = buffer
notification.summary = qsTr("IRC: message from %1").arg(buffer.title)
notification.previewSummary = qsTr("%1 in private:").arg(buffer.title)
notification.summary = buffer.title
notification.previewSummary = buffer.title
notification.previewBody = message
notification.body = message
notification.publish()
notification.timestamp = timestamp
}
}
onActiveHighlightsChanged: {
Expand Down Expand Up @@ -257,8 +258,10 @@ ApplicationWindow {

Notification {
id: notification
appName: AboutData.displayName
property IrcBuffer buffer
category: notifyConfig.value ? "x-nemo.messaging.im" : ""
appIcon: "image://theme/" + AboutData.applicationName
itemCount: MessageStorage.activeHighlights
remoteActions: [
{
Expand Down
5 changes: 3 additions & 2 deletions src/app/messagemodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -270,9 +270,10 @@ void MessageModel::receive(IrcMessage* message)
if (data.hilite || priv) {
setActiveHighlights(m_highlights + 1);
if (priv)
emit messageMissed(data.plaintext);
emit messageMissed(data.plaintext, message->timeStamp());
else
emit messageHighlighted(data.sender, data.plaintext);
emit messageHighlighted(data.sender, data.plaintext,
message->timeStamp());
}
if (!data.event) // TODO: create a setting for this?
setBadge(m_badge + 1);
Expand Down
6 changes: 4 additions & 2 deletions src/app/messagemodel.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
#include <QBitArray>
#include <QVector>
#include <QUrl>
#include <QDateTime>

class MessageFormatter;
IRC_FORWARD_DECLARE_CLASS(IrcBuffer)
Expand Down Expand Up @@ -91,8 +92,9 @@ public slots:
void visibleChanged();
void separatorChanged();
void activeHighlightsChanged();
void messageMissed(const QString& message);
void messageHighlighted(const QString& sender, const QString& message);
void messageMissed(const QString& message, QDateTime timestamp);
void messageHighlighted(const QString& sender, const QString& message,
QDateTime timestamp);

private slots:
void displaySecureError();
Expand Down
37 changes: 24 additions & 13 deletions src/app/messagestorage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,27 +35,37 @@
#include <QTimerEvent>
#include <QDebug>
#include <QDBusConnection>
#include <QCoreApplication>

IRC_USE_NAMESPACE

class MessageService : public QObject
{
Q_OBJECT
Q_CLASSINFO("D-Bus Interface", "com.communi.irc")
Q_CLASSINFO("D-Bus Interface", "chat.communi")

public:
MessageService(QObject* parent = 0) : QObject(parent)
MessageService(QObject* parent = nullptr) : QObject(parent)
{
if (!QDBusConnection::sessionBus().registerService("com.communi.irc"))
qWarning() << "MessageService: failed to register com.communi.irc D-Bus service";
if (!QDBusConnection::sessionBus().registerService(
QCoreApplication::organizationName() + "."
+ QCoreApplication::applicationName()))
qWarning() << "MessageService: failed to register "
<< (QCoreApplication::organizationName() + "."
+ QCoreApplication::applicationName())
<< " D-Bus object";
if (!QDBusConnection::sessionBus().registerObject("/", this, QDBusConnection::ExportAllSignals))
qWarning() << "MessageService: failed to register com.communi.irc D-Bus object";
qWarning() << "MessageService: failed to register "
<< (QCoreApplication::organizationName() + "."
+ QCoreApplication::applicationName())
<< " D-Bus object";
}

signals:
void activeHighlightsChanged(int highlights);
void messageMissed(const QString& sender, const QString& message);
void messageHighlighted(const QString& buffer, const QString& sender, const QString& message);
void messageMissed(const QString& sender, const QString& message, QDateTime timestamp);
void messageHighlighted(const QString& buffer, const QString& sender,
const QString& message, QDateTime timestamp);

private:
friend class MessageStorage;
Expand Down Expand Up @@ -198,26 +208,27 @@ void MessageStorage::invalidateActiveHighlights()
m_dirty = startTimer(100);
}

void MessageStorage::onMessageMissed(const QString& message)
void MessageStorage::onMessageMissed(const QString& message, QDateTime timestamp)
{
MessageModel* model = qobject_cast<MessageModel*>(sender());
if (model) {
IrcBuffer* buffer = model->buffer();
if (buffer) {
emit missed(buffer, message);
emit m_service->messageMissed(buffer->title(), message);
emit missed(buffer, message, timestamp);
emit m_service->messageMissed(buffer->title(), message, timestamp);
}
}
}

void MessageStorage::onMessageHighlighted(const QString& sender, const QString& message)
void MessageStorage::onMessageHighlighted(const QString& sender, const QString& message,
QDateTime timestamp)
{
MessageModel* model = qobject_cast<MessageModel*>(QObject::sender());
if (model) {
IrcBuffer* buffer = model->buffer();
if (buffer) {
emit highlighted(buffer, sender, message);
emit m_service->messageHighlighted(buffer->title(), sender, message);
emit highlighted(buffer, sender, message, timestamp);
emit m_service->messageHighlighted(buffer->title(), sender, message, timestamp);
}
}
}
Expand Down
11 changes: 7 additions & 4 deletions src/app/messagestorage.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
#include <QColor>
#include <QObject>
#include <QPointer>
#include <QDateTime>
#include <IrcGlobal>

class MessageModel;
Expand Down Expand Up @@ -76,8 +77,9 @@ public slots:
void added(MessageModel* model);
void removed(MessageModel* model);

void missed(IrcBuffer* buffer, const QString& message);
void highlighted(IrcBuffer* buffer, const QString& sender, const QString& message);
void missed(IrcBuffer* buffer, const QString& message, QDateTime timestamp);
void highlighted(IrcBuffer* buffer, const QString& sender, const QString& message,
QDateTime timestamp);

void activeHighlightsChanged(int highlights);
void firstActiveHighlightChanged();
Expand All @@ -89,8 +91,9 @@ public slots:
private slots:
void updateActiveHighlights();
void invalidateActiveHighlights();
void onMessageMissed(const QString& message);
void onMessageHighlighted(const QString& sender, const QString& message);
void onMessageMissed(const QString& message, QDateTime timestamp);
void onMessageHighlighted(const QString& sender, const QString& message,
QDateTime timestamp);
void onCurrentBufferChanged(IrcBuffer* buffer);

private:
Expand Down

0 comments on commit 456edcc

Please sign in to comment.