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

List:       kde-commits
Subject:    koffice/kpresenter
From:       David Faure <faure () kde ! org>
Date:       2006-10-16 19:51:13
Message-ID: 1161028273.522003.6187.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 596148 by dfaure:

Use xdg-utils (xdg-screensaver) when available, to enable/disable dpms+screensaver.
As a benefit, kpresenter can now disable the gnome-screensaver or xscreensaver too,
when not running in kde.


 M  +45 -23    KPrView.cpp  


--- trunk/koffice/kpresenter/KPrView.cpp #596147:596148
@@ -102,6 +102,7 @@
 #include <kdebug.h>
 #include <ktemporaryfile.h>
 #include <kcolorbutton.h>
+#include <kprocess.h>
 
 #include <KoMainWindow.h>
 #include <KoPartSelectDia.h>
@@ -1498,32 +1499,43 @@
     m_canvas->setToolEditMode( TEM_MOUSE );
 
     if ( !presStarted ) {
-        m_screenSaverWasEnabled = false;
-        // is screensaver enabled?
-        QDBusInterface screensaver("org.kde.kdesktop", "/", \
                "org.kde.kdesktop.KScreensaver");
-        QDBusReply<bool> reply = screensaver.call("isEnabled");
-        if (reply.isValid() )
-        {
-            if ( reply.value() )
+        const QString xdgScreenSaver = KStandardDirs::findExe("xdg-screensaver");
+        if (!xdgScreenSaver.isEmpty()) {
+            KProcess proc;
+            proc << xdgScreenSaver;
+            proc << "suspend";
+            proc << QString::number( topLevelWidget()->winId() );
+            kDebug() << k_funcinfo << proc.args() << endl;
+            proc.start( KProcess::DontCare );
+        } else {
+
+            m_screenSaverWasEnabled = false;
+            // is screensaver enabled?
+            QDBusInterface screensaver("org.kde.kdesktop", "/", \
"org.kde.kdesktop.KScreensaver"); +            QDBusReply<bool> reply = \
screensaver.call("isEnabled"); +            if (reply.isValid() )
             {
-                // disable screensaver
-                QList<QVariant> args;
-                args << false;
-                reply = screensaver.callWithArgumentList(QDBus::Block, "enable", \
                args);
-                if (!reply.isValid() || !reply.value())
-                    kWarning(33001) << "Couldn't disable screensaver (using dbus to \
                kdesktop)!" << endl;
-                else
-                    kDebug(33001) << "Screensaver successfully disabled" << endl;
+                if ( reply.value() )
+                {
+                    // disable screensaver
+                    QList<QVariant> args;
+                    args << false;
+                    reply = screensaver.callWithArgumentList(QDBus::Block, "enable", \
args); +                    if (!reply.isValid() || !reply.value())
+                        kWarning(33001) << "Couldn't disable screensaver (using dbus \
to kdesktop)!" << endl; +                    else
+                        kDebug(33001) << "Screensaver successfully disabled" << \
endl; +                }
+            } else {
+                kWarning(33001) << "Couldn't check screensaver (using dcop to \
kdesktop)!" << endl;  }
-        } else {
-            kWarning(33001) << "Couldn't check screensaver (using dcop to \
kdesktop)!" << endl; +            // is DPMS enabled?
+            m_dpmsWasEnabled = isDPMSEnabled();
+            kDebug() << "DPMS was enabled:" << m_dpmsWasEnabled << endl;
+            if ( m_dpmsWasEnabled ) {
+                enableDPMS( false );
+            }
         }
-        // is DPMS enabled?
-        m_dpmsWasEnabled = isDPMSEnabled();
-        kDebug() << "DPMS was enabled:" << m_dpmsWasEnabled << endl;
-        if ( m_dpmsWasEnabled ) {
-            enableDPMS( false );
-        }
 
         deSelectAllObjects();
         presStarted = true;
@@ -1608,6 +1620,15 @@
         m_canvas->setMouseTracking( true );
         m_canvas->setBackgroundMode( Qt::NoBackground );
 
+        const QString xdgScreenSaver = KStandardDirs::findExe("xdg-screensaver");
+        if (!xdgScreenSaver.isEmpty()) {
+            KProcess proc;
+            proc << xdgScreenSaver;
+            proc << "resume";
+            proc << QString::number( topLevelWidget()->winId() );
+            kDebug() << k_funcinfo << proc.args() << endl;
+            proc.start( KProcess::DontCare );
+        } else {
         if ( m_screenSaverWasEnabled )
         {
             // start screensaver again
@@ -1625,6 +1646,7 @@
             kDebug(33001) << "Re-enabling DPMS" << endl;
             enableDPMS( true );
         }
+        }
 
         actionScreenStart->setEnabled( true );
         pageBase->resizeEvent( 0 );


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

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