From a619d0460d6703dab6c2f92049a3ad6d9c71230a Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 14 Oct 2014 11:08:24 -0700 Subject: [PATCH] Show chat alerts in icon tray only if not already seen --- interface/src/ui/ChatWindow.cpp | 34 ++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/interface/src/ui/ChatWindow.cpp b/interface/src/ui/ChatWindow.cpp index 5a16d47d40..7869926ebe 100644 --- a/interface/src/ui/ChatWindow.cpp +++ b/interface/src/ui/ChatWindow.cpp @@ -371,18 +371,30 @@ void ChatWindow::messageReceived(const QXmppMessage& message) { } QRegularExpression usernameMention(mentionRegex.arg(AccountManager::getInstance().getAccountInfo().getUsername())); - if (isHidden() && message.body().contains(usernameMention)) { - if (_effectPlayer.state() != QMediaPlayer::PlayingState) { - // get random sound - QFileInfo inf = QFileInfo(Application::resourcesPath() + - mentionSoundsPath + - _mentionSounds.at(rand() % _mentionSounds.size())); - _effectPlayer.setMedia(QUrl::fromLocalFile(inf.absoluteFilePath())); - _effectPlayer.play(); - } + if (message.body().contains(usernameMention)) { - _trayIcon.show(); - _trayIcon.showMessage(windowTitle(), message.body()); + // Don't show messages already seen in icon tray at start-up. + QSettings* settings = Application::getInstance()->lockSettings(); + bool showMessage = settings->value("usernameMentionTimestamp").toDateTime() < _lastMessageStamp; + if (showMessage) { + settings->setValue("usernameMentionTimestamp", _lastMessageStamp); + } + Application::getInstance()->unlockSettings(); + + if (isHidden() && showMessage) { + + if (_effectPlayer.state() != QMediaPlayer::PlayingState) { + // get random sound + QFileInfo inf = QFileInfo(Application::resourcesPath() + + mentionSoundsPath + + _mentionSounds.at(rand() % _mentionSounds.size())); + _effectPlayer.setMedia(QUrl::fromLocalFile(inf.absoluteFilePath())); + _effectPlayer.play(); + } + + _trayIcon.show(); + _trayIcon.showMessage(windowTitle(), message.body()); + } } } #endif // HAVE_QXMPP