summaryrefslogtreecommitdiffstats
path: root/kscreensaver/kxsconfig/kxsitem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kscreensaver/kxsconfig/kxsitem.cpp')
-rw-r--r--kscreensaver/kxsconfig/kxsitem.cpp251
1 files changed, 251 insertions, 0 deletions
diff --git a/kscreensaver/kxsconfig/kxsitem.cpp b/kscreensaver/kxsconfig/kxsitem.cpp
new file mode 100644
index 00000000..d7cd010c
--- /dev/null
+++ b/kscreensaver/kxsconfig/kxsitem.cpp
@@ -0,0 +1,251 @@
+//-----------------------------------------------------------------------------
+//
+// KDE xscreensaver configuration dialog
+//
+// Copyright (c) Martin R. Jones <mjones@kde.org> 1999
+//
+// 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;
+// version 2 of the License.
+//
+// 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; see the file COPYING. If not, write to
+// the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301, USA.
+
+#include "kxsconfig.h"
+#include <klocale.h>
+#include <qxml.h>
+
+//===========================================================================
+KXSConfigItem::KXSConfigItem(const QString &name, KConfig &config)
+ : mName(name)
+{
+ config.setGroup(name);
+ mLabel = i18n(config.readEntry("Label").utf8());
+}
+
+KXSConfigItem::KXSConfigItem(const QString &name, const QXmlAttributes &attr )
+ : mName(name)
+{
+ mLabel = attr.value("_label");
+}
+
+//===========================================================================
+KXSRangeItem::KXSRangeItem(const QString &name, KConfig &config)
+ : KXSConfigItem(name, config), mInvert(false)
+{
+ mMinimum = config.readNumEntry("Minimum");
+ mMaximum = config.readNumEntry("Maximum");
+ mValue = config.readNumEntry("Value");
+ mSwitch = config.readEntry("Switch");
+}
+
+KXSRangeItem::KXSRangeItem(const QString &name, const QXmlAttributes &attr )
+ : KXSConfigItem(name, attr), mInvert(false)
+{
+ mMinimum = attr.value("low").toInt();
+ mMaximum = attr.value("high").toInt();
+ mValue = attr.value("default").toInt();
+ mSwitch = attr.value("arg");
+ int pos = mSwitch.find( '%' );
+ if (pos >= 0)
+ mSwitch.insert(pos+1, '1');
+ if ( attr.value("convert") == "invert" )
+ mInvert = true;
+ if (mInvert)
+ mValue = mMaximum-(mValue-mMinimum);
+}
+
+QString KXSRangeItem::command()
+{
+ return mSwitch.arg(mInvert?mMaximum-(mValue-mMinimum):mValue);
+}
+
+void KXSRangeItem::read(KConfig &config)
+{
+ config.setGroup(mName);
+ if (config.hasKey("Value"))
+ mValue = config.readNumEntry("Value");
+}
+
+void KXSRangeItem::save(KConfig &config)
+{
+ config.setGroup(mName);
+ config.writeEntry("Value", mValue);
+}
+
+//===========================================================================
+KXSDoubleRangeItem::KXSDoubleRangeItem(const QString &name, KConfig &config)
+ : KXSConfigItem(name, config), mInvert(false)
+{
+ mMinimum = config.readDoubleNumEntry("Minimum");
+ mMaximum = config.readDoubleNumEntry("Maximum");
+ mValue = config.readDoubleNumEntry("Value");
+ mSwitch = config.readEntry("Switch");
+}
+
+KXSDoubleRangeItem::KXSDoubleRangeItem(const QString &name, const QXmlAttributes &attr)
+ : KXSConfigItem(name, attr), mInvert(false)
+{
+ mMinimum = attr.value("low").toDouble();
+ mMaximum = attr.value("high").toDouble();
+ mValue = attr.value("default").toDouble();
+ mSwitch = attr.value("arg");
+ int pos = mSwitch.find( '%' );
+ if (pos >= 0)
+ mSwitch.insert(pos+1, '1');
+ if ( attr.value("convert") == "invert" )
+ mInvert = true;
+ if (mInvert)
+ mValue = mMaximum-(mValue-mMinimum);
+}
+
+QString KXSDoubleRangeItem::command()
+{
+ return mSwitch.arg(mInvert?mMaximum-(mValue-mMinimum):mValue);
+}
+
+void KXSDoubleRangeItem::read(KConfig &config)
+{
+ config.setGroup(mName);
+ if (config.hasKey("Value"))
+ mValue = config.readDoubleNumEntry("Value");
+}
+
+void KXSDoubleRangeItem::save(KConfig &config)
+{
+ config.setGroup(mName);
+ config.writeEntry("Value", mValue);
+}
+
+
+//===========================================================================
+KXSBoolItem::KXSBoolItem(const QString &name, KConfig &config)
+ : KXSConfigItem(name, config)
+{
+ mValue = config.readBoolEntry("Value");
+ mSwitchOn = config.readEntry("SwitchOn");
+ mSwitchOff = config.readEntry("SwitchOff");
+}
+
+KXSBoolItem::KXSBoolItem(const QString &name, const QXmlAttributes &attr )
+ : KXSConfigItem(name, attr)
+{
+ mSwitchOn = attr.value("arg-set");
+ mSwitchOff = attr.value("arg-unset");
+ mValue = mSwitchOn.isEmpty() ? true : false;
+}
+
+QString KXSBoolItem::command()
+{
+ return mValue ? mSwitchOn : mSwitchOff;
+}
+
+void KXSBoolItem::read(KConfig &config)
+{
+ config.setGroup(mName);
+ if (config.hasKey("Value"))
+ mValue = config.readBoolEntry("Value");
+}
+
+void KXSBoolItem::save(KConfig &config)
+{
+ config.setGroup(mName);
+ config.writeEntry("Value", mValue);
+}
+
+//===========================================================================
+KXSSelectItem::KXSSelectItem(const QString &name, KConfig &config)
+ : KXSConfigItem(name, config)
+{
+ mOptions = config.readListEntry("Options");
+ mSwitches = config.readListEntry("Switches");
+ mValue = config.readNumEntry("Value");
+}
+
+KXSSelectItem::KXSSelectItem(const QString &name, const QXmlAttributes &attr )
+ : KXSConfigItem(name, attr), mValue(0)
+{
+}
+
+void KXSSelectItem::addOption( const QXmlAttributes &attr )
+{
+ QString opt = attr.value("_label");
+ QString arg = attr.value("arg-set");
+ if ( arg.isEmpty() )
+ mValue = mSwitches.count();
+ mOptions += opt;
+ mSwitches += arg;
+}
+
+QString KXSSelectItem::command()
+{
+ QStringList::Iterator it = mSwitches.at(mValue);
+ return (*it);
+}
+
+void KXSSelectItem::read(KConfig &config)
+{
+ config.setGroup(mName);
+ if (config.hasKey("Value"))
+ mValue = config.readNumEntry("Value");
+}
+
+void KXSSelectItem::save(KConfig &config)
+{
+ config.setGroup(mName);
+ config.writeEntry("Value", mValue);
+}
+
+
+//===========================================================================
+KXSStringItem::KXSStringItem(const QString &name, KConfig &config)
+ : KXSConfigItem(name, config)
+{
+ mValue = config.readEntry("Value");
+ mSwitch = config.readEntry("Switch");
+ int pos = mSwitch.find( '%' );
+ if (pos >= 0) {
+ mSwitch.insert(pos+1, "\"");
+ mSwitch.insert(pos, "\"");
+ }
+}
+
+KXSStringItem::KXSStringItem(const QString &name, const QXmlAttributes &attr )
+ : KXSConfigItem(name, attr)
+{
+ mSwitch = attr.value("arg");
+ int pos = mSwitch.find( '%' );
+ if (pos >= 0) {
+ mSwitch.insert(pos+1, "1\"");
+ mSwitch.insert(pos, "\"");
+ }
+}
+
+QString KXSStringItem::command()
+{
+ if (!mValue.isEmpty())
+ return mSwitch.arg(mValue);
+ return "";
+}
+
+void KXSStringItem::read(KConfig &config)
+{
+ config.setGroup(mName);
+ if (config.hasKey("Value"))
+ mValue = config.readEntry("Value");
+}
+
+void KXSStringItem::save(KConfig &config)
+{
+ config.setGroup(mName);
+ config.writeEntry("Value", mValue);
+}
+