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 | 37333bf25ad9a4c538250f5af2f9f1d666362883 (patch) | |
tree | c45e8df5b9efbffe07eb3d9340df7811c7e16943 /ksysv/PreferencesDialog.cpp | |
download | tdeadmin-37333bf25ad9a4c538250f5af2f9f1d666362883.tar.gz tdeadmin-37333bf25ad9a4c538250f5af2f9f1d666362883.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/kdeadmin@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'ksysv/PreferencesDialog.cpp')
-rw-r--r-- | ksysv/PreferencesDialog.cpp | 291 |
1 files changed, 291 insertions, 0 deletions
diff --git a/ksysv/PreferencesDialog.cpp b/ksysv/PreferencesDialog.cpp new file mode 100644 index 0000000..b0a2c42 --- /dev/null +++ b/ksysv/PreferencesDialog.cpp @@ -0,0 +1,291 @@ +// (c) 2000 Peter Putzer + +#include <qframe.h> +#include <qlayout.h> +#include <qlabel.h> +#include <qpushbutton.h> +#include <qvbox.h> +#include <qhbox.h> +#include <qgrid.h> +#include <qdir.h> +#include <qcheckbox.h> + +#include <kdebug.h> +#include <klocale.h> +#include <klineedit.h> +#include <kiconloader.h> +#include <kcolorbutton.h> +#include <kapplication.h> +#include <kmessagebox.h> + +#include "ksv_conf.h" +// #include "ksvcolorconfig.h" +#include "ksvmiscconfig.h" +#include "ksvpathconfig.h" +#include "ksvlookandfeel.h" +// #include "ksvfontconfig.h" +#include "ksv_core.h" + +#include "PreferencesDialog.h" + +KSVPreferences::KSVPreferences (QWidget* parent) + : KDialogBase (IconList, i18n("Configure"), Help|Ok|Apply|Cancel, Ok, + parent, "KSysV Preferences", true, true), + mConfig (KSVConfig::self()) +{ + setMinimumSize (sizeHint ()); + + /** + * Look & Feel Page + */ + QFrame* lafPage = addPage (i18n ("Look & Feel"), QString::null, DesktopIcon ("colorize", 32)); + mLookAndFeel = new KSVLookAndFeel (lafPage); + connect( mLookAndFeel, SIGNAL( configChanged() ), this, SLOT( slotChanged() ) ); + + QVBoxLayout* lafLayout = new QVBoxLayout (lafPage); + lafLayout->addWidget (mLookAndFeel); + +// /** +// * Colors Page +// */ +// QFrame* colorPage = addPage (i18n("Colors"), QString::null, DesktopIcon ("colorize", 32)); +// mColorConfig = new KSVColorConfig(colorPage); + +// QVBoxLayout* colorLayout = new QVBoxLayout(colorPage); +// colorLayout->addWidget(mColorConfig); + +// /** +// * Fonts Page +// */ +// QFrame* fontPage = addPage (i18n("Fonts"), QString::null, DesktopIcon ("fonts", 32)); +// mFontConfig = new KSVFontConfig(fontPage); + +// QVBoxLayout* fontLayout = new QVBoxLayout (fontPage); +// fontLayout->addWidget(mFontConfig); + + /** + * Paths Page + */ + QFrame* pathPage = addPage (i18n ("Paths"), QString::null, DesktopIcon ("kfm", 32)); + mPathConfig = new KSVPathConfig(pathPage); + connect( mPathConfig, SIGNAL( configChanged() ), this, SLOT( slotChanged() ) ); + + QVBoxLayout *pathLayout = new QVBoxLayout (pathPage); + pathLayout->addWidget (mPathConfig); + + /** + * Miscellaneous Page + */ + QFrame* miscPage = addPage (i18n ("Miscellaneous"), i18n("Settings Not Fitting Anywhere Else"), + DesktopIcon ("misc", 32)); + mMiscConfig = new KSVMiscConfig(miscPage); + connect( mMiscConfig, SIGNAL( configChanged() ), this, SLOT( slotChanged() ) ); + + QVBoxLayout *miscLayout = new QVBoxLayout (miscPage); + miscLayout->addWidget (mMiscConfig); + + connect (mMiscConfig->mShowAll, SIGNAL (clicked()), this, SLOT (showAllMessages())); + + reReadConfig(); + enableButton( Apply, false ); + configChanged = false; +} + +KSVPreferences::~KSVPreferences () +{ +} + +void KSVPreferences::slotChanged() +{ + enableButton( Apply, true ); + configChanged = true; +} + +void KSVPreferences::reReadConfig() +{ + mPathConfig->mRunlevelPath->setText(mConfig->runlevelPath()); + mPathConfig->mServicesPath->setText(mConfig->scriptPath()); + + mLookAndFeel->mNewNormal->setColor (mConfig->newNormalColor()); + mLookAndFeel->mNewSelected->setColor (mConfig->newSelectedColor()); + + mLookAndFeel->mChangedNormal->setColor (mConfig->changedNormalColor ()); + mLookAndFeel->mChangedSelected->setColor (mConfig->changedSelectedColor ()); + + mLookAndFeel->setServiceFont (mConfig->serviceFont()); + mLookAndFeel->setNumberFont (mConfig->numberFont()); + + reReadMessages(); +} + +void KSVPreferences::slotCancel () +{ + reject(); + reReadConfig(); +} + +void KSVPreferences::slotApply () +{ + if (checkPaths()) + { + setConfig(); + enableButton( Apply, false ); + configChanged = false; + } +} + +bool KSVPreferences::checkPaths () +{ + bool result = true; + + if (!QDir(mPathConfig->mServicesPath->text()).exists()) + result = (KMessageBox::warningContinueCancel(this, + i18n ("The service folder you specified does " + "not exist.\n" + "You can continue if you want to, " + "or you can click Cancel " + "to select a new folder."), + i18n ("Warning")) + != KMessageBox::Cancel); + + if (!QDir(mPathConfig->mRunlevelPath->text()).exists()) + result = result + && (KMessageBox::warningContinueCancel(this, + i18n ("The runlevel folder you specified does " + "not exist.\n" + "You can continue if you want to, " + "or you can click Cancel " + "to select a new folder."), + i18n ("Warning")) + != KMessageBox::Cancel); + + return result; +} + +void KSVPreferences::slotOk () +{ + if (checkPaths()) + { + accept(); + setConfig (); + } +} + +QColor KSVPreferences::newNormal() const +{ + return mLookAndFeel->mNewNormal->color(); +} + +QColor KSVPreferences::newSelected() const +{ + return mLookAndFeel->mNewSelected->color(); +} + +QColor KSVPreferences::changedNormal() const +{ + return mLookAndFeel->mChangedNormal->color(); +} + +QColor KSVPreferences::changedSelected() const +{ + return mLookAndFeel->mChangedSelected->color(); +} + + +KSVPreferences* KSVPreferences::self () +{ + static KSVPreferences* prefs = new KSVPreferences (kapp->mainWidget()); + + return prefs; +} + +void KSVPreferences::setConfig () +{ + // if necessary, update service path + { + QString sp = mPathConfig->mServicesPath->text(); + if (sp != mConfig->scriptPath()) + { + mConfig->setScriptPath (sp); + + emit updateServicesPath (); + } + } + + // if necesssary, update root path for runlevels + { + QString rp = mPathConfig->mRunlevelPath->text(); + if (rp != mConfig->runlevelPath ()) + { + mConfig->setRunlevelPath (rp); + + emit updateRunlevelsPath (); + } + } + + // if necessary, update miscellaneous settings + { + mConfig->setShowMessage (ksv::RunlevelsReadOnly, + mMiscConfig->mWarnReadOnly->isChecked()); + mConfig->setShowMessage (ksv::CouldNotGenerateSortingNumber, + mMiscConfig->mWarnSortingNumber->isChecked()); + } + + // if necessary, update colors + { + QColor nn = newNormal(); + QColor ns = newSelected(); + QColor cn = changedNormal(); + QColor cs = changedSelected(); + + if (nn != mConfig->newNormalColor() || + ns != mConfig->newSelectedColor() || + cn != mConfig->changedNormalColor() || + cs != mConfig->changedSelectedColor()) + { + mConfig->setNewNormalColor (nn); + mConfig->setNewSelectedColor (ns); + mConfig->setChangedNormalColor (cn); + mConfig->setChangedSelectedColor (cs); + + emit updateColors (); + } + } + + // if necessary, update fonts + { + const QFont& sf = mLookAndFeel->serviceFont(); + const QFont& ns = mLookAndFeel->numberFont(); + + if (sf != mConfig->serviceFont() || ns != mConfig->numberFont()) + { + mConfig->setServiceFont (sf); + mConfig->setNumberFont (ns); + + emit updateFonts(); + } + } +} + +void KSVPreferences::showAllMessages () +{ + KMessageBox::enableAllMessages (); + + // update checkboxes + reReadMessages(); +} + +void KSVPreferences::reReadMessages() +{ + mMiscConfig->mWarnReadOnly->setChecked (mConfig->showMessage (ksv::RunlevelsReadOnly)); + mMiscConfig->mWarnSortingNumber->setChecked (mConfig->showMessage (ksv::CouldNotGenerateSortingNumber)); +} + +void KSVPreferences::showEvent (QShowEvent* e) +{ + reReadMessages(); + + KDialogBase::showEvent (e); +} + +#include "PreferencesDialog.moc" |