diff options
Diffstat (limited to 'kdm/kfrontend/kdmshutdown.cpp')
-rw-r--r-- | kdm/kfrontend/kdmshutdown.cpp | 925 |
1 files changed, 0 insertions, 925 deletions
diff --git a/kdm/kfrontend/kdmshutdown.cpp b/kdm/kfrontend/kdmshutdown.cpp deleted file mode 100644 index e546f62b6..000000000 --- a/kdm/kfrontend/kdmshutdown.cpp +++ /dev/null @@ -1,925 +0,0 @@ -/* - -Shutdown dialog - -Copyright (C) 1997, 1998, 2000 Steffen Hansen <[email protected]> -Copyright (C) 2000-2003,2005 Oswald Buddenhagen <[email protected]> - - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -*/ - -#include "tdmshutdown.h" -#include "tdm_greet.h" - -#include <kapplication.h> -#include <kseparator.h> -#include <klocale.h> -#include <kpushbutton.h> -#include <kstdguiitem.h> -#include <kprocio.h> -#include <kdialog.h> -#include <kstandarddirs.h> -#include <kuser.h> -#include <kconfig.h> -#include <kiconloader.h> - -#include <tqcombobox.h> -#include <tqvbuttongroup.h> -#include <tqstyle.h> -#include <tqlayout.h> -#include <tqaccel.h> -#include <tqpopupmenu.h> -#include <tqcheckbox.h> -#include <tqlineedit.h> -#include <tqlabel.h> -#include <tqdatetime.h> -#include <tqlistview.h> -#include <tqheader.h> -#include <tqdatetime.h> -#include <tqregexp.h> - -#define KDmh KDialog::marginHint() -#define KDsh KDialog::spacingHint() - -#include <stdlib.h> - -extern bool has_twin; - -int TDMShutdownBase::curPlugin = -1; -PluginList TDMShutdownBase::pluginList; - -TDMShutdownBase::TDMShutdownBase( int _uid, TQWidget *_parent ) - : inherited( _parent ) - , box( new TQVBoxLayout( this, KDmh, KDsh ) ) -#ifdef HAVE_VTS - , willShut( true ) -#endif - , mayNuke( false ) - , doesNuke( false ) - , mayOk( true ) - , maySched( false ) - , rootlab( 0 ) - , verify( 0 ) - , needRoot( -1 ) - , uid( _uid ) -{ -} - -TDMShutdownBase::~TDMShutdownBase() -{ - hide(); - delete verify; -} - -void -TDMShutdownBase::complete( TQWidget *prevWidget ) -{ - TQSizePolicy fp( TQSizePolicy::Fixed, TQSizePolicy::Fixed ); - - if (uid && - ((willShut && _allowShutdown == SHUT_ROOT) || - (mayNuke && _allowNuke == SHUT_ROOT))) - { - rootlab = new TQLabel( i18n("Root authorization required."), this ); - box->addWidget( rootlab ); - if (curPlugin < 0) { - curPlugin = 0; - pluginList = KGVerify::init( _pluginsShutdown ); - } - verify = new KGStdVerify( this, this, - prevWidget, "root", - pluginList, KGreeterPlugin::Authenticate, - KGreeterPlugin::Shutdown ); - verify->selectPlugin( curPlugin ); - box->addLayout( verify->getLayout() ); - TQAccel *accel = new TQAccel( this ); - accel->insertItem( ALT+Key_A, 0 ); - connect( accel, TQT_SIGNAL(activated( int )), TQT_SLOT(slotActivatePlugMenu()) ); - } - - box->addWidget( new KSeparator( KSeparator::HLine, this ) ); - - TQBoxLayout *hlay = new TQHBoxLayout( box, KDsh ); - hlay->addStretch( 1 ); - if (mayOk) { - okButton = new KPushButton( KStdGuiItem::ok(), this ); - okButton->setSizePolicy( fp ); - okButton->setDefault( true ); - hlay->addWidget( okButton ); - hlay->addStretch( 1 ); - connect( okButton, TQT_SIGNAL(clicked()), TQT_SLOT(accept()) ); - } - if (maySched) { - KPushButton *schedButton = - new KPushButton( KGuiItem( i18n("&Schedule...") ), this ); - schedButton->setSizePolicy( fp ); - hlay->addWidget( schedButton ); - hlay->addStretch( 1 ); - connect( schedButton, TQT_SIGNAL(clicked()), TQT_SLOT(slotSched()) ); - } - cancelButton = new KPushButton( KStdGuiItem::cancel(), this ); - cancelButton->setSizePolicy( fp ); - if (!mayOk) - cancelButton->setDefault( true ); - hlay->addWidget( cancelButton ); - hlay->addStretch( 1 ); - connect( cancelButton, TQT_SIGNAL(clicked()), TQT_SLOT(reject()) ); - - updateNeedRoot(); -} - -void -TDMShutdownBase::slotActivatePlugMenu() -{ - if (needRoot) { - TQPopupMenu *cmnu = verify->getPlugMenu(); - if (!cmnu) - return; - TQSize sh( cmnu->sizeHint() / 2 ); - cmnu->exec( geometry().center() - TQPoint( sh.width(), sh.height() ) ); - } -} - -void -TDMShutdownBase::accept() -{ - if (needRoot == 1) - verify->accept(); - else - accepted(); -} - -void -TDMShutdownBase::slotSched() -{ - done( Schedule ); -} - -void -TDMShutdownBase::updateNeedRoot() -{ - int nNeedRoot = uid && - (((willShut && _allowShutdown == SHUT_ROOT) || - (_allowNuke == SHUT_ROOT && doesNuke))); - if (verify && nNeedRoot != needRoot) { - if (needRoot == 1) - verify->abort(); - needRoot = nNeedRoot; - rootlab->setEnabled( needRoot ); - verify->setEnabled( needRoot ); - if (needRoot) - verify->start(); - } -} - -void -TDMShutdownBase::accepted() -{ - inherited::done( needRoot ? (int)Authed : (int)Accepted ); -} - -void -TDMShutdownBase::verifyPluginChanged( int id ) -{ - curPlugin = id; - adjustSize(); -} - -void -TDMShutdownBase::verifyOk() -{ - accepted(); -} - -void -TDMShutdownBase::verifyFailed() -{ - okButton->setEnabled( false ); - cancelButton->setEnabled( false ); -} - -void -TDMShutdownBase::verifyRetry() -{ - okButton->setEnabled( true ); - cancelButton->setEnabled( true ); -} - -void -TDMShutdownBase::verifySetUser( const TQString & ) -{ -} - - -static void -doShutdown( int type, const char *os ) -{ - GSet( 1 ); - GSendInt( G_Shutdown ); - GSendInt( type ); - GSendInt( 0 ); - GSendInt( 0 ); - GSendInt( SHUT_FORCE ); - GSendInt( 0 ); /* irrelevant, will timeout immediately anyway */ - GSendStr( os ); - GSet( 0 ); -} - - - -TDMShutdown::TDMShutdown( int _uid, TQWidget *_parent ) - : inherited( _uid, _parent ) -{ - setCaption(i18n("Shutdown TDE")); - - TQSizePolicy fp( TQSizePolicy::Fixed, TQSizePolicy::Fixed ); - - TQHBoxLayout *hlay = new TQHBoxLayout( box, KDsh ); - - howGroup = new TQVButtonGroup( i18n("Shutdown Type"), this ); - hlay->addWidget( howGroup, 0, AlignTop ); - - TQRadioButton *rb; - rb = new TDMRadioButton( i18n("&Turn off computer"), howGroup ); - rb->setChecked( true ); - rb->setFocus(); - - restart_rb = new TDMRadioButton( i18n("&Restart computer"), howGroup ); - - connect( rb, TQT_SIGNAL(doubleClicked()), TQT_SLOT(accept()) ); - connect( restart_rb, TQT_SIGNAL(doubleClicked()), TQT_SLOT(accept()) ); - - GSet( 1 ); - GSendInt( G_ListBootOpts ); - if (GRecvInt() == BO_OK) { /* XXX show dialog on failure */ - char **tlist = GRecvStrArr( 0 ); - int defaultTarget = GRecvInt(); - oldTarget = GRecvInt(); - TQWidget *hlp = new TQWidget( howGroup ); - targets = new TQComboBox( hlp ); - for (int i = 0; tlist[i]; i++) - targets->insertItem( TQString(TQString::fromLocal8Bit( tlist[i] )) ); - freeStrArr( tlist ); - targets->setCurrentItem( oldTarget == -1 ? defaultTarget : oldTarget ); - TQHBoxLayout *hb = new TQHBoxLayout( hlp, 0, KDsh ); - int spc = kapp->style().pixelMetric( TQStyle::PM_ExclusiveIndicatorWidth ) - + howGroup->insideSpacing(); - hb->addSpacing( spc ); - hb->addWidget( targets ); - connect( targets, TQT_SIGNAL(activated( int )), TQT_SLOT(slotTargetChanged()) ); - } - GSet( 0 ); - - howGroup->setSizePolicy( fp ); - - schedGroup = new TQGroupBox( i18n("Scheduling"), this ); - hlay->addWidget( schedGroup, 0, AlignTop ); - - le_start = new TQLineEdit( schedGroup ); - TQLabel *lab1 = new TQLabel( le_start, i18n("&Start:"), schedGroup ); - - le_timeout = new TQLineEdit( schedGroup ); - TQLabel *lab2 = new TQLabel( le_timeout, i18n("T&imeout:"), schedGroup ); - - cb_force = new TQCheckBox( i18n("&Force after timeout"), schedGroup ); - if (_allowNuke != SHUT_NONE) { - connect( cb_force, TQT_SIGNAL(clicked()), TQT_SLOT(slotWhenChanged()) ); - mayNuke = true; - } else - cb_force->setEnabled( false ); - - TQGridLayout *grid = new TQGridLayout( schedGroup, 0, 0, KDmh, KDsh ); - grid->addRowSpacing( 0, schedGroup->fontMetrics().height() - 5 ); - grid->addWidget( lab1, 1, 0, Qt::AlignRight ); - grid->addWidget( le_start, 1, 1 ); - grid->addWidget( lab2, 2, 0, Qt::AlignRight ); - grid->addWidget( le_timeout, 2, 1 ); - grid->addMultiCellWidget( cb_force, 3,3, 0,1 ); - - schedGroup->setSizePolicy( fp ); - - le_start->setText( "0" ); - if (_defSdMode == SHUT_SCHEDULE) - le_timeout->setText( "-1" ); - else { - le_timeout->setText( "0" ); - if (_defSdMode == SHUT_FORCENOW && cb_force->isEnabled()) - cb_force->setChecked( true ); - } - - complete( schedGroup ); -} - -static int -get_date( const char *str ) -{ - KProcIO prc; - prc << "/bin/date" << "+%s" << "-d" << str; - prc.start( KProcess::Block, false ); - TQString dstr; - if (prc.readln( dstr, false, 0 ) < 0) - return -1; - return dstr.toInt(); -} - -void -TDMShutdown::accept() -{ - if (le_start->text() == "0" || le_start->text() == "now") - sch_st = time( 0 ); - else if (le_start->text()[0] == '+') - sch_st = time( 0 ) + le_start->text().toInt(); - else if ((sch_st = get_date( le_start->text().latin1() )) < 0) { - MsgBox( errorbox, i18n("Entered start date is invalid.") ); - le_start->setFocus(); - return; - } - if (le_timeout->text() == "-1" || le_timeout->text().startsWith( "inf" )) - sch_to = TO_INF; - else if (le_timeout->text()[0] == '+') - sch_to = sch_st + le_timeout->text().toInt(); - else if ((sch_to = get_date( le_timeout->text().latin1() )) < 0) { - MsgBox( errorbox, i18n("Entered timeout date is invalid.") ); - le_timeout->setFocus(); - return; - } - - inherited::accept(); -} - -void -TDMShutdown::slotTargetChanged() -{ - restart_rb->setChecked( true ); -} - -void -TDMShutdown::slotWhenChanged() -{ - doesNuke = cb_force->isChecked(); - updateNeedRoot(); -} - -void -TDMShutdown::accepted() -{ - GSet( 1 ); - GSendInt( G_Shutdown ); - GSendInt( restart_rb->isChecked() ? SHUT_REBOOT : SHUT_HALT ); - GSendInt( sch_st ); - GSendInt( sch_to ); - GSendInt( cb_force->isChecked() ? SHUT_FORCE : SHUT_CANCEL ); - GSendInt( _allowShutdown == SHUT_ROOT ? 0 : -2 ); - GSendStr( (restart_rb->isChecked() && - targets && targets->currentItem() != oldTarget) ? - targets->currentText().local8Bit().data() : 0 ); - GSet( 0 ); - inherited::accepted(); -} - -void -TDMShutdown::scheduleShutdown( TQWidget *_parent ) -{ - GSet( 1 ); - GSendInt( G_QueryShutdown ); - int how = GRecvInt(); - int start = GRecvInt(); - int timeout = GRecvInt(); - int force = GRecvInt(); - int uid = GRecvInt(); - char *os = GRecvStr(); - GSet( 0 ); - if (how) { - int ret = - TDMCancelShutdown( how, start, timeout, force, uid, os, - _parent ).exec(); - if (!ret) - return; - doShutdown( 0, 0 ); - uid = ret == Authed ? 0 : -1; - } else - uid = -1; - if (os) - free( os ); - TDMShutdown( uid, _parent ).exec(); -} - - -TDMRadioButton::TDMRadioButton( const TQString &label, TQWidget *parent ) - : inherited( label, parent ) -{ -} - -void -TDMRadioButton::mouseDoubleClickEvent( TQMouseEvent * ) -{ - emit doubleClicked(); -} - - -TDMDelayedPushButton::TDMDelayedPushButton( const KGuiItem &item, - TQWidget *parent, - const char *name ) - : inherited( item, parent, name ) - , pop( 0 ) -{ - connect( this, TQT_SIGNAL(pressed()), TQT_SLOT(slotPressed()) ); - connect( this, TQT_SIGNAL(released()), TQT_SLOT(slotReleased()) ); - connect( &popt, TQT_SIGNAL(timeout()), TQT_SLOT(slotTimeout()) ); -} - -void TDMDelayedPushButton::setPopup( TQPopupMenu *p ) -{ - pop = p; - setIsMenuButton( p != 0 ); -} - -void TDMDelayedPushButton::slotPressed() -{ - if (pop) - popt.start( TQApplication::startDragTime() ); -} - -void TDMDelayedPushButton::slotReleased() -{ - popt.stop(); -} - -void TDMDelayedPushButton::slotTimeout() -{ - popt.stop(); - pop->popup( mapToGlobal( rect().bottomLeft() ) ); - setDown( false ); -} - -TDMSlimShutdown::TDMSlimShutdown( TQWidget *_parent ) - : inherited( _parent ) - , targetList( 0 ) -{ - setCaption(i18n("Shutdown TDE")); - - bool doUbuntuLogout = KConfigGroup(KGlobal::config(), "Shutdown").readBoolEntry("doUbuntuLogout", false); - - TQFrame* lfrm = new TQFrame( this ); - TQHBoxLayout* hbuttonbox; - - if(doUbuntuLogout) - { - TQVBoxLayout* vbox = new TQVBoxLayout( this ); - if (has_twin) - lfrm->setFrameStyle( TQFrame::NoFrame ); - else - lfrm->setFrameStyle( TQFrame::StyledPanel | TQFrame::Raised ); - lfrm->setLineWidth( style().pixelMetric( TQStyle::PM_DefaultFrameWidth, lfrm ) ); - // we need to set the minimum size for the logout box, since it - // gets too small if there all options are not available - lfrm->setMinimumSize(300,120); - vbox->addWidget( lfrm ); - vbox = new TQVBoxLayout( lfrm, 2 * KDialog::marginHint(), - 2 * KDialog::spacingHint() ); - - // first line of buttons - hbuttonbox = new TQHBoxLayout( vbox, 8 * KDialog::spacingHint() ); - hbuttonbox->setAlignment( Qt::AlignHCenter ); - - // Reboot - FlatButton* btnReboot = new FlatButton( lfrm ); - btnReboot->setTextLabel( i18n("&Restart"), false ); - btnReboot->setPixmap( DesktopIcon( "reload") ); - int i = btnReboot->textLabel().find( TQRegExp("\\&"), 0 ); // i == 1 - btnReboot->setAccel( "ALT+" + btnReboot->textLabel().lower()[i+1] ) ; - hbuttonbox->addWidget ( btnReboot); - connect(btnReboot, TQT_SIGNAL(clicked()), TQT_SLOT(slotReboot())); - - // Copied completely from the standard restart/shutdown dialog - GSet( 1 ); - GSendInt( G_ListBootOpts ); - if (GRecvInt() == BO_OK) { - targetList = GRecvStrArr( 0 ); - /*int def =*/ GRecvInt(); - int cur = GRecvInt(); - TQPopupMenu *targets = new TQPopupMenu( this ); - btnReboot->setPopupDelay(300); // visually add dropdown - for (int i = 0; targetList[i]; i++) { - TQString t( TQString::fromLocal8Bit( targetList[i] ) ); - targets->insertItem( i == cur ? - i18n("current option in boot loader", - "%1 (current)").arg( t ) : - t, i ); - } - btnReboot->setPopup( targets ); - connect( targets, TQT_SIGNAL(activated(int)), TQT_SLOT(slotReboot(int)) ); - } - GSet( 0 ); - // Copied completely from the standard restart/shutdown dialog - - // Shutdown - FlatButton* btnHalt = new FlatButton( lfrm ); - btnHalt->setTextLabel( i18n("&Turn Off"), false ); - btnHalt->setPixmap( DesktopIcon( "exit") ); - i = btnHalt->textLabel().find( TQRegExp("\\&"), 0 ); // i == 1 - btnHalt->setAccel( "ALT+" + btnHalt->textLabel().lower()[i+1] ) ; - hbuttonbox->addWidget ( btnHalt ); - connect(btnHalt, TQT_SIGNAL(clicked()), TQT_SLOT(slotHalt())); - - // cancel buttonbox - TQHBoxLayout* hbuttonbox2 = new TQHBoxLayout( vbox, 8 * KDialog::spacingHint() ); - hbuttonbox2->setAlignment( Qt::AlignRight ); - - // Back to tdm - KSMPushButton* btnBack = new KSMPushButton( KStdGuiItem::cancel(), lfrm ); - hbuttonbox2->addWidget( btnBack ); - connect(btnBack, TQT_SIGNAL(clicked()), TQT_SLOT(reject())); - } - else - { - TQHBoxLayout *hbox = new TQHBoxLayout( this, KDmh, KDsh ); - if (has_twin) - lfrm->setFrameStyle( TQFrame::NoFrame ); - else - lfrm->setFrameStyle( TQFrame::Panel | TQFrame::Sunken ); - hbox->addWidget( lfrm, AlignCenter ); - // we need to set the minimum size for the logout box, since it - // gets too small if there all options are not available - TQLabel *icon = new TQLabel( lfrm ); - icon->setPixmap( TQPixmap( locate( "data", "tdm/pics/shutdown.jpg" ) ) ); - TQVBoxLayout *iconlay = new TQVBoxLayout( lfrm ); - iconlay->addWidget( icon ); - - TQVBoxLayout *buttonlay = new TQVBoxLayout( hbox, KDsh ); - - buttonlay->addStretch( 1 ); - - KPushButton *btnHalt = new - KPushButton( KGuiItem( i18n("&Turn Off Computer"), "exit" ), this ); - buttonlay->addWidget( btnHalt ); - connect( btnHalt, TQT_SIGNAL(clicked()), TQT_SLOT(slotHalt()) ); - - buttonlay->addSpacing( KDialog::spacingHint() ); - - TDMDelayedPushButton *btnReboot = new - TDMDelayedPushButton( KGuiItem( i18n("&Restart Computer"), "reload" ), this ); - buttonlay->addWidget( btnReboot ); - connect( btnReboot, TQT_SIGNAL(clicked()), TQT_SLOT(slotReboot()) ); - - GSet( 1 ); - GSendInt( G_ListBootOpts ); - if (GRecvInt() == BO_OK) { - targetList = GRecvStrArr( 0 ); - /*int def =*/ GRecvInt(); - int cur = GRecvInt(); - TQPopupMenu *targets = new TQPopupMenu( this ); - for (int i = 0; targetList[i]; i++) { - TQString t( TQString::fromLocal8Bit( targetList[i] ) ); - targets->insertItem( i == cur ? - i18n("current option in boot loader", - "%1 (current)").arg( t ) : - t, i ); - } - btnReboot->setPopup( targets ); - connect( targets, TQT_SIGNAL(activated(int)), TQT_SLOT(slotReboot(int)) ); - } - GSet( 0 ); - - buttonlay->addStretch( 1 ); - - if (_scheduledSd != SHUT_NEVER) { - KPushButton *btnSched = new - KPushButton( KGuiItem( i18n("&Schedule...") ), this ); - buttonlay->addWidget( btnSched ); - connect( btnSched, TQT_SIGNAL(clicked()), TQT_SLOT(slotSched()) ); - - buttonlay->addStretch( 1 ); - } - - buttonlay->addWidget( new KSeparator( this ) ); - - buttonlay->addSpacing( 0 ); - - KPushButton *btnBack = new KPushButton( KStdGuiItem::cancel(), this ); - buttonlay->addWidget( btnBack ); - connect( btnBack, TQT_SIGNAL(clicked()), TQT_SLOT(reject()) ); - - buttonlay->addSpacing( KDialog::spacingHint() ); - } - -} - -TDMSlimShutdown::~TDMSlimShutdown() -{ - freeStrArr( targetList ); -} - -void -TDMSlimShutdown::slotSched() -{ - reject(); - TDMShutdown::scheduleShutdown(); -} - -void -TDMSlimShutdown::slotHalt() -{ - if (checkShutdown( SHUT_HALT, 0 )) - doShutdown( SHUT_HALT, 0 ); -} - -void -TDMSlimShutdown::slotReboot() -{ - if (checkShutdown( SHUT_REBOOT, 0 )) - doShutdown( SHUT_REBOOT, 0 ); -} - -void -TDMSlimShutdown::slotReboot( int opt ) -{ - if (checkShutdown( SHUT_REBOOT, targetList[opt] )) - doShutdown( SHUT_REBOOT, targetList[opt] ); -} - -bool -TDMSlimShutdown::checkShutdown( int type, const char *os ) -{ - reject(); - dpySpec *sess = fetchSessions( lstRemote | lstTTY ); - if (!sess && _allowShutdown != SHUT_ROOT) - return true; - int ret = TDMConfShutdown( -1, sess, type, os ).exec(); - disposeSessions( sess ); - if (ret == Schedule) { - TDMShutdown::scheduleShutdown(); - return false; - } - return ret; -} - -void -TDMSlimShutdown::externShutdown( int type, const char *os, int uid ) -{ - dpySpec *sess = fetchSessions( lstRemote | lstTTY ); - int ret = TDMConfShutdown( uid, sess, type, os ).exec(); - disposeSessions( sess ); - if (ret == Schedule) - TDMShutdown( uid ).exec(); - else if (ret) - doShutdown( type, os ); -} - - -KSMPushButton::KSMPushButton( const KGuiItem &item, - TQWidget *parent, - const char *name) - : KPushButton( item, parent, name), - m_pressed(false) -{ - setDefault( false ); - setAutoDefault ( false ); -} - -void KSMPushButton::keyPressEvent( TQKeyEvent* e ) -{ - switch ( e->key() ) - { - case Key_Enter: - case Key_Return: - case Key_Space: - m_pressed = TRUE; - setDown(true); - emit pressed(); - break; - case Key_Escape: - e->ignore(); - break; - default: - e->ignore(); - } - - TQPushButton::keyPressEvent(e); -} - - -void KSMPushButton::keyReleaseEvent( TQKeyEvent* e ) -{ - switch ( e->key() ) - { - case Key_Space: - case Key_Enter: - case Key_Return: - if ( m_pressed ) - { - setDown(false); - m_pressed = FALSE; - emit released(); - emit clicked(); - } - break; - case Key_Escape: - e->ignore(); - break; - default: - e->ignore(); - - } -} - -FlatButton::FlatButton( TQWidget *parent, const char *name ) - : TQToolButton( parent, name/*, TQt::WNoAutoErase*/ ), - m_pressed(false) -{ - init(); -} - - -FlatButton::~FlatButton() {} - -void FlatButton::init() -{ - setUsesTextLabel(true); - setUsesBigPixmap(true); - setAutoRaise(true); - setTextPosition( TQToolButton::Under ); - setFocusPolicy(TQ_StrongFocus); - } - - -void FlatButton::keyPressEvent( TQKeyEvent* e ) -{ - switch ( e->key() ) - { - case Key_Enter: - case Key_Return: - case Key_Space: - m_pressed = TRUE; - setDown(true); - emit pressed(); - break; - case Key_Escape: - e->ignore(); - break; - default: - e->ignore(); - } - - TQToolButton::keyPressEvent(e); -} - -void FlatButton::keyReleaseEvent( TQKeyEvent* e ) -{ - switch ( e->key() ) - { - case Key_Space: - case Key_Enter: - case Key_Return: - if ( m_pressed ) - { - setDown(false); - m_pressed = FALSE; - emit released(); - emit clicked(); - } - break; - case Key_Escape: - e->ignore(); - break; - default: - e->ignore(); - } - -} - - - -TDMConfShutdown::TDMConfShutdown( int _uid, dpySpec *sess, int type, const char *os, - TQWidget *_parent ) - : inherited( _uid, _parent ) -{ -#ifdef HAVE_VTS - if (type == SHUT_CONSOLE) - willShut = false; -#endif - box->addWidget( new TQLabel( TQString( "<qt><center><b><nobr>" - "%1%2" - "</nobr></b></center><br></qt>" ) - .arg( (type == SHUT_HALT) ? - i18n("Turn Off Computer") : -#ifdef HAVE_VTS - (type == SHUT_CONSOLE) ? - i18n("Switch to Console") : -#endif - i18n("Restart Computer") ) - .arg( os ? - i18n("<br>(Next boot: %1)") - .arg( TQString::fromLocal8Bit( os ) ) : - TQString() ), - this ) ); - - if (sess) { - if (willShut && _scheduledSd != SHUT_NEVER) - maySched = true; - mayNuke = doesNuke = true; - if (_allowNuke == SHUT_NONE) - mayOk = false; - TQLabel *lab = new TQLabel( mayOk ? - i18n("Abort active sessions:") : - i18n("No permission to abort active sessions:"), - this ); - box->addWidget( lab ); - TQListView *lv = new TQListView( this ); - lv->setSelectionMode( TQListView::NoSelection ); - lv->setAllColumnsShowFocus( true ); - lv->header()->setResizeEnabled( false ); - lv->addColumn( i18n("Session") ); - lv->addColumn( i18n("Location") ); - TQListViewItem *itm; - int ns = 0; - TQString user, loc; - do { - decodeSess( sess, user, loc ); - itm = new TQListViewItem( lv, user, loc ); - sess = sess->next, ns++; - } while (sess); - int fw = lv->frameWidth() * 2; - lv->setFixedHeight( fw + lv->header()->height() + - itm->height() * (ns < 3 ? 3 : ns > 10 ? 10 : ns) ); - box->addWidget( lv ); - complete( lv ); - } else - complete( 0 ); -} - - -TDMCancelShutdown::TDMCancelShutdown( int how, int start, int timeout, - int force, int uid, const char *os, - TQWidget *_parent ) - : inherited( -1, _parent ) -{ - if (force == SHUT_FORCE) { - if (_allowNuke == SHUT_NONE) - mayOk = false; - else if (_allowNuke == SHUT_ROOT) - mayNuke = doesNuke = true; - } - TQLabel *lab = new TQLabel( mayOk ? - i18n("Abort pending shutdown:") : - i18n("No permission to abort pending shutdown:"), - this ); - box->addWidget( lab ); - TQDateTime qdt; - TQString strt, end; - if (start < time( 0 )) - strt = i18n("now"); - else { - qdt.setTime_t( start ); - strt = qdt.toString( Qt::LocalDate ); - } - if (timeout == TO_INF) - end = i18n("infinite"); - else { - qdt.setTime_t( timeout ); - end = qdt.toString( Qt::LocalDate ); - } - TQString trg = - i18n("Owner: %1" - "\nType: %2%5" - "\nStart: %3" - "\nTimeout: %4") - .arg( uid == -2 ? - i18n("console user") : - uid == -1 ? - i18n("control socket") : - KUser( uid ).loginName() ) - .arg( how == SHUT_HALT ? - i18n("turn off computer") : - i18n("restart computer") ) - .arg( strt ).arg( end ) - .arg( os ? - i18n("\nNext boot: %1").arg( TQString::fromLocal8Bit( os ) ) : - TQString() ); - if (timeout != TO_INF) - trg += i18n("\nAfter timeout: %1") - .arg( force == SHUT_FORCE ? - i18n("abort all sessions") : - force == SHUT_FORCEMY ? - i18n("abort own sessions") : - i18n("cancel shutdown") ); - lab = new TQLabel( trg, this ); - box->addWidget( lab ); - complete( 0 ); -} - -#include "tdmshutdown.moc" |