diff options
Diffstat (limited to 'kcontrol/smserver/kcmsmserver.cpp')
-rw-r--r-- | kcontrol/smserver/kcmsmserver.cpp | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/kcontrol/smserver/kcmsmserver.cpp b/kcontrol/smserver/kcmsmserver.cpp new file mode 100644 index 000000000..99f1b729a --- /dev/null +++ b/kcontrol/smserver/kcmsmserver.cpp @@ -0,0 +1,145 @@ +/* + * kcmsmserver.cpp + * Copyright (c) 2000,2002 Oswald Buddenhagen <ossi@kde.org> + * + * based on kcmtaskbar.cpp + * Copyright (c) 2000 Kurt Granroth <granroth@kde.org> + * + * 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 + */ +#include <tqbuttongroup.h> +#include <tqcheckbox.h> +#include <tqlayout.h> +#include <tqradiobutton.h> + +#include <dcopclient.h> + +#include <tdeapplication.h> +#include <tdeconfig.h> +#include <kgenericfactory.h> +#include <klineedit.h> + +#include "kcmsmserver.h" +#include "smserverconfigimpl.h" + +typedef KGenericFactory<SMServerConfig, TQWidget > SMSFactory; +K_EXPORT_COMPONENT_FACTORY (kcm_smserver, SMSFactory("kcmsmserver") ) + +SMServerConfig::SMServerConfig( TQWidget *parent, const char* name, const TQStringList & ) + : TDECModule (SMSFactory::instance(), parent, name) +{ + setQuickHelp( i18n("<h1>Session Manager</h1>" + " You can configure the session manager here." + " This includes options such as whether or not the session exit (logout)" + " should be confirmed, whether the session should be restored again when logging in" + " and whether the computer should be automatically shut down after session" + " exit by default.")); + + TQVBoxLayout *topLayout = new TQVBoxLayout(this); + dialog = new SMServerConfigImpl(this); + connect(dialog, TQT_SIGNAL(changed()), TQT_SLOT(changed())); + + dialog->show(); + topLayout->add(dialog); + load(); + +} + +void SMServerConfig::load() +{ + load( false ); +} + +void SMServerConfig::load(bool useDefaults ) +{ + TDEConfig *c = new TDEConfig("ksmserverrc", false, false); + c->setReadDefaults( useDefaults ); + c->setGroup("General"); + dialog->confirmLogoutCheck->setChecked(c->readBoolEntry("confirmLogout", true)); + bool en = c->readBoolEntry("offerShutdown", true); + dialog->offerShutdownCheck->setChecked(en); + dialog->sdGroup->setEnabled(en); + + TQString s = c->readEntry( "loginMode" ); + if ( s == "default" ) + dialog->emptySessionRadio->setChecked(true); + else if ( s == "restoreSavedSession" ) + dialog->savedSessionRadio->setChecked(true); + else // "restorePreviousLogout" + dialog->previousSessionRadio->setChecked(true); + + switch (c->readNumEntry("shutdownType", int(TDEApplication::ShutdownTypeNone))) { + case int(TDEApplication::ShutdownTypeHalt): + dialog->haltRadio->setChecked(true); + break; + case int(TDEApplication::ShutdownTypeReboot): + dialog->rebootRadio->setChecked(true); + break; + default: + dialog->logoutRadio->setChecked(true); + break; + } + dialog->excludeLineedit->setText( c->readEntry("excludeApps")); + + c->setGroup("Logout"); + dialog->showLogoutStatusDialog->setChecked(c->readBoolEntry("showLogoutStatusDlg", true)); + dialog->showFadeAway->setChecked(c->readBoolEntry("doFadeaway", true)); + dialog->showFancyFadeAway->setChecked(c->readBoolEntry("doFancyLogout", true)); + dialog->showFancyFadeAway->setEnabled(dialog->confirmLogoutCheck->isChecked() && dialog->showFadeAway->isChecked()), + + delete c; + + emit changed(useDefaults); +} + +void SMServerConfig::save() +{ + TDEConfig *c = new TDEConfig("ksmserverrc", false, false); + c->setGroup("General"); + c->writeEntry( "confirmLogout", dialog->confirmLogoutCheck->isChecked()); + c->writeEntry( "offerShutdown", dialog->offerShutdownCheck->isChecked()); + + TQString s = "restorePreviousLogout"; + if ( dialog->emptySessionRadio->isChecked() ) + s = "default"; + else if ( dialog->savedSessionRadio->isChecked() ) + s = "restoreSavedSession"; + c->writeEntry( "loginMode", s ); + + c->writeEntry( "shutdownType", + dialog->haltRadio->isChecked() ? + int(TDEApplication::ShutdownTypeHalt) : + dialog->rebootRadio->isChecked() ? + int(TDEApplication::ShutdownTypeReboot) : + int(TDEApplication::ShutdownTypeNone)); + c->writeEntry("excludeApps", dialog->excludeLineedit->text()); + c->setGroup("Logout"); + c->writeEntry( "showLogoutStatusDlg", dialog->showLogoutStatusDialog->isChecked()); + c->writeEntry( "doFadeaway", dialog->showFadeAway->isChecked()); + c->writeEntry( "doFancyLogout", dialog->showFancyFadeAway->isChecked()); + c->sync(); + delete c; + + // update the k menu if necessary + TQByteArray data; + kapp->dcopClient()->send( "kicker", "kicker", "configure()", data ); +} + +void SMServerConfig::defaults() +{ + load( true ); +} + +#include "kcmsmserver.moc" + |