[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