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

List:       kde-commits
Subject:    KDE/kdebase/workspace/plasma/desktop/applets/kickoff
From:       Dario Freddi <drf () kde ! org>
Date:       2010-11-28 17:09:28
Message-ID: 20101128170928.73639AC8A5 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1201782 by dafre:

Port KickOff away from S::C::PowerManager and to new KDE Power Management System

 M  +4 -4      CMakeLists.txt  
 M  +36 -38    core/itemhandlers.cpp  
 M  +5 -5      core/leavemodel.cpp  
 M  +5 -5      simpleapplet/simpleapplet.cpp  


--- trunk/KDE/kdebase/workspace/plasma/desktop/applets/kickoff/CMakeLists.txt \
#1201781:1201782 @@ -33,7 +33,7 @@
 set(ksmserver_xml ${KDEBASE_WORKSPACE_SOURCE_DIR}/ksmserver/org.kde.KSMServerInterface.xml)
  QT4_ADD_DBUS_INTERFACE(libkickoff_SRCS ${ksmserver_xml} ksmserver_interface)
 
-set(Kickoff_LIBS ${KDE4_KIO_LIBS} ${KDE4_KFILE_LIBS} ${KDE4_SOLID_LIBS} \
solidcontrol) +set(Kickoff_LIBS ${KDE4_KIO_LIBS} ${KDE4_KFILE_LIBS} \
${KDE4_SOLID_LIBS})  if(NOT WIN32)
     set(Kickoff_LIBS ${Kickoff_LIBS} kworkspace)
 endif(NOT WIN32)
@@ -44,7 +44,7 @@
 include_directories( ${STRIGI_INCLUDE_DIR} )
 
 kde4_add_library(kickoff SHARED ${libkickoff_SRCS})
-target_link_libraries(kickoff ${KDE4_PLASMA_LIBS} solidcontrol ${Kickoff_LIBS})
+target_link_libraries(kickoff ${KDE4_PLASMA_LIBS} ${Kickoff_LIBS})
 install(TARGETS kickoff ${INSTALL_TARGETS_DEFAULT_ARGS})
 
 #######################################################################################
 @@ -64,7 +64,7 @@
 )
 kde4_add_ui_files(Applet_SRCS applet/kickoffConfig.ui )
 kde4_add_plugin(plasma_applet_launcher ${Applet_SRCS})
-target_link_libraries(plasma_applet_launcher ${KDE4_PLASMA_LIBS} solidcontrol \
${Kickoff_LIBS} kickoff) +target_link_libraries(plasma_applet_launcher \
${KDE4_PLASMA_LIBS} ${Kickoff_LIBS} kickoff)  install(TARGETS plasma_applet_launcher \
DESTINATION ${PLUGIN_INSTALL_DIR})  install(FILES \
applet/plasma-applet-launcher.desktop DESTINATION ${SERVICES_INSTALL_DIR})  
@@ -77,7 +77,7 @@
     simpleapplet/simpleapplet.cpp
 )
 kde4_add_plugin(plasma_applet_simplelauncher ${SimpleApplet_SRCS})
-target_link_libraries(plasma_applet_simplelauncher ${KDE4_KCMUTILS_LIBS} \
${KDE4_PLASMA_LIBS} solidcontrol ${Kickoff_LIBS} kickoff) \
+target_link_libraries(plasma_applet_simplelauncher ${KDE4_KCMUTILS_LIBS} \
${KDE4_PLASMA_LIBS} ${Kickoff_LIBS} kickoff)  install(TARGETS \
plasma_applet_simplelauncher DESTINATION ${PLUGIN_INSTALL_DIR})  install(FILES \
simpleapplet/plasma-applet-simplelauncher.desktop DESTINATION \
${SERVICES_INSTALL_DIR})  
--- trunk/KDE/kdebase/workspace/plasma/desktop/applets/kickoff/core/itemhandlers.cpp \
#1201781:1201782 @@ -33,7 +33,6 @@
 
 // KDE Base
 #include <kworkspace/kworkspace.h>
-#include <solid/control/powermanager.h>
 
 // Local
 #include "core/recentapplications.h"
@@ -42,6 +41,8 @@
 #include "krunner_interface.h"
 #include "screensaver_interface.h"
 #include "ksmserver_interface.h"
+#include <QtDBus/QDBusConnection>
+#include <QtDBus/QDBusConnectionInterface>
 
 using namespace Kickoff;
 
