summaryrefslogtreecommitdiffstats
path: root/kscreensaver/kxsconfig/kxscontrol.cpp
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commit8b2aa1b5301ab60368a03e36df4ff5216726e87d (patch)
tree36163d4ee667c23b5cf232df2f3004cd0a76202a /kscreensaver/kxsconfig/kxscontrol.cpp
downloadtdeartwork-8b2aa1b5301ab60368a03e36df4ff5216726e87d.tar.gz
tdeartwork-8b2aa1b5301ab60368a03e36df4ff5216726e87d.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/kdeartwork@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kscreensaver/kxsconfig/kxscontrol.cpp')
-rw-r--r--kscreensaver/kxsconfig/kxscontrol.cpp321
1 files changed, 321 insertions, 0 deletions
diff --git a/kscreensaver/kxsconfig/kxscontrol.cpp b/kscreensaver/kxsconfig/kxscontrol.cpp
new file mode 100644
index 00000000..b8a2b666
--- /dev/null
+++ b/kscreensaver/kxsconfig/kxscontrol.cpp
@@ -0,0 +1,321 @@
+//-----------------------------------------------------------------------------
+//
+// 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 <qlabel.h>
+#include <qslider.h>
+#include <qlayout.h>
+#include <qcombobox.h>
+#include <qlineedit.h>
+#include <qspinbox.h>
+#include <qpushbutton.h>
+#include <qxml.h>
+#include <klocale.h>
+#include <kfiledialog.h>
+#include "kxscontrol.h"
+
+//===========================================================================
+KXSRangeControl::KXSRangeControl(QWidget *parent, const QString &name,
+ KConfig &config)
+ : QWidget(parent), KXSRangeItem(name, config), mSlider(0), mSpinBox(0)
+{
+ QVBoxLayout *l = new QVBoxLayout(this);
+ QLabel *label = new QLabel(mLabel, this);
+ l->add(label);
+ mSlider = new QSlider(mMinimum, mMaximum, 10, mValue, Qt::Horizontal, this);
+ connect(mSlider, SIGNAL(valueChanged(int)), SLOT(slotValueChanged(int)));
+ l->add(mSlider);
+}
+
+KXSRangeControl::KXSRangeControl(QWidget *parent, const QString &name,
+ const QXmlAttributes &attr )
+ : QWidget(parent), KXSRangeItem(name, attr), mSlider(0), mSpinBox(0)
+{
+ if (attr.value("type") == "spinbutton" ) {
+ QHBoxLayout *hb = new QHBoxLayout(this);
+ if (!mLabel.isEmpty()) {
+ QLabel *l = new QLabel(i18n(mLabel.utf8()), this);
+ hb->add(l);
+ }
+ mSpinBox = new QSpinBox(mMinimum, mMaximum, 1, this);
+ mSpinBox->setValue(mValue);
+ connect(mSpinBox, SIGNAL(valueChanged(int)), SLOT(slotValueChanged(int)));
+ hb->add(mSpinBox);
+ } else {
+ QString lowLabel = attr.value("_low-label");
+ QString highLabel = attr.value("_high-label");
+ QVBoxLayout *vb = new QVBoxLayout(this);
+ if (!mLabel.isEmpty()) {
+ QLabel *l = new QLabel(i18n(mLabel.utf8()), this);
+ vb->add(l);
+ }
+ QHBoxLayout *hb = new QHBoxLayout(vb);
+ if (!lowLabel.isEmpty()) {
+ QLabel *l = new QLabel(i18n(lowLabel.utf8()), this);
+ hb->addWidget(l);
+ }
+ mSlider = new QSlider(mMinimum, mMaximum, 10, mValue, Qt::Horizontal, this);
+ connect(mSlider, SIGNAL(valueChanged(int)), SLOT(slotValueChanged(int)));
+ hb->add(mSlider);
+ if (!highLabel.isEmpty()){
+ QLabel *l = new QLabel(i18n(highLabel.utf8()), this);
+ hb->addWidget(l);
+ }
+ }
+}
+
+void KXSRangeControl::slotValueChanged(int value)
+{
+ mValue = value;
+ emit changed();
+}
+
+void KXSRangeControl::read(KConfig &config)
+{
+ KXSRangeItem::read(config);
+ if ( mSpinBox )
+ mSpinBox->setValue(mValue);
+ else
+ mSlider->setValue(mValue);
+}
+
+//===========================================================================
+KXSDoubleRangeControl::KXSDoubleRangeControl(QWidget *parent,
+ const QString &name, KConfig &config)
+ : QWidget(parent), KXSDoubleRangeItem(name, config)
+{
+ QVBoxLayout *l = new QVBoxLayout(this);
+ QLabel *label = new QLabel(mLabel, this);
+ l->add(label);
+
+ int value = int((mValue - mMinimum) * 100 / (mMaximum - mMinimum));
+
+ mSlider = new QSlider(0, 100, 10, value, Qt::Horizontal, this);
+ connect(mSlider, SIGNAL(valueChanged(int)), SLOT(slotValueChanged(int)));
+ l->add(mSlider);
+}
+
+KXSDoubleRangeControl::KXSDoubleRangeControl(QWidget *parent,
+ const QString &name, const QXmlAttributes &attr)
+ : QWidget(parent), KXSDoubleRangeItem(name, attr)
+{
+ QString lowLabel = attr.value("_low-label");
+ QString highLabel = attr.value("_high-label");
+ QVBoxLayout *vb = new QVBoxLayout(this);
+ if (!mLabel.isEmpty()) {
+ QLabel *l = new QLabel(i18n(mLabel.utf8()), this);
+ vb->add(l);
+ }
+ QHBoxLayout *hb = new QHBoxLayout(vb);
+ if (!lowLabel.isEmpty()) {
+ QLabel *l = new QLabel(i18n(lowLabel.utf8()), this);
+ hb->addWidget(l);
+ }
+ int value = int((mValue - mMinimum) * 100 / (mMaximum - mMinimum));
+ mSlider = new QSlider(0, 100, 10, value, Qt::Horizontal, this);
+ connect(mSlider, SIGNAL(valueChanged(int)), SLOT(slotValueChanged(int)));
+ hb->add(mSlider);
+ if (!highLabel.isEmpty()){
+ QLabel *l = new QLabel(i18n(highLabel.utf8()), this);
+ hb->addWidget(l);
+ }
+}
+
+void KXSDoubleRangeControl::slotValueChanged(int value)
+{
+ mValue = mMinimum + value * (mMaximum - mMinimum) / 100.0;
+ emit changed();
+}
+
+void KXSDoubleRangeControl::read(KConfig &config)
+{
+ KXSDoubleRangeItem::read(config);
+ mSlider->setValue((int)((mValue - mMinimum) * 100.0 /
+ (mMaximum - mMinimum) + 0.5));
+}
+
+//===========================================================================
+KXSCheckBoxControl::KXSCheckBoxControl(QWidget *parent, const QString &name,
+ KConfig &config)
+ : QCheckBox(parent), KXSBoolItem(name, config)
+{
+ setText(mLabel);
+ setChecked(mValue);
+ connect(this, SIGNAL(toggled(bool)), SLOT(slotToggled(bool)));
+}
+
+KXSCheckBoxControl::KXSCheckBoxControl(QWidget *parent, const QString &name,
+ const QXmlAttributes &attr)
+ : QCheckBox(parent), KXSBoolItem(name, attr)
+{
+ setText(i18n(mLabel.utf8()));
+ setChecked(mValue);
+ connect(this, SIGNAL(toggled(bool)), SLOT(slotToggled(bool)));
+}
+
+void KXSCheckBoxControl::slotToggled(bool state)
+{
+ mValue = state;
+ emit changed();
+}
+
+void KXSCheckBoxControl::read(KConfig &config)
+{
+ KXSBoolItem::read(config);
+ setChecked(mValue);
+}
+
+//===========================================================================
+KXSDropListControl::KXSDropListControl(QWidget *parent, const QString &name,
+ KConfig &config)
+ : QWidget(parent), KXSSelectItem(name, config)
+{
+ QVBoxLayout *l = new QVBoxLayout(this);
+ QLabel *label = new QLabel(mLabel, this);
+ l->add(label);
+ mCombo = new QComboBox(this);
+ for(uint i=0; i < mOptions.count(); i++)
+ mCombo->insertItem( i18n(mOptions[i].utf8()) );
+ mCombo->setCurrentItem(mValue);
+ connect(mCombo, SIGNAL(activated(int)), SLOT(slotActivated(int)));
+ l->add(mCombo);
+}
+
+KXSDropListControl::KXSDropListControl(QWidget *parent, const QString &name,
+ const QXmlAttributes &attr)
+ : QWidget(parent), KXSSelectItem(name, attr)
+{
+ QVBoxLayout *l = new QVBoxLayout(this);
+ QLabel *label = new QLabel(i18n(mLabel.utf8()), this);
+ l->add(label);
+ mCombo = new QComboBox(this);
+ connect(mCombo, SIGNAL(activated(int)), SLOT(slotActivated(int)));
+ l->add(mCombo);
+}
+
+void KXSDropListControl::addOption(const QXmlAttributes &attr)
+{
+ KXSSelectItem::addOption( attr );
+ mCombo->insertItem( i18n(mOptions[mOptions.count()-1].utf8()) );
+ if ( (unsigned)mValue == mOptions.count()-1 )
+ mCombo->setCurrentItem(mOptions.count()-1);
+}
+
+void KXSDropListControl::slotActivated(int indx)
+{
+ mValue = indx;
+ emit changed();
+}
+
+void KXSDropListControl::read(KConfig &config)
+{
+ KXSSelectItem::read(config);
+ mCombo->setCurrentItem(mValue);
+}
+
+//===========================================================================
+KXSLineEditControl::KXSLineEditControl(QWidget *parent, const QString &name,
+ KConfig &config)
+ : QWidget(parent), KXSStringItem(name, config)
+{
+ QVBoxLayout *l = new QVBoxLayout(this);
+ QLabel *label = new QLabel(mLabel, this);
+ l->add(label);
+ mEdit = new QLineEdit(this);
+ connect(mEdit, SIGNAL(textChanged(const QString &)), SLOT(textChanged(const QString &)));
+ l->add(mEdit);
+}
+
+KXSLineEditControl::KXSLineEditControl(QWidget *parent, const QString &name,
+ const QXmlAttributes &attr )
+ : QWidget(parent), KXSStringItem(name, attr)
+{
+ QVBoxLayout *l = new QVBoxLayout(this);
+ QLabel *label = new QLabel(i18n(mLabel.utf8()), this);
+ l->add(label);
+ mEdit = new QLineEdit(this);
+ connect(mEdit, SIGNAL(textChanged(const QString &)), SLOT(textChanged(const QString &)));
+ l->add(mEdit);
+}
+
+void KXSLineEditControl::textChanged( const QString &text )
+{
+ mValue = text;
+ emit changed();
+}
+
+void KXSLineEditControl::read(KConfig &config)
+{
+ KXSStringItem::read(config);
+ mEdit->setText(mValue);
+}
+
+//===========================================================================
+KXSFileControl::KXSFileControl(QWidget *parent, const QString &name,
+ KConfig &config)
+ : QWidget(parent), KXSStringItem(name, config)
+{
+ QVBoxLayout *l = new QVBoxLayout(this);
+ QLabel *label = new QLabel(mLabel, this);
+ l->add(label);
+ mEdit = new QLineEdit(this);
+ connect(mEdit, SIGNAL(textChanged(const QString &)), SLOT(textChanged(const QString &)));
+ l->add(mEdit);
+}
+
+KXSFileControl::KXSFileControl(QWidget *parent, const QString &name,
+ const QXmlAttributes &attr )
+ : QWidget(parent), KXSStringItem(name, attr)
+{
+ QVBoxLayout *l = new QVBoxLayout(this);
+ QLabel *label = new QLabel(i18n(mLabel.utf8()), this);
+ l->add(label);
+ QHBoxLayout *hb = new QHBoxLayout(l);
+ mEdit = new QLineEdit(this);
+ connect(mEdit, SIGNAL(textChanged(const QString &)), SLOT(textChanged(const QString &)));
+ hb->add(mEdit);
+ QPushButton *pb = new QPushButton( "...", this );
+ connect( pb, SIGNAL(clicked()), this, SLOT(selectFile()) );
+ hb->addWidget(pb);
+}
+
+void KXSFileControl::textChanged( const QString &text )
+{
+ mValue = text;
+ emit changed();
+}
+
+void KXSFileControl::selectFile()
+{
+ QString f = KFileDialog::getOpenFileName();
+ if ( !f.isEmpty() ) {
+ mValue = f;
+ mEdit->setText(mValue);
+ emit changed();
+ }
+}
+
+void KXSFileControl::read(KConfig &config)
+{
+ KXSStringItem::read(config);
+ mEdit->setText(mValue);
+}
+
+#include "kxscontrol.moc"