- if(uiSettings.value("AnimateTrayIcon", QVariant(true)).toBool()) {
- QApplication::alert(this);
- setTrayIconActivity(true);
+ Message::Flags flags = (Message::Flags)idx.data(ChatLineModel::FlagsRole).toInt();
+ if(flags.testFlag(Message::Backlog)) continue;
+ flags |= Message::Backlog; // we only want to trigger a highlight once!
+ Client::messageModel()->setData(idx, (int)flags, ChatLineModel::FlagsRole);
+
+ BufferId bufId = idx.data(ChatLineModel::BufferIdRole).value<BufferId>();
+ BufferInfo::Type bufType = Client::networkModel()->bufferType(bufId);
+
+ if(flags & Message::Highlight || bufType == BufferInfo::QueryBuffer) {
+ QString title = Client::networkModel()->networkName(bufId) + " - " + Client::networkModel()->bufferName(bufId);
+
+ // FIXME Don't instantiate this for every highlight...
+ UiSettings uiSettings;
+
+ bool displayBubble = uiSettings.value("NotificationBubble", QVariant(true)).toBool();
+ bool displayDesktop = uiSettings.value("NotificationDesktop", QVariant(true)).toBool();
+ if(displayBubble || displayDesktop) {
+ if(uiSettings.value("DisplayPopupMessages", QVariant(true)).toBool()) {
+ QString text = idx.data(ChatLineModel::DisplayRole).toString();
+ if(displayBubble) displayTrayIconMessage(title, text);
+# ifdef HAVE_DBUS
+ if(displayDesktop) sendDesktopNotification(title, text);
+# endif
+ }
+ if(uiSettings.value("AnimateTrayIcon", QVariant(true)).toBool()) {
+ QApplication::alert(this);
+ setTrayIconActivity(true);
+ }
+ }