diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 4aed2c8219774f5d797760606b8489a92ddc5163 (patch) | |
tree | 3f8c130f7d269626bf6a9447407ef6c35954426a /kcontrol/kdm/kdm-shut.cpp | |
download | tdebase-4aed2c8219774f5d797760606b8489a92ddc5163.tar.gz tdebase-4aed2c8219774f5d797760606b8489a92ddc5163.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kcontrol/kdm/kdm-shut.cpp')
-rw-r--r-- | kcontrol/kdm/kdm-shut.cpp | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/kcontrol/kdm/kdm-shut.cpp b/kcontrol/kdm/kdm-shut.cpp new file mode 100644 index 000000000..c958e1464 --- /dev/null +++ b/kcontrol/kdm/kdm-shut.cpp @@ -0,0 +1,227 @@ +/* This file is part of the KDE Display Manager Configuration package + Copyright (C) 1997-1998 Thomas Tanghus ([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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include <unistd.h> +#include <sys/types.h> + + +#include <qcheckbox.h> +#include <qcombobox.h> +#include <qlabel.h> +#include <qlayout.h> +#include <qwhatsthis.h> + +#include <ksimpleconfig.h> +#include <karrowbutton.h> +#include <klineedit.h> +#include <klocale.h> +#include <kdialog.h> +#include <kurlrequester.h> + +#include "kdm-shut.h" +#include "kbackedcombobox.h" + +extern KSimpleConfig *config; + + +KDMSessionsWidget::KDMSessionsWidget(QWidget *parent, const char *name) + : QWidget(parent, name) +{ + QString wtstr; + + + QGroupBox *group0 = new QGroupBox( i18n("Allow Shutdown"), this ); + + sdlcombo = new QComboBox( FALSE, group0 ); + sdllabel = new QLabel (sdlcombo, i18n ("&Local:"), group0); + sdlcombo->insertItem(i18n("Everybody"), SdAll); + sdlcombo->insertItem(i18n("Only Root"), SdRoot); + sdlcombo->insertItem(i18n("Nobody"), SdNone); + connect(sdlcombo, SIGNAL(activated(int)), SLOT(changed())); + sdrcombo = new QComboBox( FALSE, group0 ); + sdrlabel = new QLabel (sdrcombo, i18n ("&Remote:"), group0); + sdrcombo->insertItem(i18n("Everybody"), SdAll); + sdrcombo->insertItem(i18n("Only Root"), SdRoot); + sdrcombo->insertItem(i18n("Nobody"), SdNone); + connect(sdrcombo, SIGNAL(activated(int)), SLOT(changed())); + QWhatsThis::add( group0, i18n("Here you can select who is allowed to shutdown" + " the computer using KDM. You can specify different values for local (console) and remote displays. " + "Possible values are:<ul>" + " <li><em>Everybody:</em> everybody can shutdown the computer using KDM</li>" + " <li><em>Only root:</em> KDM will only allow shutdown after the user has entered the root password</li>" + " <li><em>Nobody:</em> nobody can shutdown the computer using KDM</li></ul>") ); + + + QGroupBox *group1 = new QGroupBox( i18n("Commands"), this ); + + shutdown_lined = new KURLRequester(group1); + QLabel *shutdown_label = new QLabel(shutdown_lined, i18n("H&alt:"), group1); + connect(shutdown_lined, SIGNAL(textChanged(const QString&)), + SLOT(changed())); + wtstr = i18n("Command to initiate the system halt. Typical value: /sbin/halt"); + QWhatsThis::add( shutdown_label, wtstr ); + QWhatsThis::add( shutdown_lined, wtstr ); + + restart_lined = new KURLRequester(group1); + QLabel *restart_label = new QLabel(restart_lined, i18n("Reb&oot:"), group1); + connect(restart_lined, SIGNAL(textChanged(const QString&)), + SLOT(changed())); + wtstr = i18n("Command to initiate the system reboot. Typical value: /sbin/reboot"); + QWhatsThis::add( restart_label, wtstr ); + QWhatsThis::add( restart_lined, wtstr ); + + + QGroupBox *group4 = new QGroupBox( i18n("Miscellaneous"), this ); + + bm_combo = new KBackedComboBox( group4 ); + bm_combo->insertItem("None", i18n("boot manager", "None")); + bm_combo->insertItem("Grub", i18n("Grub")); +#if defined(__linux__) && ( defined(__i386__) || defined(__amd64__) ) + bm_combo->insertItem("Lilo", i18n("Lilo")); +#endif + QLabel *bm_label = new QLabel( bm_combo, i18n("Boot manager:"), group4 ); + connect(bm_combo, SIGNAL(activated(int)), SLOT(changed())); + wtstr = i18n("Enable boot options in the \"Shutdown...\" dialog."); + QWhatsThis::add( bm_label, wtstr ); + QWhatsThis::add( bm_combo, wtstr ); + + QBoxLayout *main = new QVBoxLayout( this, 10 ); + QGridLayout *lgroup0 = new QGridLayout( group0, 1, 1, 10); + QGridLayout *lgroup1 = new QGridLayout( group1, 1, 1, 10); + QGridLayout *lgroup4 = new QGridLayout( group4, 1, 1, 10); + + main->addWidget(group0); + main->addWidget(group1); + main->addWidget(group4); + main->addStretch(); + + lgroup0->addRowSpacing(0, group0->fontMetrics().height()/2); + lgroup0->addColSpacing(2, KDialog::spacingHint() * 2); + lgroup0->setColStretch(1, 1); + lgroup0->setColStretch(4, 1); + lgroup0->addWidget(sdllabel, 1, 0); + lgroup0->addWidget(sdlcombo, 1, 1); + lgroup0->addWidget(sdrlabel, 1, 3); + lgroup0->addWidget(sdrcombo, 1, 4); + + lgroup1->addRowSpacing(0, group1->fontMetrics().height()/2); + lgroup1->addColSpacing(2, KDialog::spacingHint() * 2); + lgroup1->setColStretch(1, 1); + lgroup1->setColStretch(4, 1); + lgroup1->addWidget(shutdown_label, 1, 0); + lgroup1->addWidget(shutdown_lined, 1, 1); + lgroup1->addWidget(restart_label, 1, 3); + lgroup1->addWidget(restart_lined, 1, 4); + + lgroup4->addRowSpacing(0, group4->fontMetrics().height()/2); + lgroup4->addWidget(bm_label, 1, 0); + lgroup4->addWidget(bm_combo, 1, 1); + lgroup4->setColStretch(2, 1); + + main->activate(); + +} + +void KDMSessionsWidget::makeReadOnly() +{ + sdlcombo->setEnabled(false); + sdrcombo->setEnabled(false); + + restart_lined->lineEdit()->setReadOnly(true); + restart_lined->button()->setEnabled(false); + shutdown_lined->lineEdit()->setReadOnly(true); + shutdown_lined->button()->setEnabled(false); + + bm_combo->setEnabled(false); +} + +void KDMSessionsWidget::writeSD(QComboBox *combo) +{ + QString what; + switch (combo->currentItem()) { + case SdAll: what = "All"; break; + case SdRoot: what = "Root"; break; + default: what = "None"; break; + } + config->writeEntry( "AllowShutdown", what); +} + +void KDMSessionsWidget::save() +{ + config->setGroup("X-:*-Core"); + writeSD(sdlcombo); + + config->setGroup("X-*-Core"); + writeSD(sdrcombo); + + config->setGroup("Shutdown"); + config->writeEntry("HaltCmd", shutdown_lined->url(), true); + config->writeEntry("RebootCmd", restart_lined->url(), true); + + config->writeEntry("BootManager", bm_combo->currentId()); +} + +void KDMSessionsWidget::readSD(QComboBox *combo, QString def) +{ + QString str = config->readEntry("AllowShutdown", def); + SdModes sdMode; + if(str == "All") + sdMode = SdAll; + else if(str == "Root") + sdMode = SdRoot; + else + sdMode = SdNone; + combo->setCurrentItem(sdMode); +} + +void KDMSessionsWidget::load() +{ + config->setGroup("X-:*-Core"); + readSD(sdlcombo, "All"); + + config->setGroup("X-*-Core"); + readSD(sdrcombo, "Root"); + + config->setGroup("Shutdown"); + restart_lined->setURL(config->readEntry("RebootCmd", "/sbin/reboot")); + shutdown_lined->setURL(config->readEntry("HaltCmd", "/sbin/halt")); + + bm_combo->setCurrentId(config->readEntry("BootManager", "None")); +} + + + +void KDMSessionsWidget::defaults() +{ + restart_lined->setURL("/sbin/reboot"); + shutdown_lined->setURL("/sbin/halt"); + + sdlcombo->setCurrentItem(SdAll); + sdrcombo->setCurrentItem(SdRoot); + + bm_combo->setCurrentId("None"); +} + + +void KDMSessionsWidget::changed() +{ + emit changed(true); +} + +#include "kdm-shut.moc" |