@@ -68,39 +69,33 @@
     m_logoutAction = url.path().remove('/');
 
     if (m_logoutAction == "sleep") {
-        // Check if powerdevil is running, and use its methods to suspend if \
                available
-        // otherwise go through Solid directly
-        QStringList modules;
-        QDBusInterface kdedInterface("org.kde.kded", "/kded", "org.kde.kded");
-        QDBusReply<QStringList> reply = kdedInterface.call("loadedModules");
-        if (reply.isValid() && reply.value().contains("powerdevil")) {
-            kDebug() << "Using powerdevil to suspend";
-            QDBusConnection dbus(QDBusConnection::sessionBus());
-            QDBusInterface iface("org.kde.kded", "/modules/powerdevil", \
                "org.kde.PowerDevil", dbus);
-            iface.call("suspend", Solid::Control::PowerManager::ToRam);
+        // Check if KDE Power Management System is running, and use its methods to \
suspend if available +        if \
(QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.Solid.PowerManagement")) \
{ +            kDebug() << "Using KDE Power Management System to suspend";
+            QDBusMessage call = \
QDBusMessage::createMethodCall("org.kde.Solid.PowerManagement", +                     \
"/org/kde/Solid/PowerManagement", +                                                   \
"org.kde.Solid.PowerManagement", +                                                    \
"suspendToRam"); +            QDBusConnection::sessionBus().asyncCall(call);
+            return true;
         } else {
-            kDebug() << "Powerdevil not available, using solid to suspend";
-            KJob * job = \
                Solid::Control::PowerManager::suspend(Solid::Control::PowerManager::ToRam);
                
-            job->start();
+            kDebug() << "KDE Power Management System not available, suspend failed";
+            return false;
         }
-        return true;
     } else if (m_logoutAction == "hibernate") {
-        // Check if powerdevil is running, and use its methods to hibernate if \
                available
-        // otherwise go through Solid directly
-        QStringList modules;
-        QDBusInterface kdedInterface("org.kde.kded", "/kded", "org.kde.kded");
-        QDBusReply<QStringList> reply = kdedInterface.call("loadedModules");
-        if (reply.isValid() && reply.value().contains("powerdevil")) {
-            kDebug() << "Using powerdevil to hibernate";
-            QDBusConnection dbus(QDBusConnection::sessionBus());
-            QDBusInterface iface("org.kde.kded", "/modules/powerdevil", \
                "org.kde.PowerDevil", dbus);
-            iface.call("suspend", Solid::Control::PowerManager::ToDisk);
+        // Check if KDE Power Management System is running, and use its methods to \
hibernate if available +        if \
(QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.Solid.PowerManagement")) \
{ +            kDebug() << "Using KDE Power Management System to hibernate";
+            QDBusMessage call = \
QDBusMessage::createMethodCall("org.kde.Solid.PowerManagement", +                     \
"/org/kde/Solid/PowerManagement", +                                                   \
"org.kde.Solid.PowerManagement", +                                                    \
"suspendToDisk"); +            QDBusConnection::sessionBus().asyncCall(call);
+            return true;
         } else {
-            kDebug() << "Powerdevil not available, using solid to hibernate";
-            KJob * job = \
                Solid::Control::PowerManager::suspend(Solid::Control::PowerManager::ToDisk);
                
-            job->start();
+            kDebug() << "KDE Power Management System not available, hibernate \
failed"; +            return false;
         }
-        return true;
     } else if (m_logoutAction == "lock") {
         // decouple dbus call, otherwise we'll run into a dead-lock
         QTimer::singleShot(0, this, SLOT(lock()));
@@ -197,21 +192,24 @@
 
 void LeaveItemHandler::standby()
 {
-    QDBusConnection dbus(QDBusConnection::sessionBus());
-    QDBusInterface iface("org.kde.kded", "/modules/powerdevil", \
                "org.kde.PowerDevil", dbus);
-    iface.asyncCall("suspend", Solid::Control::PowerManager::Standby);
+    // FIXME: Use standby from KDE Power Management System's interface
+    suspendRAM();
 }
 
 void LeaveItemHandler::suspendRAM()
 {
-    QDBusConnection dbus(QDBusConnection::sessionBus());
-    QDBusInterface iface("org.kde.kded", "/modules/powerdevil", \
                "org.kde.PowerDevil", dbus);
-    iface.asyncCall("suspend", Solid::Control::PowerManager::ToRam);
+    QDBusMessage call = \
QDBusMessage::createMethodCall("org.kde.Solid.PowerManagement", +                     \
"/org/kde/Solid/PowerManagement", +                                                   \
"org.kde.Solid.PowerManagement", +                                                    \
"suspendToRam"); +    QDBusConnection::sessionBus().asyncCall(call);
 }
 
 void LeaveItemHandler::suspendDisk()
 {
-    QDBusConnection dbus(QDBusConnection::sessionBus());
-    QDBusInterface iface("org.kde.kded", "/modules/powerdevil", \
                "org.kde.PowerDevil", dbus);
-    iface.asyncCall("suspend", Solid::Control::PowerManager::ToDisk);
+    QDBusMessage call = \
QDBusMessage::createMethodCall("org.kde.Solid.PowerManagement", +                     \
"/org/kde/Solid/PowerManagement", +                                                   \
"org.kde.Solid.PowerManagement", +                                                    \
"suspendToDisk"); +    QDBusConnection::sessionBus().asyncCall(call);
 }
--- trunk/KDE/kdebase/workspace/plasma/desktop/applets/kickoff/core/leavemodel.cpp \
#1201781:1201782 @@ -27,7 +27,7 @@
 #include <KConfigGroup>
 #include <KDebug>
 #include <KIcon>
-#include <solid/control/powermanager.h>
+#include <Solid/PowerManagement>
 #include <kworkspace/kworkspace.h>
 
 // Local
@@ -141,20 +141,20 @@
 
 //FIXME: the proper fix is to implement the KWorkSpace methods for Windows
 #ifndef Q_WS_WIN
-    Solid::Control::PowerManager::SuspendMethods spdMethods = \
                Solid::Control::PowerManager::supportedSuspendMethods();
-    if (spdMethods & Solid::Control::PowerManager::Standby) {
+    QSet< Solid::PowerManagement::SleepState > spdMethods = \
Solid::PowerManagement::supportedSleepStates(); +    if \
                (spdMethods.contains(Solid::PowerManagement::StandbyState)) {
         QStandardItem *standbyOption = createStandardItem("leave:/standby");
         systemOptions->appendRow(standbyOption);
         addSystemSession = true;
     }
 
-    if (spdMethods & Solid::Control::PowerManager::ToRam) {
+    if (spdMethods.contains(Solid::PowerManagement::SuspendState)) {
         QStandardItem *suspendramOption = createStandardItem("leave:/suspendram");
         systemOptions->appendRow(suspendramOption);
         addSystemSession = true;
     }
 
-    if (spdMethods & Solid::Control::PowerManager::ToDisk) {
+    if (spdMethods.contains(Solid::PowerManagement::HibernateState)) {
         QStandardItem *suspenddiskOption = createStandardItem("leave:/suspenddisk");
         systemOptions->appendRow(suspenddiskOption);
         addSystemSession = true;
--- trunk/KDE/kdebase/workspace/plasma/desktop/applets/kickoff/simpleapplet/simpleapplet.cpp \
#1201781:1201782 @@ -52,10 +52,10 @@
 #include <KRun>
 #include <KServiceTypeTrader>
 #include <KToolInvocation>
+#include <Solid/PowerManagement>
 
 // KDE Base
 #include <kworkspace/kworkspace.h>
-#include <solid/control/powermanager.h>
 
 // Plasma
 #include <Plasma/IconWidget>
@@ -731,15 +731,15 @@
                 d->addModel(leavemodel, Leave, Kickoff::MenuView::MergeFirstLevel, \
Kickoff::MenuView::Name);  } else {
 #ifndef Q_WS_WIN
-                Solid::Control::PowerManager::SuspendMethods spdMethods = \
Solid::Control::PowerManager::supportedSuspendMethods(); +                QSet< \
Solid::PowerManagement::SleepState > spdMethods = \
Solid::PowerManagement::supportedSleepStates();  if (vtname == "Standby") {
-                    if (spdMethods & Solid::Control::PowerManager::Standby)
+                    if (spdMethods.contains(Solid::PowerManagement::StandbyState))
                         menuview->addAction(KIcon(d->viewIcon(Standby)), \
d->viewText(Standby))->setData(KUrl("leave:/standby"));  } else if(vtname == \
                "SuspendDisk") {
-                    if (spdMethods & Solid::Control::PowerManager::ToDisk)
+                    if (spdMethods.contains(Solid::PowerManagement::HibernateState))
                         menuview->addAction(KIcon(d->viewIcon(SuspendDisk)), \
d->viewText(SuspendDisk))->setData(KUrl("leave:/suspenddisk"));  } else if(vtname == \
                "SuspendRAM") {
-                    if (spdMethods & Solid::Control::PowerManager::ToRam)
+                    if (spdMethods.contains(Solid::PowerManagement::SuspendState))
                         menuview->addAction(KIcon(d->viewIcon(SuspendRAM)), \
d->viewText(SuspendRAM))->setData(KUrl("leave:/suspendram"));  } else if(vtname == \
                "Restart") {
                     if (KWorkSpace::canShutDown(KWorkSpace::ShutdownConfirmDefault, \
KWorkSpace::ShutdownTypeReboot))


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

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