[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    playground/base/plasma/libknotificationicon
From:       Marco Martin <notmart () gmail ! com>
Date:       2009-03-06 22:02:25
Message-ID: 1236376945.196910.4366.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 936071 by mart:

at the moment is needed a duplicate of the systraydaemon file
unfortunately
anyways, it correctly adds icons into the systemtray now


 M  +4 -1      CMakeLists.txt  
 M  +40 -7     kdbussystemtrayicon.cpp  
 M  +3 -0      kdbussystemtrayicon.h  
 A             org.kde.SystemTrayDaemon.xml  


--- trunk/playground/base/plasma/libknotificationicon/CMakeLists.txt #936070:936071
@@ -22,7 +22,10 @@
 QT4_ADD_DBUS_ADAPTOR(notificationicon_SRCS     org.kde.SystemTray.xml
                      kdbussystemtrayicon.h KDbusSystemTrayIcon)
 
-# Now make sure all files get to the right place
+set(systemtraydaemon_xml org.kde.SystemTrayDaemon.xml)
+QT4_ADD_DBUS_INTERFACE(notificationicon_SRCS ${systemtraydaemon_xml} systemtraydaemon_interface)
+
+
 kde4_add_library(notificationicon SHARED ${notificationicon_SRCS})
 target_link_libraries(notificationicon
                       ${KDE4_KDEUI_LIBS})
--- trunk/playground/base/plasma/libknotificationicon/kdbussystemtrayicon.cpp #936070:936071
@@ -26,6 +26,8 @@
 
 #include <kdebug.h>
 
+#include "systemtraydaemon_interface.h"
+
 #include "systemtrayadaptor.h"
 
 
@@ -33,12 +35,42 @@
 {
 public:
     KDbusSystemTrayIconPrivate()
-         : category(KDbusSystemTrayIcon::ApplicationStatus),
+         : dbus(QDBusConnection::sessionBus()),
+           category(KDbusSystemTrayIcon::ApplicationStatus),
            status(KDbusSystemTrayIcon::Passive),
            menu(0)
     {}
 
-    QDBusConnectionInterface *dbusInterface;
+    void registerToDaemon()
+    {
+        kWarning()<<"Registering a client interface to the syste tray daemon";
+        QString interface("org.kde.SystemTrayDaemon");
+        systemTrayDaemon = new org::kde::SystemtrayDaemon(interface, "/SystemTrayWatcher",
+                                                    QDBusConnection::sessionBus());
+        if (systemTrayDaemon->isValid()) {
+            systemTrayDaemon->registerService(dbus.baseService());
+        } else {
+            kDebug()<<"System tray daemon not reachable";
+        }
+    }
+
+    void serviceChange(const QString& name,
+                       const QString& oldOwner,
+                       const QString& newOwner)
+    {
+        kDebug()<<"Service "<<name<<"status change, old owner:"<<oldOwner<<"new:"<<newOwner;
+
+        //unregistered
+        if (newOwner.isEmpty()) {
+            delete systemTrayDaemon;
+            systemTrayDaemon = 0;
+        //registered
+        } else if (oldOwner.isEmpty()) {
+            registerToDaemon();
+        }
+    }
+
+    QDBusConnection dbus;
     KDbusSystemTrayIcon::Category category;
     QString title;
     KDbusSystemTrayIcon::Status status;
@@ -49,6 +81,7 @@
     QString tooltipTitle;
     QString tooltipSubTitle;
     QMenu *menu;
+    org::kde::SystemtrayDaemon *systemTrayDaemon;
 };
 
 KDbusSystemTrayIcon::KDbusSystemTrayIcon(QObject *parent)
@@ -56,10 +89,10 @@
         d(new KDbusSystemTrayIconPrivate)
 {
     new SystemTrayAdaptor(this);
-    QDBusConnection dbus = QDBusConnection::sessionBus();
-    dbus.registerObject("/SystemTray", this);
-    d->dbusInterface = dbus.interface();
 
+    d->dbus.registerObject("/SystemTray", this);
+
+    d->registerToDaemon();
 }
 
 KDbusSystemTrayIcon::~KDbusSystemTrayIcon()
@@ -191,12 +224,12 @@
 
 void KDbusSystemTrayIcon::activate()
 {
-    emit activate();
+    emit activateRequested();
 }
 
 void KDbusSystemTrayIcon::wheel(int delta)
 {
-    emit wheel(delta);
+    emit wheelRequested(delta);
 }
 
 
--- trunk/playground/base/plasma/libknotificationicon/kdbussystemtrayicon.h #936070:936071
@@ -94,6 +94,9 @@
     void newTooltip();
     void newStatus(Status status);
 
+    void activateRequested();
+    void wheelRequested(int delta);
+
 private:
     KDbusSystemTrayIconPrivate *const d;
 };
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic