]> rtime.felk.cvut.cz Git - sojka/lightdm.git/blobdiff - liblightdm-qt/power.cpp
Load all users only when really needed
[sojka/lightdm.git] / liblightdm-qt / power.cpp
index 6f48a0dc15aa620d66628bee82720ebbb7af7a30..a8cb4fae834973bde1c690d5b3f30aa37d70ba9e 100644 (file)
@@ -51,6 +51,17 @@ PowerInterface::~PowerInterface()
 
 bool PowerInterface::canSuspend()
 {
+    if (d->login1Interface->isValid())
+    {
+       QDBusReply<QString> reply = d->login1Interface->call("CanSuspend");
+       if (reply.isValid())
+       {
+           return reply.value() == "yes";
+       }
+    }
+
+    qWarning() << d->login1Interface->lastError();
+
     QDBusReply<bool> reply = d->powerManagementInterface->call("SuspendAllowed");
     if (reply.isValid()) {
         return reply.value();
@@ -60,23 +71,48 @@ bool PowerInterface::canSuspend()
     }
 }
 
-void PowerInterface::suspend()
+bool PowerInterface::suspend()
 {
-    d->powerManagementInterface->call("Suspend");
+    QDBusReply<void> reply;
+    if (d->login1Interface->isValid())
+        reply = d->login1Interface->call("Suspend", false);
+    else
+        reply = d->powerManagementInterface->call("Suspend");
+
+    return reply.isValid ();
 }
 
 bool PowerInterface::canHibernate()
 {
+    if (d->login1Interface->isValid())
+    {
+        QDBusReply<QString> reply = d->login1Interface->call("CanHibernate");
+        if (reply.isValid())
+        {
+            return reply.value() == "yes";
+        }
+    }
+
+    qWarning() << d->login1Interface->lastError();
+
     QDBusReply<bool> reply = d->powerManagementInterface->call("HibernateAllowed");
-    if (reply.isValid())
+    if (reply.isValid()) {
         return reply.value();
-    else
+    }
+    else {
         return false;
+    }
 }
 
-void PowerInterface::hibernate()
+bool PowerInterface::hibernate()
 {
-    d->powerManagementInterface->call("Hibernate");
+    QDBusReply<void> reply;
+    if (d->login1Interface->isValid())
+        reply = d->login1Interface->call("Hibernate", false);
+    else
+        reply = d->powerManagementInterface->call("Hibernate");
+
+    return reply.isValid ();
 }
 
 bool PowerInterface::canShutdown()
@@ -97,12 +133,14 @@ bool PowerInterface::canShutdown()
     return false;
 }
 
-void PowerInterface::shutdown()
+bool PowerInterface::shutdown()
 {
+    QDBusReply<void> reply;
     if (d->login1Interface->isValid())
-        d->login1Interface->call("PowerOff",false);
+        reply = d->login1Interface->call("PowerOff", false);
     else
-        d->consoleKitInterface->call("Stop");
+        reply = d->consoleKitInterface->call("Stop");
+    return reply.isValid();
 }
 
 bool PowerInterface::canRestart()
@@ -114,7 +152,7 @@ bool PowerInterface::canRestart()
         }
     }
     qWarning() << d->login1Interface->lastError();
-  
+
     QDBusReply<bool> reply = d->consoleKitInterface->call("CanRestart");
     if (reply.isValid()) {
         return reply.value();
@@ -123,12 +161,14 @@ bool PowerInterface::canRestart()
     return false;
 }
 
-void PowerInterface::restart()
+bool PowerInterface::restart()
 {
+    QDBusReply<void> reply;
     if (d->login1Interface->isValid())
-        d->login1Interface->call("Reboot", false);
+        reply = d->login1Interface->call("Reboot", false);
     else
-        d->consoleKitInterface->call("Restart");
+        reply = d->consoleKitInterface->call("Restart");
+    return reply.isValid();
 }
 
 #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)