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

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

SVN commit 596147 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  +62 -41    KPrView.cpp  


--- branches/koffice/1.6/koffice/kpresenter/KPrView.cpp #596146:596147
@@ -86,6 +86,7 @@
 #include <kdebug.h>
 #include <ktempfile.h>
 #include <kcolorbutton.h>
+#include <kprocess.h>
 
 #include <KoMainWindow.h>
 #include <KoPartSelectDia.h>
@@ -1484,36 +1485,46 @@
     m_canvas->setToolEditMode( TEM_MOUSE );
 
     if ( m_canvas && !presStarted ) {
-        QByteArray data;
-        QByteArray replyData;
-        QCString replyType;
-        m_screenSaverWasEnabled = false;
-        // is screensaver enabled?
-        if (kapp->dcopClient()->call("kdesktop", "KScreensaverIface", "isEnabled()", \
                data, replyType, replyData)
-            && replyType=="bool")
-        {
-            QDataStream replyArg(replyData, IO_ReadOnly);
-            replyArg >> m_screenSaverWasEnabled;
-            kdDebug() << "Screensaver was enabled:" << m_screenSaverWasEnabled << \
                endl;
-            if ( m_screenSaverWasEnabled )
+        const QString xdgScreenSaver = KStandardDirs::findExe("xdg-screensaver");
+        if (!xdgScreenSaver.isEmpty()) {
+            KProcess proc;
+            proc << xdgScreenSaver;
+            proc << "suspend";
+            proc << QString::number( topLevelWidget()->winId() );
+            kdDebug() << k_funcinfo << proc.args() << endl;
+            proc.start( KProcess::DontCare );
+        } else {
+            QByteArray data;
+            QByteArray replyData;
+            QCString replyType;
+            m_screenSaverWasEnabled = false;
+            // is screensaver enabled?
+            if (kapp->dcopClient()->call("kdesktop", "KScreensaverIface", \
"isEnabled()", data, replyType, replyData) +                && replyType=="bool")
             {
-                // disable screensaver
-                QDataStream arg(data, IO_WriteOnly);
-                arg << false;
-                if (!kapp->dcopClient()->send("kdesktop", "KScreensaverIface", \
                "enable(bool)", data))
-                    kdWarning(33001) << "Couldn't disable screensaver (using dcop to \
                kdesktop)!" << endl;
-                else
-                    kdDebug(33001) << "Screensaver successfully disabled" << endl;
+                QDataStream replyArg(replyData, IO_ReadOnly);
+                replyArg >> m_screenSaverWasEnabled;
+                kdDebug() << "Screensaver was enabled:" << m_screenSaverWasEnabled \
<< endl; +                if ( m_screenSaverWasEnabled )
+                {
+                    // disable screensaver
+                    QDataStream arg(data, IO_WriteOnly);
+                    arg << false;
+                    if (!kapp->dcopClient()->send("kdesktop", "KScreensaverIface", \
"enable(bool)", data)) +                        kdWarning(33001) << "Couldn't disable \
screensaver (using dcop to kdesktop)!" << endl; +                    else
+                        kdDebug(33001) << "Screensaver successfully disabled" << \
endl; +                }
+            } else {
+                kdWarning(33001) << "Couldn't check screensaver (using dcop to \
kdesktop)!" << endl;  }
-        } else {
-            kdWarning(33001) << "Couldn't check screensaver (using dcop to \
kdesktop)!" << endl; +            // is DPMS enabled?
+            m_dpmsWasEnabled = isDPMSEnabled();
+            kdDebug() << "DPMS was enabled:" << m_dpmsWasEnabled << endl;
+            if ( m_dpmsWasEnabled ) {
+                enableDPMS( false );
+            }
         }
-        // is DPMS enabled?
-        m_dpmsWasEnabled = isDPMSEnabled();
-        kdDebug() << "DPMS was enabled:" << m_dpmsWasEnabled << endl;
-        if ( m_dpmsWasEnabled ) {
-            enableDPMS( false );
-        }
 
         deSelectAllObjects();
         presStarted = true;
@@ -1598,21 +1609,31 @@
         m_canvas->setMouseTracking( true );
         m_canvas->setBackgroundMode( Qt::NoBackground );
 
-        if ( m_screenSaverWasEnabled )
-        {
-            // start screensaver again
-            QByteArray data;
-            QDataStream arg(data, IO_WriteOnly);
-            arg << true;
-            if (!kapp->dcopClient()->send("kdesktop", "KScreensaverIface", \
                "enable(bool)", data))
-                kdWarning(33001) << "Couldn't re-enabled screensaver (using dcop to \
kdesktop)" << endl; +        const QString xdgScreenSaver = \
KStandardDirs::findExe("xdg-screensaver"); +        if (!xdgScreenSaver.isEmpty()) {
+            KProcess proc;
+            proc << xdgScreenSaver;
+            proc << "resume";
+            proc << QString::number( topLevelWidget()->winId() );
+            kdDebug() << k_funcinfo << proc.args() << endl;
+            proc.start( KProcess::DontCare );
+        } else {
+            if ( m_screenSaverWasEnabled )
+            {
+                // start screensaver again
+                QByteArray data;
+                QDataStream arg(data, IO_WriteOnly);
+                arg << true;
+                if (!kapp->dcopClient()->send("kdesktop", "KScreensaverIface", \
"enable(bool)", data)) +                    kdWarning(33001) << "Couldn't re-enabled \
screensaver (using dcop to kdesktop)" << endl; +            }
+            if ( m_dpmsWasEnabled )
+            {
+                // re-enable DPMS
+                kdDebug(33001) << "Re-enabling DPMS" << endl;
+                enableDPMS( true );
+            }
         }
-        if ( m_dpmsWasEnabled )
-        {
-            // re-enable DPMS
-            kdDebug(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