diff options
Diffstat (limited to 'src/tdepowersave.cpp')
-rw-r--r-- | src/tdepowersave.cpp | 103 |
1 files changed, 74 insertions, 29 deletions
diff --git a/src/tdepowersave.cpp b/src/tdepowersave.cpp index 2958d72..b54b990 100644 --- a/src/tdepowersave.cpp +++ b/src/tdepowersave.cpp @@ -859,38 +859,61 @@ bool tdepowersave::do_standby(){ void tdepowersave::do_autosuspendWarn() { kdDebugFuncIn(trace); - if (settings->autoSuspendCountdown && (settings->autoSuspendCountdownTimeout > 0)) { - // we have to display the warn dialog - if(!contextMenu()->isItemChecked(AUTOSUSPEND_MENU_ID)) { - TQString message; - - countdown = new countDownDialog(settings->autoSuspendCountdownTimeout); + // Verify that the desired suspend action is allowed before displaying the dialog + SuspendStates suspend = hwinfo->getSuspendSupport(); + bool allowed = false; + if(settings->autoInactiveAction == "Suspend to Disk") { + if ( suspend.suspend2disk && (suspend.suspend2disk_allowed || suspend.suspend2disk_allowed == -1)) { + allowed = true; + } + } + else if (settings->autoInactiveAction == "Suspend to RAM") { + if( suspend.suspend2ram && (suspend.suspend2ram_allowed || suspend.suspend2ram_allowed == -1)) { + allowed = true; + } + } + else if (settings->autoInactiveAction == "Standby") { + if ( suspend.standby && (suspend.standby_allowed || suspend.standby_allowed == -1)) { + allowed = true; + } + } - if(settings->autoInactiveAction == "Suspend to Disk") { - countdown->setPixmap("suspend2disk"); - } else if (settings->autoInactiveAction == "Suspend to RAM") { - countdown->setPixmap("suspend2ram"); - } else if (settings->autoInactiveAction == "Standby") { - countdown->setPixmap("standby"); - } else { - countdown->setPixmap("tdepowersave"); - } + if (allowed) { + if (settings->autoSuspendCountdown && (settings->autoSuspendCountdownTimeout > 0)) { + // we have to display the warn dialog + if(!contextMenu()->isItemChecked(AUTOSUSPEND_MENU_ID)) { + TQString message; + + countdown = new countDownDialog(settings->autoSuspendCountdownTimeout); + + if(settings->autoInactiveAction == "Suspend to Disk") { + countdown->setPixmap("suspend2disk"); + } else if (settings->autoInactiveAction == "Suspend to RAM") { + countdown->setPixmap("suspend2ram"); + } else if (settings->autoInactiveAction == "Standby") { + countdown->setPixmap("standby"); + } else { + countdown->setPixmap("tdepowersave"); + } - // TODO: rework this after translation round for openSUSE 10.3 ! - message = i18n("Inactivity detected.") + " " + - i18n("To stop the %1 press the 'Cancel' button before the countdown " - "expires.").arg(i18n("Autosuspend")) + "\n\n" + - i18n("The computer autosuspend in: "); + // TODO: rework this after translation round for openSUSE 10.3 ! + message = i18n("Inactivity detected.") + " " + + i18n("To stop the %1 press the 'Cancel' button before the countdown " + "expires.").arg(i18n("Autosuspend")) + "\n\n" + + i18n("The computer autosuspend in: "); - countdown->setMessageText(message); + countdown->setMessageText(message); - connect(countdown, TQT_SIGNAL(dialogClosed(bool)), this, TQT_SLOT(do_autosuspend(bool))); - countdown->showDialog(); + connect(countdown, TQT_SIGNAL(dialogClosed(bool)), this, TQT_SLOT(do_autosuspend(bool))); + countdown->showDialog(); + } + } + else { + // call directly autosuspend + do_autosuspend(false); } - } else { - // call directly autosuspend - do_autosuspend(false); } + kdDebugFuncOut(trace); } @@ -1701,7 +1724,8 @@ void tdepowersave::setSchemeSettings(){ // --> set autosuspend settings if(settings->autoSuspend) { setAutoSuspend(false); - } else { + } + else { this->contextMenu()->setItemVisible(AUTOSUSPEND_MENU_ID, false); this->contextMenu()->setItemChecked(AUTOSUSPEND_MENU_ID, false); this->contextMenu()->setItemVisible(AUTOSUSPEND_SEPARATOR_MENU_ID, false); @@ -1803,6 +1827,28 @@ void tdepowersave::setSchemeSettings(){ void tdepowersave::setAutoSuspend( bool resumed ){ if (trace) kdDebug() << funcinfo << "IN: " << "resumed? " << resumed << endl; + // Verify that the desired suspend action is allowed before enabling autosuspend + SuspendStates suspend = hwinfo->getSuspendSupport(); + bool allowed = false; + if(settings->autoInactiveAction == "Suspend to Disk") { + if ( suspend.suspend2disk && (suspend.suspend2disk_allowed || suspend.suspend2disk_allowed == -1)) { + allowed = true; + } + } + else if (settings->autoInactiveAction == "Suspend to RAM") { + if( suspend.suspend2ram && (suspend.suspend2ram_allowed || suspend.suspend2ram_allowed == -1)) { + allowed = true; + } + } + else if (settings->autoInactiveAction == "Standby") { + if ( suspend.standby && (suspend.standby_allowed || suspend.standby_allowed == -1)) { + allowed = true; + } + } + if (!allowed) { + settings->autoSuspend = false; + } + if(settings->autoInactiveActionAfter > 0 && settings->autoSuspend) { int autoInactiveActionAfter = 0; @@ -1814,8 +1860,7 @@ void tdepowersave::setAutoSuspend( bool resumed ){ autoSuspend->stop(); delete autoSuspend; autoSuspend = new autosuspend(); - connect(autoSuspend, TQT_SIGNAL(inactivityTimeExpired()), this, - TQT_SLOT(do_autosuspendWarn())); + connect(autoSuspend, TQT_SIGNAL(inactivityTimeExpired()), this, TQT_SLOT(do_autosuspendWarn())); } if (settings->autoSuspendCountdown && (settings->autoSuspendCountdownTimeout > 0)) { |