summaryrefslogtreecommitdiffstats
path: root/filesharing/advanced/kcm_sambaconf/dictmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filesharing/advanced/kcm_sambaconf/dictmanager.cpp')
-rw-r--r--filesharing/advanced/kcm_sambaconf/dictmanager.cpp216
1 files changed, 216 insertions, 0 deletions
diff --git a/filesharing/advanced/kcm_sambaconf/dictmanager.cpp b/filesharing/advanced/kcm_sambaconf/dictmanager.cpp
new file mode 100644
index 00000000..51f63266
--- /dev/null
+++ b/filesharing/advanced/kcm_sambaconf/dictmanager.cpp
@@ -0,0 +1,216 @@
+/***************************************************************************
+ dictmanager.cpp - description
+ -------------------
+ begin : Wed Jan 1 2003
+ copyright : (C) 2003 by Jan Sch�fer
+ ***************************************************************************/
+
+/******************************************************************************
+ * *
+ * This file is part of KSambaPlugin. *
+ * *
+ * KSambaPlugin 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. *
+ * *
+ * KSambaPlugin 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 KSambaPlugin; if not, write to the Free Software *
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
+ * *
+ ******************************************************************************/
+
+
+#include <qlineedit.h>
+#include <qcheckbox.h>
+#include <qspinbox.h>
+#include <qcombobox.h>
+#include <qtooltip.h>
+#include <qstringlist.h>
+
+#include <kurlrequester.h>
+#include <klocale.h>
+
+#include "sambashare.h"
+#include "dictmanager.h"
+#include "common.h"
+
+
+DictManager::DictManager(SambaShare* share):
+ lineEditDict(40,false),
+ checkBoxDict(40,false),
+ urlRequesterDict(40,false),
+ spinBoxDict(40,false),
+ comboBoxDict(20,false),
+ comboBoxValuesDict(20,false)
+{
+ _share = share;
+}
+
+DictManager::~DictManager() {
+}
+
+void DictManager::handleUnsupportedWidget(const QString & s, QWidget* w) {
+ w->setEnabled(false);
+ QToolTip::add(w,i18n("The option <em>%1</em> is not supported by your Samba version").arg(s));
+}
+
+void DictManager::add(const QString & key, QLineEdit* lineEdit) {
+ if (_share->optionSupported(key)) {
+ lineEditDict.insert(key,lineEdit);
+ connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(changedSlot()));
+ } else
+ handleUnsupportedWidget(key,lineEdit);
+}
+
+void DictManager::add(const QString & key, QCheckBox* checkBox){
+ if (_share->optionSupported(key)) {
+ checkBoxDict.insert(key,checkBox);
+ connect(checkBox, SIGNAL(clicked()), this, SLOT(changedSlot()));
+ } else
+ handleUnsupportedWidget(key,checkBox);
+}
+
+void DictManager::add(const QString & key, KURLRequester* urlRq){
+ if (_share->optionSupported(key)) {
+ urlRequesterDict.insert(key,urlRq);
+ connect(urlRq, SIGNAL(textChanged(const QString &)), this, SLOT(changedSlot()));
+ } else
+ handleUnsupportedWidget(key,urlRq);
+}
+
+void DictManager::add(const QString & key, QSpinBox* spinBox){
+ if (_share->optionSupported(key)) {
+ spinBoxDict.insert(key,spinBox);
+ connect(spinBox, SIGNAL(valueChanged(int)), this, SLOT(changedSlot()));
+ } else
+ handleUnsupportedWidget(key,spinBox);
+}
+
+void DictManager::add(const QString & key, QComboBox* comboBox, QStringList* values){
+ if (_share->optionSupported(key)) {
+ comboBoxDict.insert(key,comboBox);
+ comboBoxValuesDict.insert(key,values);
+ connect(comboBox, SIGNAL(activated(int)), this, SLOT(changedSlot()));
+ } else
+ handleUnsupportedWidget(key,comboBox);
+}
+
+
+void DictManager::load(SambaShare* share, bool globalValue, bool defaultValue){
+ QDictIterator<QCheckBox> checkBoxIt( checkBoxDict );
+
+ for( ; checkBoxIt.current(); ++checkBoxIt ) {
+ checkBoxIt.current()->setChecked(share->getBoolValue(checkBoxIt.currentKey(),globalValue,defaultValue));
+ }
+
+ QDictIterator<QLineEdit> lineEditIt( lineEditDict );
+
+ for( ; lineEditIt.current(); ++lineEditIt ) {
+ lineEditIt.current()->setText(share->getValue(lineEditIt.currentKey(),globalValue,defaultValue));
+ }
+
+ QDictIterator<KURLRequester> urlRequesterIt( urlRequesterDict );
+
+ for( ; urlRequesterIt.current(); ++urlRequesterIt ) {
+ urlRequesterIt.current()->setURL(share->getValue(urlRequesterIt.currentKey(),globalValue,defaultValue));
+ }
+
+ QDictIterator<QSpinBox> spinBoxIt( spinBoxDict );
+
+ for( ; spinBoxIt.current(); ++spinBoxIt ) {
+ spinBoxIt.current()->setValue(share->getValue(spinBoxIt.currentKey(),globalValue,defaultValue).toInt());
+ }
+
+ loadComboBoxes(share,globalValue,defaultValue);
+
+}
+
+void DictManager::loadComboBoxes(SambaShare* share, bool globalValue, bool defaultValue) {
+ QDictIterator<QComboBox> comboBoxIt( comboBoxDict );
+
+ for( ; comboBoxIt.current(); ++comboBoxIt ) {
+ QStringList *v = comboBoxValuesDict[comboBoxIt.currentKey()];
+ QString value = share->getValue(comboBoxIt.currentKey(),globalValue,defaultValue);
+
+ if (value.isNull())
+ continue;
+
+ value = value.lower();
+
+
+ int comboIndex = 0;
+
+ QStringList::iterator it;
+ for ( it = v->begin(); it != v->end(); ++it ) {
+ QString lower = (*it).lower();
+ if ( lower == "yes" &&
+ boolFromText(value))
+ break;
+
+ if ( lower == "no" &&
+ ! boolFromText(value,false))
+ break;
+
+ if ( lower == value )
+ break;
+
+ comboIndex++;
+ }
+
+ comboBoxIt.current()->setCurrentItem(comboIndex);
+ }
+}
+
+
+void DictManager::save(SambaShare* share, bool globalValue, bool defaultValue){
+ QDictIterator<QCheckBox> checkBoxIt( checkBoxDict );
+
+ for( ; checkBoxIt.current(); ++checkBoxIt ) {
+ share->setValue(checkBoxIt.currentKey(),checkBoxIt.current()->isChecked(), globalValue, defaultValue );
+ }
+
+ QDictIterator<QLineEdit> lineEditIt( lineEditDict );
+
+ for( ; lineEditIt.current(); ++lineEditIt ) {
+ share->setValue(lineEditIt.currentKey(),lineEditIt.current()->text(), globalValue, defaultValue );
+ }
+
+ QDictIterator<KURLRequester> urlRequesterIt( urlRequesterDict );
+
+ for( ; urlRequesterIt.current(); ++urlRequesterIt ) {
+ share->setValue(urlRequesterIt.currentKey(),urlRequesterIt.current()->url(), globalValue, defaultValue );
+ }
+
+ QDictIterator<QSpinBox> spinBoxIt( spinBoxDict );
+
+ for( ; spinBoxIt.current(); ++spinBoxIt ) {
+ share->setValue(spinBoxIt.currentKey(),spinBoxIt.current()->value(), globalValue, defaultValue );
+ }
+
+ QDictIterator<QComboBox> comboBoxIt( comboBoxDict );
+
+ for( ; comboBoxIt.current(); ++comboBoxIt ) {
+ QStringList* values = comboBoxValuesDict[comboBoxIt.currentKey()];
+
+ int i = comboBoxIt.current()->currentItem();
+ share->setValue(comboBoxIt.currentKey(),(*values)[i], globalValue, defaultValue );
+ }
+
+}
+
+void DictManager::changedSlot() {
+ emit changed();
+}
+
+
+
+#include "dictmanager.moc"
+
+