diff options
author | Slávek Banko <[email protected]> | 2013-09-22 14:57:26 +0200 |
---|---|---|
committer | Slávek Banko <[email protected]> | 2013-09-22 14:57:26 +0200 |
commit | 7d335195a06f3453de82ee870c699652a55a2bfd (patch) | |
tree | be80ab7c4b5531439947e939bf0070377d3365ec | |
parent | 19b918348907ac2f8bf0307d601bea26e774e6c0 (diff) | |
download | tdebase-7d335195a06f3453de82ee870c699652a55a2bfd.tar.gz tdebase-7d335195a06f3453de82ee870c699652a55a2bfd.zip |
Add support for freeze suspend state
-rw-r--r-- | kcontrol/hwmanager/devicepropsdlg.cpp | 1 | ||||
-rw-r--r-- | kcontrol/hwmanager/devicepropsdlgbase.ui | 23 | ||||
-rw-r--r-- | kcontrol/hwmanager/hwmanager.desktop | 2 | ||||
-rw-r--r-- | kicker/kicker/ui/k_new_mnu.cpp | 48 | ||||
-rw-r--r-- | ksmserver/shutdown.cpp | 3 | ||||
-rw-r--r-- | ksmserver/shutdowndlg.cpp | 139 | ||||
-rw-r--r-- | ksmserver/shutdowndlg.h | 1 |
7 files changed, 146 insertions, 71 deletions
diff --git a/kcontrol/hwmanager/devicepropsdlg.cpp b/kcontrol/hwmanager/devicepropsdlg.cpp index a4849af54..30778dac2 100644 --- a/kcontrol/hwmanager/devicepropsdlg.cpp +++ b/kcontrol/hwmanager/devicepropsdlg.cpp @@ -714,6 +714,7 @@ void DevicePropertiesDialog::populateDeviceInformation() { base->comboSystemHibernationMethod->setCurrentItem(m_hibernationComboMap[rdevice->hibernationMethod()]); base->labelSystemUserCanStandby->setText((rdevice->canStandby())?i18n("Yes"):i18n("No")); + base->labelSystemUserCanFreeze->setText((rdevice->canFreeze())?i18n("Yes"):i18n("No")); base->labelSystemUserCanSuspend->setText((rdevice->canSuspend())?i18n("Yes"):i18n("No")); base->labelSystemUserCanHibernate->setText((rdevice->canHibernate())?i18n("Yes"):i18n("No")); base->labelSystemUserCanPowerOff->setText((rdevice->canPowerOff())?i18n("Yes"):i18n("No")); diff --git a/kcontrol/hwmanager/devicepropsdlgbase.ui b/kcontrol/hwmanager/devicepropsdlgbase.ui index 5f6c2c166..74afdf5f3 100644 --- a/kcontrol/hwmanager/devicepropsdlgbase.ui +++ b/kcontrol/hwmanager/devicepropsdlgbase.ui @@ -1385,12 +1385,12 @@ <cstring>unnamed</cstring> </property> <property name="text"> - <string>User Can Request Suspend</string> + <string>User Can Request Freeze</string> </property> </widget> <widget class="TQLabel" row="4" column="1" colspan="1"> <property name="name"> - <cstring>labelSystemUserCanSuspend</cstring> + <cstring>labelSystemUserCanFreeze</cstring> </property> </widget> <widget class="TQLabel" row="5" column="0" colspan="1"> @@ -1398,12 +1398,12 @@ <cstring>unnamed</cstring> </property> <property name="text"> - <string>User Can Request Hibernation</string> + <string>User Can Request Suspend</string> </property> </widget> <widget class="TQLabel" row="5" column="1" colspan="1"> <property name="name"> - <cstring>labelSystemUserCanHibernate</cstring> + <cstring>labelSystemUserCanSuspend</cstring> </property> </widget> <widget class="TQLabel" row="6" column="0" colspan="1"> @@ -1411,11 +1411,24 @@ <cstring>unnamed</cstring> </property> <property name="text"> - <string>User Can Request Shutdown</string> + <string>User Can Request Hibernation</string> </property> </widget> <widget class="TQLabel" row="6" column="1" colspan="1"> <property name="name"> + <cstring>labelSystemUserCanHibernate</cstring> + </property> + </widget> + <widget class="TQLabel" row="7" column="0" colspan="1"> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="text"> + <string>User Can Request Shutdown</string> + </property> + </widget> + <widget class="TQLabel" row="7" column="1" colspan="1"> + <property name="name"> <cstring>labelSystemUserCanPowerOff</cstring> </property> </widget> diff --git a/kcontrol/hwmanager/hwmanager.desktop b/kcontrol/hwmanager/hwmanager.desktop index 1b006504b..d8a870f98 100644 --- a/kcontrol/hwmanager/hwmanager.desktop +++ b/kcontrol/hwmanager/hwmanager.desktop @@ -1,5 +1,5 @@ [Desktop Entry] -Exec=tdecmshell kwmanager +Exec=tdecmshell hwmanager Icon=background Type=Application DocPath=kcontrol/hwmanager/index.html diff --git a/kicker/kicker/ui/k_new_mnu.cpp b/kicker/kicker/ui/k_new_mnu.cpp index 3711a914f..af4142007 100644 --- a/kicker/kicker/ui/k_new_mnu.cpp +++ b/kicker/kicker/ui/k_new_mnu.cpp @@ -428,7 +428,7 @@ KMenu::KMenu() search_tab_top_left.load( locate("data", "kicker/pics/search-tab-top-left.png" ) ); search_tab_top_right.load( locate("data", "kicker/pics/search-tab-top-right.png" ) ); search_tab_top_center.load( locate("data", "kicker/pics/search-tab-top-center.png" ) ); - + #ifdef COMPILE_HALBACKEND m_halCtx = NULL; m_halCtx = libhal_ctx_new(); @@ -2674,17 +2674,18 @@ void KMenu::slotStartURL(const TQString& u) kapp->dcopClient()->send("ksmserver", "default", "logoutTimed(int,int,TQString)", params); } -#ifdef COMPILE_HALBACKEND else if ( u == "kicker:/suspend_disk" ) { slotSuspend( 1 ); } else if ( u == "kicker:/suspend_ram" ) { slotSuspend( 2 ); } + else if ( u == "kicker:/suspend_freeze" ) { + slotSuspend( 4 ); + } else if ( u == "kicker:/standby" ) { slotSuspend( 3 ); } -#endif else if ( u == "kicker:/savesession" ) { TQByteArray data; kapp->dcopClient()->send( "ksmserver", "default", @@ -3745,41 +3746,48 @@ int KMenu::max_items(int category) const void KMenu::insertSuspendOption( int &nId, int &index ) { bool suspend_ram = false; + bool suspend_freeze = false; bool standby = false; bool suspend_disk = false; #ifdef COMPILE_HALBACKEND suspend_ram = libhal_device_get_property_bool(m_halCtx, "/org/freedesktop/Hal/devices/computer", - "power_management.can_suspend", + "power_management.can_suspend", NULL); standby = libhal_device_get_property_bool(m_halCtx, "/org/freedesktop/Hal/devices/computer", - "power_management.can_standby", + "power_management.can_standby", NULL); suspend_disk = libhal_device_get_property_bool(m_halCtx, "/org/freedesktop/Hal/devices/computer", - "power_management.can_hibernate", + "power_management.can_hibernate", NULL); #else // COMPILE_HALBACKEND TDERootSystemDevice* rootDevice = TDEGlobal::hardwareDevices()->rootSystemDevice(); if (rootDevice) { suspend_ram = rootDevice->canSuspend(); + suspend_freeze = rootDevice->canFreeze(); standby = rootDevice->canStandby(); suspend_disk = rootDevice->canHibernate(); } #endif - if ( suspend_disk ) { + // respect disable suspend/hibernate settings from power-manager + TDEConfig config("power-managerrc"); + bool disableSuspend = config.readBoolEntry("disableSuspend", false); + bool disableHibernate = config.readBoolEntry("disableHibernate", false); + + if ( suspend_disk && !disableHibernate ) { m_exitView->leftView()->insertItem( "suspend2disk", i18n( "Suspend to Disk" ), i18n( "Pause without logging out" ), "kicker:/suspend_disk", nId++, index++ ); } - - if ( suspend_ram ) { + + if ( suspend_ram && !disableSuspend ) { m_exitView->leftView()->insertItem( "suspend2ram", i18n( "Suspend to RAM" ), @@ -3787,7 +3795,15 @@ void KMenu::insertSuspendOption( int &nId, int &index ) "kicker:/suspend_ram", nId++, index++ ); } - if ( standby ) { + if ( suspend_freeze && !disableSuspend ) { + m_exitView->leftView()->insertItem( + "suspend2ram", + i18n( "Freeze" ), + i18n( "Pause without logging out" ), + "kicker:/suspend_freeze", nId++, index++ ); + } + + if ( standby && !disableSuspend ) { m_exitView->leftView()->insertItem( "player_pause", i18n( "Standby" ), @@ -3799,6 +3815,16 @@ void KMenu::insertSuspendOption( int &nId, int &index ) void KMenu::slotSuspend(int id) { bool error = true; + + // respect lock on resume settings from power-manager + TDEConfig config("power-managerrc"); + bool lockOnResume = config.readBoolEntry("lockOnResume", true); + if (lockOnResume) { + // Block here until lock is complete + // If this is not done the desktop of the locked session will be shown after suspend/hibernate until the lock fully engages! + DCOPRef("kdesktop", "KScreensaverIface").call("lock()"); + } + #ifdef COMPILE_HALBACKEND DBusMessage* msg = NULL; @@ -3841,6 +3867,8 @@ void KMenu::slotSuspend(int id) error = !rootDevice->setPowerState(TDESystemPowerState::Suspend); } else if (id == 3) { error = !rootDevice->setPowerState(TDESystemPowerState::Standby); + } else if (id == 4) { + error = !rootDevice->setPowerState(TDESystemPowerState::Freeze); } else { return; } diff --git a/ksmserver/shutdown.cpp b/ksmserver/shutdown.cpp index 32e7c3b19..12743e892 100644 --- a/ksmserver/shutdown.cpp +++ b/ksmserver/shutdown.cpp @@ -247,6 +247,9 @@ void KSMServer::shutdownInternal( TDEApplication::ShutdownConfirm confirm, if (selection == 2) { // Hibernate rootDevice->setPowerState(TDESystemPowerState::Hibernate); } + if (selection == 3) { // Freeze + rootDevice->setPowerState(TDESystemPowerState::Freeze); + } } } } diff --git a/ksmserver/shutdowndlg.cpp b/ksmserver/shutdowndlg.cpp index 077d06a75..fde31d223 100644 --- a/ksmserver/shutdowndlg.cpp +++ b/ksmserver/shutdowndlg.cpp @@ -118,7 +118,7 @@ void KSMShutdownFeedback::slotPaintEffect() float doFancyLogoutAdditionalDarkness = (float)TDEConfigGroup(TDEGlobal::config(), "Logout").readDoubleNumEntry("doFancyLogoutAdditionalDarkness", 0.6); float doFancyLogoutFadeTime = (float)TDEConfigGroup(TDEGlobal::config(), "Logout").readDoubleNumEntry("doFancyLogoutFadeTime", 4000); float doFancyLogoutFadeBackTime = (float)TDEConfigGroup(TDEGlobal::config(), "Logout").readDoubleNumEntry("doFancyLogoutFadeBackTime", 1000); - + if (kapp->isX11CompositionAvailable()) { // We can do this in a different (simpler) manner because we have compositing support! // if slotPaintEffect() is called first time, we have to initialize the gray image @@ -127,7 +127,7 @@ void KSMShutdownFeedback::slotPaintEffect() if ( m_greyImageCreated == false ) { m_greyImageCreated = true; - + // eliminate nasty flicker on first show m_root.resize( width(), height() ); TQImage blendedImage = m_grayImage; @@ -136,31 +136,31 @@ void KSMShutdownFeedback::slotPaintEffect() blendedImage.setAlphaBuffer(false); p.drawImage( 0, 0, blendedImage ); p.end(); - + setBackgroundPixmap( m_root ); setGeometry( TQApplication::desktop()->geometry() ); setBackgroundMode( TQWidget::NoBackground ); - + m_unfadedImage = m_grayImage.copy(); - + register uchar * r = m_grayImage.bits(); uchar * end = m_grayImage.bits() + m_grayImage.numBytes(); - + while ( r != end ) { *reinterpret_cast<TQRgb*>(r) = tqRgba(0, 0, 0, 128); r += 4; } - + // start timer which is used for cpu-speed-independent fading m_fadeTime.start(); m_rowsDone = 0; } - + // return if fading is completely done... if ( ( m_grayOpacity >= 1.0f && m_fadeBackwards == FALSE ) || ( m_grayOpacity <= 0.0f && m_fadeBackwards == TRUE ) ) return; - - + + if ( m_fadeBackwards == FALSE ) { m_grayOpacity = m_fadeTime.elapsed() / doFancyLogoutFadeTime; @@ -173,21 +173,21 @@ void KSMShutdownFeedback::slotPaintEffect() if ( m_grayOpacity < 0.0f ) m_grayOpacity = 0.0f; } - + const int imgWidth = m_unfadedImage.width(); int imgHeight = m_unfadedImage.height(); int heightUnit = imgHeight / 3; if( heightUnit < 1 ) heightUnit = 1; - + int y1 = static_cast<int>( imgHeight*m_grayOpacity - heightUnit + m_grayOpacity*heightUnit*2.0f ); if( y1 > imgHeight ) y1 = imgHeight; - + int y2 = y1+heightUnit; if( y2 > imgHeight ) y2 = imgHeight; - + if( m_fadeBackwards == FALSE ) { if( y1 > 0 && y1 < imgHeight && y1-m_rowsDone > 0 && m_rowsDone < imgHeight ) @@ -209,7 +209,7 @@ void KSMShutdownFeedback::slotPaintEffect() m_rowsDone = y2; } } - + int start_y1 = y1; if( start_y1 < 0 ) start_y1 = 0; @@ -231,7 +231,7 @@ void KSMShutdownFeedback::slotPaintEffect() } bitBlt( this, 0, start_y1, &img ); } - + TQTimer::singleShot( 5, this, TQT_SLOT( slotPaintEffect() ) ); } else { @@ -241,35 +241,35 @@ void KSMShutdownFeedback::slotPaintEffect() if ( m_greyImageCreated == false ) { m_greyImageCreated = true; - + setBackgroundMode( TQWidget::NoBackground ); setGeometry( TQApplication::desktop()->geometry() ); m_root.resize( width(), height() ); // for the default logout - + m_unfadedImage = m_grayImage.copy(); - + register uchar * r = m_grayImage.bits(); register uchar * g = m_grayImage.bits() + 1; register uchar * b = m_grayImage.bits() + 2; uchar * end = m_grayImage.bits() + m_grayImage.numBytes(); - + while ( r != end ) { *r = *g = *b = (uchar) ( ( (*r)*11 + ((*g)<<4) + (*b)*5 ) * doFancyLogoutAdditionalDarkness / 32.0f ); r += 4; g += 4; b += 4; } - + // start timer which is used for cpu-speed-independent fading m_fadeTime.start(); m_rowsDone = 0; } - + // return if fading is completely done... if ( ( m_grayOpacity >= 1.0f && m_fadeBackwards == FALSE ) || ( m_grayOpacity <= 0.0f && m_fadeBackwards == TRUE ) ) return; - - + + if ( m_fadeBackwards == FALSE ) { m_grayOpacity = m_fadeTime.elapsed() / doFancyLogoutFadeTime; @@ -282,21 +282,21 @@ void KSMShutdownFeedback::slotPaintEffect() if ( m_grayOpacity < 0.0f ) m_grayOpacity = 0.0f; } - + const int imgWidth = m_unfadedImage.width(); int imgHeight = m_unfadedImage.height(); int heightUnit = imgHeight / 3; if( heightUnit < 1 ) heightUnit = 1; - + int y1 = static_cast<int>( imgHeight*m_grayOpacity - heightUnit + m_grayOpacity*heightUnit*2.0f ); if( y1 > imgHeight ) y1 = imgHeight; - + int y2 = y1+heightUnit; if( y2 > imgHeight ) y2 = imgHeight; - + if( m_fadeBackwards == FALSE ) { if( y1 > 0 && y1 < imgHeight && y1-m_rowsDone > 0 && m_rowsDone < imgHeight ) @@ -325,7 +325,7 @@ void KSMShutdownFeedback::slotPaintEffect() m_rowsDone = y2; } } - + int start_y1 = y1; if( start_y1 < 0 ) start_y1 = 0; @@ -358,7 +358,7 @@ void KSMShutdownFeedback::slotPaintEffect() //bitBlt( this, 0, start_y1, &pm ); bitBlt( this, 0, start_y1, &img ); } - + TQTimer::singleShot( 5, this, TQT_SLOT( slotPaintEffect() ) ); } } @@ -371,7 +371,7 @@ void KSMShutdownFeedback::slotPaintEffect() float doFancyLogoutFadeBackTime = 0; if ( m_greyImageCreated == false ) { m_greyImageCreated = true; - + // eliminate nasty flicker on first show m_root.resize( width(), height() ); TQImage blendedImage = m_grayImage; @@ -380,26 +380,26 @@ void KSMShutdownFeedback::slotPaintEffect() blendedImage.setAlphaBuffer(false); p.drawImage( 0, 0, blendedImage ); p.end(); - + setBackgroundPixmap( m_root ); setGeometry( TQApplication::desktop()->geometry() ); setBackgroundMode( TQWidget::NoBackground ); - + m_unfadedImage = m_grayImage.copy(); - + register uchar * r = m_grayImage.bits(); uchar * end = m_grayImage.bits() + m_grayImage.numBytes(); - + while ( r != end ) { *reinterpret_cast<TQRgb*>(r) = tqRgba(0, 0, 0, 107); r += 4; } - + // start timer which is used for cpu-speed-independent fading m_fadeTime.start(); m_rowsDone = 0; } - + // return if fading is completely done... if ( ( m_grayOpacity >= 1.0f && m_fadeBackwards == FALSE ) || ( m_grayOpacity <= 0.0f && m_fadeBackwards == TRUE ) ) { return; @@ -431,7 +431,7 @@ void KSMShutdownFeedback::slotPaintEffect() if( y2 > imgHeight ) { y2 = imgHeight; } - + if( m_fadeBackwards == FALSE ) { if( y1 > 0 && y1 < imgHeight && y1-m_rowsDone > 0 && m_rowsDone < imgHeight ) @@ -452,7 +452,7 @@ void KSMShutdownFeedback::slotPaintEffect() m_rowsDone = y2; } } - + int start_y1 = y1; if( start_y1 < 0 ) { start_y1 = 0; @@ -473,7 +473,7 @@ void KSMShutdownFeedback::slotPaintEffect() } bitBlt( this, 0, start_y1, &img ); } - + TQTimer::singleShot( 1, this, TQT_SLOT( slotPaintEffect() ) ); } else { @@ -484,7 +484,7 @@ void KSMShutdownFeedback::slotPaintEffect() } return; } - + if ( m_currentY == 0 ) { setBackgroundMode( TQWidget::NoBackground ); setGeometry( TQApplication::desktop()->geometry() ); @@ -495,7 +495,7 @@ void KSMShutdownFeedback::slotPaintEffect() bitBlt( this, 0, 0, &pixmap ); bitBlt( &m_root, 0, 0, &pixmap ); } - + KPixmap pixmap; pixmap = TQPixmap(TQPixmap::grabWindow( tqt_xrootwin(), 0, m_currentY, width(), 10 )); TQImage image = pixmap.convertToImage(); @@ -573,12 +573,12 @@ void KSMShutdownIPFeedback::enableExports() TQByteArray data; TQDataStream args( data, IO_WriteOnly ); args << 1; - + TQCString appname( "kdesktop" ); int screen_number = DefaultScreen(tqt_xdisplay()); if ( screen_number ) appname.sprintf("kdesktop-screen-%d", screen_number ); - + client->send( appname, "KBackgroundIface", "setExport(int)", data ); #endif } @@ -798,6 +798,7 @@ KSMShutdownDlg::KSMShutdownDlg( TQWidget* parent, bool disableHibernate = config.readBoolEntry("disableHibernate", false); m_lockOnResume = config.readBoolEntry("lockOnResume", true); + bool canFreeze = false; bool canSuspend = false; bool canHibernate = false; @@ -859,10 +860,12 @@ KSMShutdownDlg::KSMShutdownDlg( TQWidget* parent, #else // COMPILE_HALBACKEND TDERootSystemDevice* rootDevice = TDEGlobal::hardwareDevices()->rootSystemDevice(); if (rootDevice) { + canFreeze = rootDevice->canFreeze(); canSuspend = rootDevice->canSuspend(); canHibernate = rootDevice->canHibernate(); } else { + canFreeze = false; canSuspend = false; canHibernate = false; } @@ -870,6 +873,18 @@ KSMShutdownDlg::KSMShutdownDlg( TQWidget* parent, if(doUbuntuLogout) { + if (canFreeze && !disableSuspend) + { + // Freeze + FlatButton* btnFreeze = new FlatButton( frame ); + btnFreeze->setTextLabel( i18n("&Freeze"), false ); + btnFreeze->setPixmap( DesktopIcon( "suspend") ); + int i = btnFreeze->textLabel().find( TQRegExp("\\&"), 0 ); // i == 1 + btnFreeze->setAccel( "ALT+" + btnFreeze->textLabel().lower()[i+1] ) ; + hbuttonbox->addWidget ( btnFreeze); + connect(btnFreeze, TQT_SIGNAL(clicked()), TQT_SLOT(slotFreeze())); + } + if (canSuspend && !disableSuspend) { // Suspend @@ -913,7 +928,7 @@ KSMShutdownDlg::KSMShutdownDlg( TQWidget* parent, if ( sdtype == TDEApplication::ShutdownTypeReboot ) { btnReboot->setFocus(); } - + // BAD KARMA .. this code is copied line by line from standard konqy dialog int def, cur; if ( DM().bootOptions( rebootOptions, def, cur ) ) { @@ -922,7 +937,7 @@ KSMShutdownDlg::KSMShutdownDlg( TQWidget* parent, if ( cur == -1 ) { cur = def; } - + int index = 0; for (TQStringList::ConstIterator it = rebootOptions.begin(); it != rebootOptions.end(); ++it, ++index) { TQString label = (*it); @@ -934,7 +949,7 @@ KSMShutdownDlg::KSMShutdownDlg( TQWidget* parent, targets->insertItem( label, index ); } } - + btnReboot->setPopup(targets); connect( targets, TQT_SIGNAL(activated(int)), TQT_SLOT(slotReboot(int)) ); } @@ -985,12 +1000,12 @@ KSMShutdownDlg::KSMShutdownDlg( TQWidget* parent, TQToolTip::add( btnReboot, i18n( "<qt><h3>Restart Computer</h3><p>Log out of the current session and restart the computer</p><p>Hold the mouse button or the space bar for a short while to get a list of options what to boot</p></qt>" ) ); btnReboot->setFont( btnFont ); buttonlay->addWidget( btnReboot ); - + connect(btnReboot, TQT_SIGNAL(clicked()), TQT_SLOT(slotReboot())); if ( sdtype == TDEApplication::ShutdownTypeReboot ) { btnReboot->setFocus(); } - + // this section is copied as-is into ubuntulogout as well int def, cur; if ( DM().bootOptions( rebootOptions, def, cur ) ) { @@ -998,7 +1013,7 @@ KSMShutdownDlg::KSMShutdownDlg( TQWidget* parent, if ( cur == -1 ) { cur = def; } - + int index = 0; for (TQStringList::ConstIterator it = rebootOptions.begin(); it != rebootOptions.end(); ++it, ++index) { TQString label = (*it); @@ -1010,12 +1025,20 @@ KSMShutdownDlg::KSMShutdownDlg( TQWidget* parent, targets->insertItem( label, index ); } } - + btnReboot->setPopup(targets); connect( targets, TQT_SIGNAL(activated(int)), TQT_SLOT(slotReboot(int)) ); } } + if (canFreeze && !disableSuspend) + { + KPushButton* btnFreeze = new KPushButton( KGuiItem( i18n("&Freeze Computer"), "suspend"), frame ); + btnFreeze->setFont( btnFont ); + buttonlay->addWidget( btnFreeze ); + connect(btnFreeze, TQT_SIGNAL(clicked()), TQT_SLOT(slotFreeze())); + } + if (canSuspend && !disableSuspend) { KPushButton* btnSuspend = new KPushButton( KGuiItem( i18n("&Suspend Computer"), "suspend"), frame ); @@ -1125,9 +1148,9 @@ void KSMShutdownDlg::slotHalt() void KSMShutdownDlg::slotSuspend() { +#ifndef COMPILE_HALBACKEND *m_selection = 1; // Suspend - -#ifdef COMPILE_HALBACKEND +#else if (m_dbusConn) { DBusMessage *msg = dbus_message_new_method_call( @@ -1149,9 +1172,9 @@ void KSMShutdownDlg::slotSuspend() void KSMShutdownDlg::slotHibernate() { +#ifndef COMPILE_HALBACKEND *m_selection = 2; // Hibernate - -#ifdef COMPILE_HALBACKEND +#else if (m_dbusConn) { DBusMessage *msg = dbus_message_new_method_call( @@ -1168,6 +1191,12 @@ void KSMShutdownDlg::slotHibernate() reject(); // continue on resume } +void KSMShutdownDlg::slotFreeze() +{ + *m_selection = 3; // Freeze + reject(); +} + bool KSMShutdownDlg::confirmShutdown( bool maysd, bool mayrb, TDEApplication::ShutdownType& sdtype, TQString& bootOption, int* selection ) { kapp->enableStyles(); diff --git a/ksmserver/shutdowndlg.h b/ksmserver/shutdowndlg.h index d92bd5644..270979182 100644 --- a/ksmserver/shutdowndlg.h +++ b/ksmserver/shutdowndlg.h @@ -141,6 +141,7 @@ public slots: void slotReboot(int); void slotSuspend(); void slotHibernate(); + void slotFreeze(); protected: ~KSMShutdownDlg(); |