summaryrefslogtreecommitdiffstats
path: root/kcontrol/screensaver/advanceddialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kcontrol/screensaver/advanceddialog.cpp')
-rw-r--r--kcontrol/screensaver/advanceddialog.cpp174
1 files changed, 174 insertions, 0 deletions
diff --git a/kcontrol/screensaver/advanceddialog.cpp b/kcontrol/screensaver/advanceddialog.cpp
new file mode 100644
index 000000000..273888960
--- /dev/null
+++ b/kcontrol/screensaver/advanceddialog.cpp
@@ -0,0 +1,174 @@
+#include <klocale.h>
+#include <kstandarddirs.h>
+#include <qcombobox.h>
+#include <kdebug.h>
+
+#include <qwhatsthis.h>
+#include <qstring.h>
+
+#include <config.h>
+
+#include "advanceddialog.h"
+#include "advanceddialogimpl.h"
+#include "stdlib.h"
+
+#include "advanceddialog.moc"
+
+KScreenSaverAdvancedDialog::KScreenSaverAdvancedDialog(QWidget *parent, const char* name)
+ : KDialogBase( parent, name, true, i18n( "Advanced Options" ),
+ Ok | Cancel, Ok, true )
+{
+
+ dialog = new AdvancedDialog(this);
+ setMainWidget(dialog);
+
+ readSettings();
+
+ connect(dialog->qcbPriority, SIGNAL(activated(int)),
+ this, SLOT(slotPriorityChanged(int)));
+
+ connect(dialog->qcbTopLeft, SIGNAL(activated(int)),
+ this, SLOT(slotChangeTopLeftCorner(int)));
+ connect(dialog->qcbTopRight, SIGNAL(activated(int)),
+ this, SLOT(slotChangeTopLeftCorner(int)));
+ connect(dialog->qcbBottomLeft, SIGNAL(activated(int)),
+ this, SLOT(slotChangeTopLeftCorner(int)));
+ connect(dialog->qcbBottomRight, SIGNAL(activated(int)),
+ this, SLOT(slotChangeTopLeftCorner(int)));
+
+#ifndef HAVE_SETPRIORITY
+ dialog->qgbPriority->setEnabled(false);
+#endif
+}
+
+void KScreenSaverAdvancedDialog::readSettings()
+{
+ KConfig *config = new KConfig("kdesktoprc");
+ config->setGroup("ScreenSaver");
+
+ mPriority = config->readNumEntry("Priority", 19);
+ if (mPriority < 0) mPriority = 0;
+ if (mPriority > 19) mPriority = 19;
+
+ dialog->qcbTopLeft->setCurrentItem(config->readNumEntry("ActionTopLeft", 0));
+ dialog->qcbTopRight->setCurrentItem(config->readNumEntry("ActionTopRight", 0));
+ dialog->qcbBottomLeft->setCurrentItem(config->readNumEntry("ActionBottomLeft", 0));
+ dialog->qcbBottomRight->setCurrentItem(config->readNumEntry("ActionBottomRight", 0));
+
+
+ switch(mPriority)
+ {
+ case 19: // Low
+ dialog->qcbPriority->setCurrentItem(0);
+ kdDebug() << "setting low" << endl;
+ break;
+ case 10: // Medium
+ dialog->qcbPriority->setCurrentItem(1);
+ kdDebug() << "setting medium" << endl;
+ break;
+ case 0: // High
+ dialog->qcbPriority->setCurrentItem(2);
+ kdDebug() << "setting high" << endl;
+ break;
+ }
+
+ mChanged = false;
+ delete config;
+}
+
+void KScreenSaverAdvancedDialog::slotPriorityChanged(int val)
+{
+ switch (val)
+ {
+ case 0: // Low
+ mPriority = 19;
+ kdDebug() << "low priority" << endl;
+ break;
+ case 1: // Medium
+ mPriority = 10;
+ kdDebug() << "medium priority" << endl;
+ break;
+ case 2: // High
+ mPriority = 0;
+ kdDebug() << "high priority" << endl;
+ break;
+ }
+ mChanged = true;
+}
+
+void KScreenSaverAdvancedDialog::slotOk()
+{
+ if (mChanged)
+ {
+ KConfig *config = new KConfig("kdesktoprc");
+ config->setGroup( "ScreenSaver" );
+
+ config->writeEntry("Priority", mPriority);
+ config->writeEntry(
+ "ActionTopLeft", dialog->qcbTopLeft->currentItem());
+ config->writeEntry(
+ "ActionTopRight", dialog->qcbTopRight->currentItem());
+ config->writeEntry(
+ "ActionBottomLeft", dialog->qcbBottomLeft->currentItem());
+ config->writeEntry(
+ "ActionBottomRight", dialog->qcbBottomRight->currentItem());
+ config->sync();
+ delete config;
+ }
+ accept();
+}
+
+void KScreenSaverAdvancedDialog::slotChangeBottomRightCorner(int)
+{
+ mChanged = true;
+}
+
+void KScreenSaverAdvancedDialog::slotChangeBottomLeftCorner(int)
+{
+ mChanged = true;
+}
+
+void KScreenSaverAdvancedDialog::slotChangeTopRightCorner(int)
+{
+ mChanged = true;
+}
+
+void KScreenSaverAdvancedDialog::slotChangeTopLeftCorner(int)
+{
+ mChanged = true;
+}
+
+/* =================================================================================================== */
+
+AdvancedDialog::AdvancedDialog(QWidget *parent, const char *name) : AdvancedDialogImpl(parent, name)
+{
+ monitorLabel->setPixmap(QPixmap(locate("data", "kcontrol/pics/monitor.png")));
+ QWhatsThis::add(qcbPriority, "<qt>" + i18n("Specify the priority that the screensaver will run at. A higher priority may mean that the screensaver runs faster, though may reduce the speed that other programs run at while the screensaver is active.") + "</qt>");
+ QString qsTopLeft("<qt>" + i18n("The action to take when the mouse cursor is located in the top left corner of the screen for 15 seconds.") + "</qt>");
+ QString qsTopRight("<qt>" + i18n("The action to take when the mouse cursor is located in the top right corner of the screen for 15 seconds.") + "</qt>");
+ QString qsBottomLeft("<qt>" + i18n("The action to take when the mouse cursor is located in the bottom left corner of the screen for 15 seconds.") + "</qt>");
+ QString qsBottomRight("<qt>" + i18n("The action to take when the mouse cursor is located in the bottom right corner of the screen for 15 seconds.") + "</qt>");
+ QWhatsThis::add(qlTopLeft, qsTopLeft);
+ QWhatsThis::add(qcbTopLeft, qsTopLeft);
+ QWhatsThis::add(qlTopRight, qsTopRight);
+ QWhatsThis::add(qcbTopRight, qsTopRight);
+ QWhatsThis::add(qlBottomLeft, qsBottomLeft);
+ QWhatsThis::add(qcbBottomLeft, qsBottomLeft);
+ QWhatsThis::add(qlBottomRight, qsBottomRight);
+ QWhatsThis::add(qcbBottomRight, qsBottomRight);
+}
+
+AdvancedDialog::~AdvancedDialog()
+{
+
+}
+
+void AdvancedDialog::setMode(QComboBox *box, int i)
+{
+ box->setCurrentItem(i);
+}
+
+int AdvancedDialog::mode(QComboBox *box)
+{
+ return box->currentItem();
+}