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

List:       kde-commits
Subject:    KDE/kdelibs/solid/solid
From:       Dario Freddi <drf () kde ! org>
Date:       2011-01-06 17:47:39
Message-ID: 20110106174739.4B590AC8B0 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1212364 by dafre:

Add a resumeFromSuspend signal to Solid

 M  +34 -1     powermanagement.cpp  
 M  +8 -0      powermanagement.h  
 M  +4 -0      powermanagement_p.h  


--- trunk/KDE/kdelibs/solid/solid/powermanagement.cpp #1212363:1212364
@@ -36,7 +36,10 @@
                        QDBusConnection::sessionBus()),
       inhibitIface("org.freedesktop.PowerManagement.Inhibit",
                    "/org/freedesktop/PowerManagement/Inhibit",
-                   QDBusConnection::sessionBus())
+                   QDBusConnection::sessionBus()),
+      serviceWatcher("org.kde.Solid.PowerManagement",
+                     QDBusConnection::sessionBus(),
+                     QDBusServiceWatcher::WatchForRegistration)
 {
     powerSaveStatus = managerIface.GetPowerSaveStatus();
 
@@ -51,7 +54,14 @@
             this, SLOT(slotCanHibernateChanged(bool)));
     connect(&managerIface, SIGNAL(PowerSaveStatusChanged(bool)),
             this, SLOT(slotPowerSaveStatusChanged(bool)));
+    connect(&serviceWatcher, SIGNAL(serviceRegistered(QString)),
+            this, SLOT(slotServiceRegistered(QString)));
+
+    // If the service is registered, trigger the connection immediately
+    if (QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.Solid.PowerManagement")) \
{ +        slotServiceRegistered("org.kde.Solid.PowerManagement");
 }
+}
 
 Solid::PowerManagementPrivate::~PowerManagementPrivate()
 {
@@ -177,6 +187,29 @@
     emit appShouldConserveResourcesChanged(powerSaveStatus);
 }
 
+void Solid::PowerManagementPrivate::slotServiceRegistered(const QString \
&serviceName) +{
+    Q_UNUSED(serviceName);
+
+    // Is the resume signal available?
+    QDBusMessage call = \
QDBusMessage::createMethodCall("org.kde.Solid.PowerManagement", +                     \
"/org/kde/Solid/PowerManagement", +                                                   \
"org.kde.Solid.PowerManagement", +                                                    \
"backendCapabilities"); +    QDBusPendingReply< uint > reply = \
QDBusConnection::sessionBus().asyncCall(call); +    reply.waitForFinished();
+
+    if (reply.isValid() && reply.value() > 0) {
+        // Connect the signal
+        QDBusConnection::sessionBus().connect("org.kde.Solid.PowerManagement",
+                                              "/org/kde/Solid/PowerManagement",
+                                              "org.kde.Solid.PowerManagement",
+                                              "resumingFromSuspend",
+                                              this,
+                                              SIGNAL(resumingFromSuspend()));
+    }
+}
+
 #include "powermanagement_p.moc"
 #include "powermanagement.moc"
 
--- trunk/KDE/kdelibs/solid/solid/powermanagement.h #1212363:1212364
@@ -134,6 +134,14 @@
              */
             void appShouldConserveResourcesChanged(bool newState);
 
+            /**
+             * This signal is emitted whenever the system is resuming from suspend. \
Applications should connect +             * to this signal to perform actions due \
after a wake up (such as updating clocks, etc.). +             *
+             * @since 4.7
+             */
+            void resumingFromSuspend();
+
         protected:
             Notifier();
         };
--- trunk/KDE/kdelibs/solid/solid/powermanagement_p.h #1212363:1212364
@@ -27,6 +27,8 @@
 #include "powermanagementinterface.h"
 #include "policyagentinterface.h"
 
+#include <QtDBus/QDBusServiceWatcher>
+
 namespace Solid
 {
     class PowerManagementPrivate : public PowerManagement::Notifier
@@ -47,11 +49,13 @@
         void slotCanSuspendChanged(bool newState);
         void slotCanHibernateChanged(bool newState);
         void slotPowerSaveStatusChanged(bool newState);
+        void slotServiceRegistered(const QString &serviceName);
 
     public:
         OrgFreedesktopPowerManagementInterface managerIface;
         OrgKdeSolidPowerManagementPolicyAgentInterface policyAgentIface;
         OrgFreedesktopPowerManagementInhibitInterface inhibitIface;
+        QDBusServiceWatcher serviceWatcher;
 
         bool powerSaveStatus;
         QSet<Solid::PowerManagement::SleepState> supportedSleepStates;


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

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