Revert "Change application entry in indicator menu to behave like system tray icon"
[quassel.git] / src / qtui / indicatornotificationbackend.cpp
index f4bc3ae..fabe20c 100644 (file)
@@ -21,7 +21,7 @@
 #include "indicatornotificationbackend.h"
 
 #include <qindicateserver.h>
-#include <qindicateindicatormessage.h>
+#include <qindicateindicator.h>
 
 #include "client.h"
 #include "clientsettings.h"
 #include "networkmodel.h"
 #include "qtui.h"
 
-class Indicator : public QIndicate::IndicatorMessage {
+#define STR(x) #x
+#define XSTR(x) STR(x)
+
+class Indicator : public QIndicate::Indicator {
 public:
   uint lastNotificationId;
 };
@@ -38,13 +41,13 @@ IndicatorNotificationBackend::IndicatorNotificationBackend(QObject *parent)
   : AbstractNotificationBackend(parent)
 {
   NotificationSettings notificationSettings;
-  _enabled = notificationSettings.value("Indicator/Enabled", true).toBool();
+  _enabled = notificationSettings.value("Indicator/Enabled", false).toBool();
 
   notificationSettings.notify("Indicator/Enabled", this, SLOT(enabledChanged(const QVariant &)));
 
   _server = QIndicate::Server::defaultInstance();
-  _server->setType("message.im");
-  _server->setDesktopFile(DESKTOP_FILE);
+  _server->setType("message.irc");
+  _server->setDesktopFile(XSTR(DESKTOP_FILE));
   connect(_server, SIGNAL(serverDisplay()), QtUi::mainWindow(), SLOT(forceActivated()));
 
   if (_enabled) {
@@ -68,29 +71,32 @@ void IndicatorNotificationBackend::notify(const Notification &notification) {
   if(!indicator) {
     indicator = new Indicator;
     _indicatorHash.insert(bufferId, indicator);
+    connect(indicator, SIGNAL(display(QIndicate::Indicator*)),
+      SLOT(indicatorDisplayed(QIndicate::Indicator*)));
   }
   indicator->lastNotificationId = notification.notificationId;
 
   BufferInfo::Type type = Client::networkModel()->bufferType(bufferId);
-  QString sender;
+  QString name;
   if (type == BufferInfo::QueryBuffer) {
-    sender = notification.sender;
+    name = notification.sender;
   } else {
-    sender = QString("%1 (%2)")
+    name = QString("%1 (%2)")
       .arg(Client::networkModel()->bufferName(bufferId))
       .arg(notification.sender);
   }
-  indicator->setProperty("sender", sender);
+  indicator->setNameProperty(name);
 
-  indicator->setProperty("time", QTime::currentTime());
+  indicator->setTimeProperty(QDateTime::currentDateTime());
 
   QModelIndex index = Client::networkModel()->bufferIndex(bufferId);
   QVariant icon = QtUi::style()->bufferViewItemData(index, Qt::DecorationRole);
   if (icon.canConvert<QPixmap>()) {
     QImage image = icon.value<QPixmap>().toImage();
-    indicator->setProperty("icon", image);
+    indicator->setIconProperty(image);
   }
 
+  indicator->setDrawAttentionProperty(true);
   indicator->show();
 }
 
@@ -126,6 +132,11 @@ void IndicatorNotificationBackend::enabledChanged(const QVariant &v) {
   }
 }
 
+void IndicatorNotificationBackend::indicatorDisplayed(QIndicate::Indicator *_indicator) {
+  Indicator *indicator = static_cast<Indicator *>(_indicator);
+  emit activated(indicator->lastNotificationId);
+}
+
 SettingsPage *IndicatorNotificationBackend::createConfigWidget() const {
   return new ConfigWidget();
 }