summaryrefslogtreecommitdiffstats
path: root/src/tdepowersave.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tdepowersave.cpp')
-rw-r--r--src/tdepowersave.cpp32
1 files changed, 29 insertions, 3 deletions
diff --git a/src/tdepowersave.cpp b/src/tdepowersave.cpp
index c1086e4..2958d72 100644
--- a/src/tdepowersave.cpp
+++ b/src/tdepowersave.cpp
@@ -30,6 +30,7 @@
#include <knotifydialog.h>
#include <kpassivepopup.h>
#include <tdepopupmenu.h>
+#include <kglobalaccel.h>
// other TQt headers:
#include <tqcursor.h>
@@ -114,6 +115,17 @@ tdepowersave::tdepowersave( bool force_acpi_check, bool trace_func ) : KSystemTr
connect(autoDimm, TQT_SIGNAL(inactivityTimeExpired()), this, TQT_SLOT(do_downDimm()));
connect(autoDimm, TQT_SIGNAL(UserIsActiveAgain()), this, TQT_SLOT(do_upDimm()));
+ // connect to hotkeys
+ m_globalAccel = new TDEGlobalAccel( TQT_TQOBJECT(this) );
+ m_globalAccel->insert( "Power button", i18n( "Execute configured power button action"), TQString(),
+ TDEShortcut(TQString("XF86PowerOff")), TDEShortcut(TQString("XF86PowerOff")), TQT_TQOBJECT(this), TQT_SLOT( handlePowerButtonEvent() ) );
+ m_globalAccel->insert( "Sleep button", i18n( "Sleep configured power button action"), TQString(),
+ TDEShortcut(TQString("XF86Sleep")), TDEShortcut(TQString("XF86Sleep")), TQT_TQOBJECT(this), TQT_SLOT( handleSleepButtonEvent() ) );
+ m_globalAccel->insert( "Hibernate button", i18n( "Hibernate configured power button action"), TQString(),
+ TDEShortcut(TQString("XF86Suspend")), TDEShortcut(TQString("XF86Suspend")), TQT_TQOBJECT(this), TQT_SLOT( handleS2DiskButtonEvent() ) );
+ m_globalAccel->readSettings();
+ m_globalAccel->updateConnections();
+
config->sync();
config_dialog_shown = false;
@@ -1982,7 +1994,7 @@ void tdepowersave::handleActionCall ( action action, int value , bool checkAC, b
if (hwinfo->currentSessionIsActive()) {
switch (action) {
case GO_SHUTDOWN:
- // to be shure if we really need the shutdown
+ // confirm that we really need/want to shutdown
if ((checkAC && !hwinfo->getAcAdapter()) || !checkAC ) {
DCOPRef shutdown = DCOPRef( "ksmserver", "ksmserver" );
shutdown.send("logout", 0, 2, 2);
@@ -1990,8 +2002,22 @@ void tdepowersave::handleActionCall ( action action, int value , bool checkAC, b
break;
case LOGOUT_DIALOG:
{
- DCOPRef shutdown = DCOPRef( "ksmserver", "ksmserver" );
- shutdown.send("logout", 1, 2, 2);
+ // Do not display the logout dialog if the screen saver/lock system is active
+ bool saving = true;
+ TQString _method;
+ DCOPRef dcop_ref = DCOPRef( "kdesktop", "KScreensaverIface" );
+ _method = "isBlanked()";
+ DCOPReply reply = dcop_ref.call(_method.latin1());
+ if ( reply.isValid() ) {
+ if (!reply.get(saving)) {
+ saving = false;
+ }
+ }
+
+ if (!saving) {
+ DCOPRef shutdown = DCOPRef( "ksmserver", "ksmserver" );
+ shutdown.send("logout", 1, 2, 2);
+ }
}
break;
case GO_SUSPEND2RAM: