/* Copyright (C) 1997-1998 Thomas Tanghus (tanghus@earthling.net) 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 "kdm-shut.h" #include #include "kbackedcombobox.h" #include #include #include #include #include #include #include #include #include extern KConfig *config; KDMSessionsWidget::KDMSessionsWidget(QWidget *parent) : QWidget(parent) { QString wtstr; QGroupBox *group0 = new QGroupBox(i18n("Allow Shutdown"), this); sdlcombo = new KComboBox(group0); sdlcombo->setEditable(false); sdllabel = new QLabel(i18nc("shutdown request origin", "&Local:"), group0); sdllabel->setBuddy(sdlcombo); sdlcombo->insertItem(SdAll, i18nc("@item:inlistbox allow shutdown", "Everybody")); sdlcombo->insertItem(SdRoot, i18nc("@item:inlistbox allow shutdown", "Only Root")); sdlcombo->insertItem(SdNone, i18nc("@item:inlistbox allow shutdown", "Nobody")); connect(sdlcombo, SIGNAL(activated(int)), SIGNAL(changed())); sdrcombo = new KComboBox(group0); sdrcombo->setEditable(false); sdrlabel = new QLabel(i18nc("shutdown request origin", "&Remote:"), group0); sdrlabel->setBuddy(sdrcombo); sdrcombo->insertItem(SdAll, i18nc("@item:inlistbox allow shutdown", "Everybody")); sdrcombo->insertItem(SdRoot, i18nc("@item:inlistbox allow shutdown", "Only Root")); sdrcombo->insertItem(SdNone, i18nc("@item:inlistbox allow shutdown", "Nobody")); connect(sdrcombo, SIGNAL(activated(int)), SIGNAL(changed())); group0->setWhatsThis(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:
    " "
  • Everybody: everybody can shutdown the computer using KDM
  • " "
  • Only root: KDM will only allow shutdown after the user has " "entered the root password
  • " "
  • Nobody: nobody can shutdown the computer using KDM
")); QGroupBox *group1 = new QGroupBox(i18nc( "@title:group shell commands for shutdown", "Commands"), this); shutdown_lined = new KUrlRequester(group1); QLabel *shutdown_label = new QLabel(i18nc("command for ...", "H&alt:"), group1); shutdown_label->setBuddy(shutdown_lined); connect(shutdown_lined, SIGNAL(textChanged(QString)), SIGNAL(changed())); wtstr = i18n("Command to initiate the system halt. Typical value: /sbin/halt"); shutdown_label->setWhatsThis(wtstr); shutdown_lined->setWhatsThis(wtstr); restart_lined = new KUrlRequester(group1); QLabel *restart_label = new QLabel(i18nc("command for ...", "Reb&oot:"), group1); restart_label->setBuddy(restart_lined); connect(restart_lined, SIGNAL(textChanged(QString)), SIGNAL(changed())); wtstr = i18n("Command to initiate the system reboot. Typical value: /sbin/reboot"); restart_label->setWhatsThis(wtstr); restart_lined->setWhatsThis(wtstr); QGroupBox *group4 = new QGroupBox(i18nc("@title:group", "Miscellaneous"), this); bm_combo = new KBackedComboBox(group4); bm_combo->insertItem("None", i18nc("boot manager", "None")); bm_combo->insertItem("Grub", i18n("Grub")); bm_combo->insertItem("Grub2", i18n("Grub2")); bm_combo->insertItem("Burg", i18n("Burg")); #if defined(__linux__) && (defined(__i386__) || defined(__amd64__)) bm_combo->insertItem("Lilo", i18n("Lilo")); #endif QLabel *bm_label = new QLabel(i18n("Boot manager:"), group4); bm_label->setBuddy(bm_combo); connect(bm_combo, SIGNAL(activated(int)), SIGNAL(changed())); wtstr = i18n("Enable boot options in the \"Shutdown...\" dialog."); bm_label->setWhatsThis(wtstr); bm_combo->setWhatsThis(wtstr); QBoxLayout *main = new QVBoxLayout(this); main->setMargin(10); QGridLayout *lgroup0 = new QGridLayout(group0); lgroup0->setSpacing(10); QGridLayout *lgroup1 = new QGridLayout(group1); lgroup1->setSpacing(10); QGridLayout *lgroup4 = new QGridLayout(group4); lgroup4->setSpacing(10); main->addWidget(group0); main->addWidget(group1); main->addWidget(group4); main->addStretch(); lgroup0->setColumnMinimumWidth(2, KDialog::spacingHint() * 2); lgroup0->setColumnStretch(1, 1); lgroup0->setColumnStretch(4, 1); lgroup0->addWidget(sdllabel, 1, 0); lgroup0->addWidget(sdlcombo, 1, 1); lgroup0->addWidget(sdrlabel, 1, 3); lgroup0->addWidget(sdrcombo, 1, 4); lgroup1->setColumnMinimumWidth(2, KDialog::spacingHint() * 2); lgroup1->setColumnStretch(1, 1); lgroup1->setColumnStretch(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->addWidget(bm_label, 1, 0); lgroup4->addWidget(bm_combo, 1, 1); lgroup4->setColumnStretch(2, 1); main->activate(); } void KDMSessionsWidget::writeSD(KComboBox *combo, KConfigGroup group) { QString what; switch (combo->currentIndex()) { case SdAll: what = "All"; break; case SdRoot: what = "Root"; break; default: what = "None"; break; } group.writeEntry("AllowShutdown", what); } void KDMSessionsWidget::save() { writeSD(sdlcombo, config->group("X-:*-Core")); writeSD(sdrcombo, config->group("X-*-Core")); KConfigGroup configGrp = config->group("Shutdown"); configGrp.writeEntry("HaltCmd", shutdown_lined->url().path(), KConfig::Persistent); configGrp.writeEntry("RebootCmd", restart_lined->url().path(), KConfig::Persistent); configGrp.writeEntry("BootManager", bm_combo->currentId()); } void KDMSessionsWidget::readSD(KComboBox *combo, const QString &def, KConfigGroup group) { QString str = group.readEntry("AllowShutdown", def); SdModes sdMode; if (str == "All") sdMode = SdAll; else if (str == "Root") sdMode = SdRoot; else sdMode = SdNone; combo->setCurrentIndex(sdMode); } void KDMSessionsWidget::load() { readSD(sdlcombo, "All", config->group("X-:*-Core")); readSD(sdrcombo, "Root", config->group("X-*-Core")); KConfigGroup configGrp = config->group("Shutdown"); restart_lined->setUrl(configGrp.readEntry("RebootCmd", REBOOT_CMD)); shutdown_lined->setUrl(configGrp.readEntry("HaltCmd", HALT_CMD)); bm_combo->setCurrentId(configGrp.readEntry("BootManager", "None")); } void KDMSessionsWidget::defaults() { restart_lined->setUrl(KUrl(REBOOT_CMD)); shutdown_lined->setUrl(KUrl(HALT_CMD)); sdlcombo->setCurrentIndex(SdAll); sdrcombo->setCurrentIndex(SdRoot); bm_combo->setCurrentId("None"); } #include "kdm-shut.moc"