From 9091e883e62933f84b8467adcb715c98237179a9 Mon Sep 17 00:00:00 2001 From: Volker Lanz Date: Thu, 11 Mar 2010 19:40:42 +0000 Subject: [PATCH] handle default button for custom widgets in configure dialog svn path=/trunk/extragear/sysadmin/partitionmanager/; revision=1102086 --- src/gui/configureoptionsdialog.cpp | 58 ++++++++++++++++++++++++------ src/gui/configureoptionsdialog.h | 7 ++-- src/gui/mainwindow.cpp | 2 +- 3 files changed, 54 insertions(+), 13 deletions(-) diff --git a/src/gui/configureoptionsdialog.cpp b/src/gui/configureoptionsdialog.cpp index 85c1a29..9636e75 100644 --- a/src/gui/configureoptionsdialog.cpp +++ b/src/gui/configureoptionsdialog.cpp @@ -28,6 +28,7 @@ #include "ui_configurepagefilesystemcolors.h" #include + #include class GeneralPageWidget : public QWidget, public Ui::ConfigurePageGeneral @@ -37,6 +38,17 @@ class GeneralPageWidget : public QWidget, public Ui::ConfigurePageGeneral public: QComboBox& comboDefaultFileSystem() { return *m_ComboDefaultFileSystem; } + const QComboBox& comboDefaultFileSystem() const { return *m_ComboDefaultFileSystem; } + + FileSystem::Type defaultFileSystem() const + { + return FileSystem::typeForName(comboDefaultFileSystem().currentText()); + } + + void setDefaultFileSystem(FileSystem::Type t) + { + comboDefaultFileSystem().setCurrentIndex(comboDefaultFileSystem().findText(FileSystem::nameForType(t))); + } private: void setupDialog() @@ -51,10 +63,8 @@ class GeneralPageWidget : public QWidget, public Ui::ConfigurePageGeneral foreach (const QString& fsName, fsNames) comboDefaultFileSystem().addItem(createFileSystemColor(FileSystem::typeForName(fsName), 8), fsName); - const QString selected = FileSystem::nameForType(FileSystem::defaultFileSystem()); - comboDefaultFileSystem().setCurrentIndex(comboDefaultFileSystem().findText(selected)); + setDefaultFileSystem(FileSystem::defaultFileSystem()); } - }; class FileSystemColorsPageWidget : public QWidget, public Ui::ConfigurePageFileSystemColors @@ -63,8 +73,8 @@ class FileSystemColorsPageWidget : public QWidget, public Ui::ConfigurePageFileS FileSystemColorsPageWidget(QWidget* parent) : QWidget(parent) { setupUi(this); } }; -ConfigureOptionsDialog::ConfigureOptionsDialog(QWidget* parent, const QString& name, KConfigSkeleton* cfg) : - KConfigDialog(parent, name, cfg), +ConfigureOptionsDialog::ConfigureOptionsDialog(QWidget* parent, const QString& name) : + KConfigDialog(parent, name, Config::self()), m_GeneralPageWidget(new GeneralPageWidget(this)), m_FileSystemColorsPageWidget(new FileSystemColorsPageWidget(this)) { @@ -75,20 +85,48 @@ ConfigureOptionsDialog::ConfigureOptionsDialog(QWidget* parent, const QString& n item = addPage(&generalPageWidget(), i18nc("@title:tab general application settings", "General"), QString(), i18n("General Settings")); item->setIcon(KIcon(DesktopIcon("configure"))); + connect(&generalPageWidget().comboDefaultFileSystem(), SIGNAL(activated(int)), SLOT(onComboDefaultFileSystemActivated(int))); item = addPage(&fileSystemColorsPageWidget(), i18nc("@title:tab", "File System Colors"), QString(), i18n("File System Color Settings")); item->setIcon(KIcon(DesktopIcon("format-fill-color"))); restoreDialogSize(KConfigGroup(KGlobal::config(), "configureOptionsDialog")); } -void ConfigureOptionsDialog::updateSettings() -{ - Config::setDefaultFileSystem(FileSystem::typeForName(generalPageWidget().comboDefaultFileSystem().currentText())); -} - /** Destroys a ConfigureOptionsDialog instance */ ConfigureOptionsDialog::~ConfigureOptionsDialog() { KConfigGroup kcg(KGlobal::config(), "configureOptionsDialog"); saveDialogSize(kcg); } + +void ConfigureOptionsDialog::updateSettings() +{ + Config::setDefaultFileSystem(generalPageWidget().defaultFileSystem()); +} + +bool ConfigureOptionsDialog::isDefault() +{ + bool result = !hasChanged(); + + if (result) + { + const bool useDefaults = Config::self()->useDefaults(true); + KConfigSkeletonItem* kcItem = Config::self()->findItem("defaultFileSystem"); + if (kcItem != NULL) + result = kcItem->isEqual(generalPageWidget().defaultFileSystem()); + else + kWarning() << "the kcitem for defaultFileSytstem is gone."; + + Config::self()->useDefaults(useDefaults); + } + + return result; +} + +void ConfigureOptionsDialog::updateWidgetsDefault() +{ + bool useDefaults = Config::self()->useDefaults(true); + generalPageWidget().setDefaultFileSystem(FileSystem::defaultFileSystem()); + Config::self()->useDefaults(useDefaults); +} + diff --git a/src/gui/configureoptionsdialog.h b/src/gui/configureoptionsdialog.h index ab1468e..493fb64 100644 --- a/src/gui/configureoptionsdialog.h +++ b/src/gui/configureoptionsdialog.h @@ -32,11 +32,14 @@ class ConfigureOptionsDialog : public KConfigDialog Q_OBJECT public: - ConfigureOptionsDialog(QWidget* parent, const QString& name, KConfigSkeleton* cfg); + ConfigureOptionsDialog(QWidget* parent, const QString& name); ~ConfigureOptionsDialog(); protected slots: - void updateSettings(); + virtual void updateSettings(); + virtual void updateWidgetsDefault(); + virtual bool isDefault(); + void onComboDefaultFileSystemActivated(int) { settingsChangedSlot(); } protected: GeneralPageWidget& generalPageWidget() { Q_ASSERT(m_GeneralPageWidget); return *m_GeneralPageWidget; } diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 0edef0a..9d629db 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -914,7 +914,7 @@ void MainWindow::onConfigureOptions() if (ConfigureOptionsDialog::showDialog("Settings")) return; - QPointer dlg = new ConfigureOptionsDialog(this, "Settings", Config::self()); + QPointer dlg = new ConfigureOptionsDialog(this, "Settings"); connect(dlg, SIGNAL(settingsChanged(const QString&)), SLOT(onSettingsChanged(const QString&)));