From 2f0b7cc810b3b04de5194171cbb126e4e544da90 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Sat, 26 May 2007 09:16:56 +0000 Subject: [PATCH] allow to reset all settings to default values svn path=/trunk/KDE/kdebase/apps/; revision=668398 --- src/columnviewsettingspage.cpp | 58 +++++++++++++--------- src/columnviewsettingspage.h | 6 +++ src/detailsviewsettingspage.cpp | 71 +++++++++++++++------------ src/detailsviewsettingspage.h | 6 +++ src/dolphinsettingsdialog.cpp | 28 ++++++++--- src/dolphinsettingsdialog.h | 2 + src/generalsettingspage.cpp | 37 ++++++++++---- src/generalsettingspage.h | 12 +++-- src/generalviewsettingspage.cpp | 87 ++++++++++++++++++++------------- src/generalviewsettingspage.h | 8 +++ src/iconsviewsettingspage.cpp | 69 +++++++++++++++----------- src/iconsviewsettingspage.h | 6 +++ src/settingspagebase.h | 6 +++ src/viewsettingspage.cpp | 11 ++++- src/viewsettingspage.h | 5 +- 15 files changed, 274 insertions(+), 138 deletions(-) diff --git a/src/columnviewsettingspage.cpp b/src/columnviewsettingspage.cpp index f843ca0fa..ddc22972b 100644 --- a/src/columnviewsettingspage.cpp +++ b/src/columnviewsettingspage.cpp @@ -51,29 +51,13 @@ ColumnViewSettingsPage::ColumnViewSettingsPage(DolphinMainWindow* mainWindow, setSpacing(spacing); setMargin(margin); - ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings(); - Q_ASSERT(settings != 0); - - // Create "Icon" properties + // Create 'Icon' properties QGroupBox* iconSizeBox = new QGroupBox(i18n("Icon Size"), this); iconSizeBox->setSizePolicy(sizePolicy); m_smallIconSize = new QRadioButton(i18n("Small"), this); m_mediumIconSize = new QRadioButton(i18n("Medium"), this); m_largeIconSize = new QRadioButton(i18n("Large"), this); - switch (settings->iconSize()) { - case K3Icon::SizeLarge: - m_largeIconSize->setChecked(true); - break; - - case K3Icon::SizeMedium: - m_mediumIconSize->setChecked(true); - break; - - case K3Icon::SizeSmall: - default: - m_smallIconSize->setChecked(true); - } QButtonGroup* iconSizeGroup = new QButtonGroup(this); iconSizeGroup->addButton(m_smallIconSize); @@ -91,11 +75,6 @@ ColumnViewSettingsPage::ColumnViewSettingsPage(DolphinMainWindow* mainWindow, QLabel* fontLabel = new QLabel(i18n("Font:"), textBox); m_fontRequester = new KFontRequester(textBox); - QFont font(settings->fontFamily(), - settings->fontSize()); - font.setItalic(settings->italicFont()); - font.setBold(settings->boldFont()); - m_fontRequester->setFont(font); QHBoxLayout* textLayout = new QHBoxLayout(textBox); textLayout->addWidget(fontLabel); @@ -105,6 +84,8 @@ ColumnViewSettingsPage::ColumnViewSettingsPage(DolphinMainWindow* mainWindow, // a vertical resizing. This assures that the dialog layout // is not stretched vertically. new QWidget(this); + + loadSettings(); } ColumnViewSettingsPage::~ColumnViewSettingsPage() @@ -114,7 +95,6 @@ ColumnViewSettingsPage::~ColumnViewSettingsPage() void ColumnViewSettingsPage::applySettings() { ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings(); - Q_ASSERT(settings != 0); int iconSize = K3Icon::SizeSmall; if (m_mediumIconSize->isChecked()) { @@ -131,4 +111,36 @@ void ColumnViewSettingsPage::applySettings() settings->setBoldFont(font.bold()); } +void ColumnViewSettingsPage::restoreDefaults() +{ + ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings(); + settings->setDefaults(); + loadSettings(); +} + +void ColumnViewSettingsPage::loadSettings() +{ + ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings(); + + switch (settings->iconSize()) { + case K3Icon::SizeLarge: + m_largeIconSize->setChecked(true); + break; + + case K3Icon::SizeMedium: + m_mediumIconSize->setChecked(true); + break; + + case K3Icon::SizeSmall: + default: + m_smallIconSize->setChecked(true); + } + + QFont font(settings->fontFamily(), + settings->fontSize()); + font.setItalic(settings->italicFont()); + font.setBold(settings->boldFont()); + m_fontRequester->setFont(font); +} + #include "columnviewsettingspage.moc" diff --git a/src/columnviewsettingspage.h b/src/columnviewsettingspage.h index 270ee5ff4..5bf25da98 100644 --- a/src/columnviewsettingspage.h +++ b/src/columnviewsettingspage.h @@ -48,6 +48,12 @@ public: */ void applySettings(); + /** Restores the settings to default values. */ + void restoreDefaults(); + +private: + void loadSettings(); + private: DolphinMainWindow* m_mainWindow; QRadioButton* m_smallIconSize; diff --git a/src/detailsviewsettingspage.cpp b/src/detailsviewsettingspage.cpp index c7f4acf3e..c84c8b61a 100644 --- a/src/detailsviewsettingspage.cpp +++ b/src/detailsviewsettingspage.cpp @@ -55,27 +55,15 @@ DetailsViewSettingsPage::DetailsViewSettingsPage(DolphinMainWindow* mainWindow, setSpacing(spacing); setMargin(margin); - DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings(); - Q_ASSERT(settings != 0); - // create "Columns" properties QGroupBox* columnsBox = new QGroupBox(i18n("Columns"), this); columnsBox->setSizePolicy(sizePolicy); m_dateBox = new QCheckBox(i18n("Date"), this); - m_dateBox->setChecked(settings->showDate()); - m_permissionsBox = new QCheckBox(i18n("Permissions"), this); - m_permissionsBox->setChecked(settings->showPermissions()); - m_ownerBox = new QCheckBox(i18n("Owner"), this); - m_ownerBox->setChecked(settings->showOwner()); - m_groupBox = new QCheckBox(i18n("Group"), this); - m_groupBox->setChecked(settings->showGroup()); - m_typeBox = new QCheckBox(i18n("Type"), this); - m_typeBox->setChecked(settings->showType()); QHBoxLayout* columnsLayout = new QHBoxLayout(columnsBox); columnsLayout->addWidget(m_dateBox); @@ -91,19 +79,6 @@ DetailsViewSettingsPage::DetailsViewSettingsPage(DolphinMainWindow* mainWindow, m_smallIconSize = new QRadioButton(i18n("Small"), this); m_mediumIconSize = new QRadioButton(i18n("Medium"), this); m_largeIconSize = new QRadioButton(i18n("Large"), this); - switch (settings->iconSize()) { - case K3Icon::SizeLarge: - m_largeIconSize->setChecked(true); - break; - - case K3Icon::SizeMedium: - m_mediumIconSize->setChecked(true); - break; - - case K3Icon::SizeSmall: - default: - m_smallIconSize->setChecked(true); - } QButtonGroup* iconSizeGroup = new QButtonGroup(this); iconSizeGroup->addButton(m_smallIconSize); @@ -121,11 +96,6 @@ DetailsViewSettingsPage::DetailsViewSettingsPage(DolphinMainWindow* mainWindow, QLabel* fontLabel = new QLabel(i18n("Font:"), textBox); m_fontRequester = new KFontRequester(textBox); - QFont font(settings->fontFamily(), - settings->fontSize()); - font.setItalic(settings->italicFont()); - font.setBold(settings->boldFont()); - m_fontRequester->setFont(font); QHBoxLayout* textLayout = new QHBoxLayout(textBox); textLayout->addWidget(fontLabel); @@ -135,6 +105,8 @@ DetailsViewSettingsPage::DetailsViewSettingsPage(DolphinMainWindow* mainWindow, // a vertical resizing. This assures that the dialog layout // is not stretched vertically. new QWidget(this); + + loadSettings(); } DetailsViewSettingsPage::~DetailsViewSettingsPage() @@ -144,7 +116,6 @@ DetailsViewSettingsPage::~DetailsViewSettingsPage() void DetailsViewSettingsPage::applySettings() { DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings(); - Q_ASSERT(settings != 0); settings->setShowDate(m_dateBox->isChecked()); settings->setShowPermissions(m_permissionsBox->isChecked()); @@ -167,4 +138,42 @@ void DetailsViewSettingsPage::applySettings() settings->setBoldFont(font.bold()); } +void DetailsViewSettingsPage::restoreDefaults() +{ + DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings(); + settings->setDefaults(); + loadSettings(); +} + +void DetailsViewSettingsPage::loadSettings() +{ + DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings(); + + m_dateBox->setChecked(settings->showDate()); + m_permissionsBox->setChecked(settings->showPermissions()); + m_ownerBox->setChecked(settings->showOwner()); + m_groupBox->setChecked(settings->showGroup()); + m_typeBox->setChecked(settings->showType()); + + switch (settings->iconSize()) { + case K3Icon::SizeLarge: + m_largeIconSize->setChecked(true); + break; + + case K3Icon::SizeMedium: + m_mediumIconSize->setChecked(true); + break; + + case K3Icon::SizeSmall: + default: + m_smallIconSize->setChecked(true); + } + + QFont font(settings->fontFamily(), + settings->fontSize()); + font.setItalic(settings->italicFont()); + font.setBold(settings->boldFont()); + m_fontRequester->setFont(font); +} + #include "detailsviewsettingspage.moc" diff --git a/src/detailsviewsettingspage.h b/src/detailsviewsettingspage.h index 95a83fdc5..7880527ab 100644 --- a/src/detailsviewsettingspage.h +++ b/src/detailsviewsettingspage.h @@ -48,6 +48,12 @@ public: */ void applySettings(); + /** Restores the settings to default values. */ + void restoreDefaults(); + +private: + void loadSettings(); + private: DolphinMainWindow* m_mainWindow; QCheckBox* m_dateBox; diff --git a/src/dolphinsettingsdialog.cpp b/src/dolphinsettingsdialog.cpp index 88b97d057..998f6b4d2 100644 --- a/src/dolphinsettingsdialog.cpp +++ b/src/dolphinsettingsdialog.cpp @@ -19,12 +19,15 @@ ***************************************************************************/ #include "dolphinsettingsdialog.h" -#include -#include -#include "generalsettingspage.h" -#include "viewsettingspage.h" + #include "dolphinapplication.h" #include "dolphinmainwindow.h" +#include "generalsettingspage.h" +#include "viewsettingspage.h" + +#include +#include +#include DolphinSettingsDialog::DolphinSettingsDialog(DolphinMainWindow* mainWindow) : KPageDialog(), @@ -35,7 +38,7 @@ DolphinSettingsDialog::DolphinSettingsDialog(DolphinMainWindow* mainWindow) : setFaceType(List); setCaption(i18n("Dolphin Preferences")); - setButtons(Ok | Apply | Cancel); + setButtons(Ok | Apply | Cancel | Default); setDefaultButton(Ok); m_generalSettingsPage = new GeneralSettingsPage(mainWindow, this); @@ -58,9 +61,15 @@ DolphinSettingsDialog::~DolphinSettingsDialog() void DolphinSettingsDialog::slotButtonClicked(int button) { - if (button == Ok || button == Apply) { + if ((button == Ok) || (button == Apply)) { applySettings(); + } else if (button == Default) { + const QString text(i18n("All settings will be reset to default values. Do you want to continue?")); + if (KMessageBox::questionYesNo(this, text) == KMessageBox::Yes) { + restoreDefaults(); + } } + KPageDialog::slotButtonClicked(button); } @@ -71,4 +80,11 @@ void DolphinSettingsDialog::applySettings() DolphinApplication::app()->refreshMainWindows(); } +void DolphinSettingsDialog::restoreDefaults() +{ + m_generalSettingsPage->restoreDefaults(); + m_viewSettingsPage->restoreDefaults(); + DolphinApplication::app()->refreshMainWindows(); +} + #include "dolphinsettingsdialog.moc" diff --git a/src/dolphinsettingsdialog.h b/src/dolphinsettingsdialog.h index 22d01b02e..612baa3c2 100644 --- a/src/dolphinsettingsdialog.h +++ b/src/dolphinsettingsdialog.h @@ -43,10 +43,12 @@ public: virtual ~DolphinSettingsDialog(); protected slots: + /** @see KDialog::slotButtonClicked() */ virtual void slotButtonClicked(int button); private: void applySettings(); + void restoreDefaults(); private: DolphinMainWindow* m_mainWindow; diff --git a/src/generalsettingspage.cpp b/src/generalsettingspage.cpp index 87c8a24c3..ee4832e57 100644 --- a/src/generalsettingspage.cpp +++ b/src/generalsettingspage.cpp @@ -50,7 +50,6 @@ GeneralSettingsPage::GeneralSettingsPage(DolphinMainWindow* mainWin, QWidget* pa m_confirmDelete(0) { const int spacing = KDialog::spacingHint(); - GeneralSettings* settings = DolphinSettings::instance().generalSettings(); QVBoxLayout* topLayout = new QVBoxLayout(this); KVBox* vBox = new KVBox(this); @@ -63,7 +62,7 @@ GeneralSettingsPage::GeneralSettingsPage(DolphinMainWindow* mainWin, QWidget* pa homeUrlBox->setSpacing(spacing); new QLabel(i18n("Location:"), homeUrlBox); - m_homeUrl = new QLineEdit(settings->homeUrl(), homeUrlBox); + m_homeUrl = new QLineEdit(homeUrlBox); QPushButton* selectHomeUrlButton = new QPushButton(KIcon("folder-open"), QString(), homeUrlBox); connect(selectHomeUrlButton, SIGNAL(clicked()), @@ -85,17 +84,10 @@ GeneralSettingsPage::GeneralSettingsPage(DolphinMainWindow* mainWin, QWidget* pa QGroupBox* startBox = new QGroupBox(i18n("Start"), vBox); - // create 'Split view' checkbox + // create 'Split view', 'Editable location' and 'Filter bar' checkboxes m_splitView = new QCheckBox(i18n("Split view"), startBox); - m_splitView->setChecked(settings->splitView()); - - // create 'Editable location' checkbox m_editableUrl = new QCheckBox(i18n("Editable location"), startBox); - m_editableUrl->setChecked(settings->editableUrl()); - - // create 'Filter bar' checkbox m_filterBar = new QCheckBox(i18n("Filter bar"),startBox); - m_filterBar->setChecked(settings->filterBar()); QVBoxLayout* startBoxLayout = new QVBoxLayout(startBox); startBoxLayout->addWidget(m_splitView); @@ -130,6 +122,8 @@ GeneralSettingsPage::GeneralSettingsPage(DolphinMainWindow* mainWin, QWidget* pa new QWidget(vBox); topLayout->addWidget(vBox); + + loadSettings(); } GeneralSettingsPage::~GeneralSettingsPage() @@ -161,6 +155,20 @@ void GeneralSettingsPage::applySettings() kdeConfig.sync(); } +void GeneralSettingsPage::restoreDefaults() +{ + GeneralSettings* settings = DolphinSettings::instance().generalSettings(); + settings->setDefaults(); + + // TODO: reset default settings for trash and show delete command... + //KSharedConfig::Ptr konqConfig = KSharedConfig::openConfig("konquerorrc", KConfig::IncludeGlobals); + //KConfigGroup trashConfig(konqConfig, "Trash"); + //KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig("kdeglobals", KConfig::NoGlobals); + //KConfigGroup kdeConfig(globalConfig, "KDE"); + + loadSettings(); +} + void GeneralSettingsPage::selectHomeUrl() { const QString homeUrl(m_homeUrl->text()); @@ -181,4 +189,13 @@ void GeneralSettingsPage::useDefaultLocation() m_homeUrl->setText("file://" + QDir::homePath()); } +void GeneralSettingsPage::loadSettings() +{ + GeneralSettings* settings = DolphinSettings::instance().generalSettings(); + m_homeUrl->setText(settings->homeUrl()); + m_splitView->setChecked(settings->splitView()); + m_editableUrl->setChecked(settings->editableUrl()); + m_filterBar->setChecked(settings->filterBar()); +} + #include "generalsettingspage.moc" diff --git a/src/generalsettingspage.h b/src/generalsettingspage.h index 83d4b0dba..90f510c28 100644 --- a/src/generalsettingspage.h +++ b/src/generalsettingspage.h @@ -30,8 +30,8 @@ class QCheckBox; /** * @brief Page for the 'General' settings of the Dolphin settings dialog. * - * The general settings allow to set the home Url, the default view mode - * and the split view mode. + * The general settings allow to set the home URL and to configure the + * state of the view mode, split mode and the filter bar when starting Dolphin. */ class GeneralSettingsPage : public SettingsPageBase { @@ -41,14 +41,20 @@ public: GeneralSettingsPage(DolphinMainWindow* mainWindow, QWidget* parent); virtual ~GeneralSettingsPage(); - /** @see SettingsPageBase::applySettings */ + /** @see SettingsPageBase::applySettings() */ virtual void applySettings(); + /** @see SettingsPageBase::restoreDefaults() */ + virtual void restoreDefaults(); + private slots: void selectHomeUrl(); void useCurrentLocation(); void useDefaultLocation(); +private: + void loadSettings(); + private: DolphinMainWindow* m_mainWindow; QLineEdit* m_homeUrl; diff --git a/src/generalviewsettingspage.cpp b/src/generalviewsettingspage.cpp index 7b4eba169..48b9b653b 100644 --- a/src/generalviewsettingspage.cpp +++ b/src/generalviewsettingspage.cpp @@ -42,11 +42,9 @@ GeneralViewSettingsPage::GeneralViewSettingsPage(DolphinMainWindow* mainWindow, m_mainWindow(mainWindow), m_localProps(0), m_globalProps(0), - m_maxPreviewSize(0) + m_maxPreviewSize(0), + m_spinBox(0) { - GeneralSettings* settings = DolphinSettings::instance().generalSettings(); - Q_ASSERT(settings != 0); - const int spacing = KDialog::spacingHint(); const int margin = KDialog::marginHint(); const QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); @@ -58,11 +56,6 @@ GeneralViewSettingsPage::GeneralViewSettingsPage(DolphinMainWindow* mainWindow, m_localProps = new QRadioButton(i18n("Remember view properties for each folder"), propsBox); m_globalProps = new QRadioButton(i18n("Use common view properties for all folders"), propsBox); - if (settings->globalViewProps()) { - m_globalProps->setChecked(true); - } else { - m_localProps->setChecked(true); - } QVBoxLayout* propsBoxLayout = new QVBoxLayout(propsBox); propsBoxLayout->addWidget(m_localProps); @@ -75,34 +68,13 @@ GeneralViewSettingsPage::GeneralViewSettingsPage(DolphinMainWindow* mainWindow, KHBox* vBox = new KHBox(previewBox); vBox->setSpacing(spacing); - - const int min = 1; // MB - const int max = 100; // MB m_maxPreviewSize = new QSlider(Qt::Horizontal, vBox); - m_maxPreviewSize->setRange(min, max); - m_maxPreviewSize->setPageStep(10); - m_maxPreviewSize->setSingleStep(1); - m_maxPreviewSize->setTickPosition(QSlider::TicksBelow); - - KConfigGroup globalConfig(KGlobal::config(), "PreviewSettings"); - const int maxByteSize = globalConfig.readEntry("MaximumSize", 1024 * 1024 /* 1 MB */); - int maxMByteSize = maxByteSize / (1024 * 1024); - if (maxMByteSize < 1) { - maxMByteSize = 1; - } else if (maxMByteSize > max) { - maxMByteSize = max; - } - m_maxPreviewSize->setValue(maxMByteSize); - QSpinBox* spinBox = new QSpinBox(vBox); - spinBox->setRange(min, max); - spinBox->setSingleStep(1); - spinBox->setSuffix(" MB"); - spinBox->setValue(m_maxPreviewSize->value()); + m_spinBox = new QSpinBox(vBox); connect(m_maxPreviewSize, SIGNAL(valueChanged(int)), - spinBox, SLOT(setValue(int))); - connect(spinBox, SIGNAL(valueChanged(int)), + m_spinBox, SLOT(setValue(int))); + connect(m_spinBox, SIGNAL(valueChanged(int)), m_maxPreviewSize, SLOT(setValue(int))); QVBoxLayout* previewBoxLayout = new QVBoxLayout(previewBox); @@ -113,11 +85,18 @@ GeneralViewSettingsPage::GeneralViewSettingsPage(DolphinMainWindow* mainWindow, // a vertical resizing. This assures that the dialog layout // is not stretched vertically. new QWidget(this); + + loadSettings(); } GeneralViewSettingsPage::~GeneralViewSettingsPage() -{} +{ + GeneralSettings* settings = DolphinSettings::instance().generalSettings(); + settings->setDefaults(); + + loadSettings(); +} void GeneralViewSettingsPage::applySettings() { @@ -127,7 +106,6 @@ void GeneralViewSettingsPage::applySettings() const bool useGlobalProps = m_globalProps->isChecked(); GeneralSettings* settings = DolphinSettings::instance().generalSettings(); - Q_ASSERT(settings != 0); settings->setGlobalViewProps(useGlobalProps); if (useGlobalProps) { @@ -147,4 +125,43 @@ void GeneralViewSettingsPage::applySettings() globalConfig.sync(); } +void GeneralViewSettingsPage::restoreDefaults() +{ + GeneralSettings* settings = DolphinSettings::instance().generalSettings(); + settings->setDefaults(); + loadSettings(); +} + +void GeneralViewSettingsPage::loadSettings() +{ + GeneralSettings* settings = DolphinSettings::instance().generalSettings(); + if (settings->globalViewProps()) { + m_globalProps->setChecked(true); + } else { + m_localProps->setChecked(true); + } + + const int min = 1; // MB + const int max = 100; // MB + m_maxPreviewSize->setRange(min, max); + m_maxPreviewSize->setPageStep(10); + m_maxPreviewSize->setSingleStep(1); + m_maxPreviewSize->setTickPosition(QSlider::TicksBelow); + + KConfigGroup globalConfig(KGlobal::config(), "PreviewSettings"); + const int maxByteSize = globalConfig.readEntry("MaximumSize", 1024 * 1024 /* 1 MB */); + int maxMByteSize = maxByteSize / (1024 * 1024); + if (maxMByteSize < 1) { + maxMByteSize = 1; + } else if (maxMByteSize > max) { + maxMByteSize = max; + } + m_maxPreviewSize->setValue(maxMByteSize); + + m_spinBox->setRange(min, max); + m_spinBox->setSingleStep(1); + m_spinBox->setSuffix(" MB"); + m_spinBox->setValue(m_maxPreviewSize->value()); +} + #include "generalviewsettingspage.moc" diff --git a/src/generalviewsettingspage.h b/src/generalviewsettingspage.h index ad9a68761..9c5edecf3 100644 --- a/src/generalviewsettingspage.h +++ b/src/generalviewsettingspage.h @@ -25,6 +25,7 @@ class DolphinMainWindow; class QRadioButton; class QSlider; +class QSpinBox; /** * @brief Represents the page from the Dolphin Settings which allows @@ -45,11 +46,18 @@ public: */ void applySettings(); + /** Restores the settings to default values. */ + void restoreDefaults(); + +private: + void loadSettings(); + private: DolphinMainWindow* m_mainWindow; QRadioButton* m_localProps; QRadioButton* m_globalProps; QSlider* m_maxPreviewSize; + QSpinBox* m_spinBox; }; #endif diff --git a/src/iconsviewsettingspage.cpp b/src/iconsviewsettingspage.cpp index 86823ede0..378ced540 100644 --- a/src/iconsviewsettingspage.cpp +++ b/src/iconsviewsettingspage.cpp @@ -59,11 +59,6 @@ IconsViewSettingsPage::IconsViewSettingsPage(DolphinMainWindow* mainWindow, setSpacing(spacing); setMargin(margin); - IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings(); - Q_ASSERT(settings != 0); - m_iconSize = settings->iconSize(); - m_previewSize = settings->previewSize(); - m_iconSizeButton = new QPushButton(i18n("Change Icon && Preview Size..."), this); connect(m_iconSizeButton, SIGNAL(clicked()), this, SLOT(openIconSizeDialog())); @@ -75,15 +70,9 @@ IconsViewSettingsPage::IconsViewSettingsPage(DolphinMainWindow* mainWindow, QLabel* fontLabel = new QLabel(i18n("Font:"), textGroup); m_fontRequester = new KFontRequester(textGroup); - QFont font(settings->fontFamily(), - settings->fontSize()); - font.setItalic(settings->italicFont()); - font.setBold(settings->boldFont()); - m_fontRequester->setFont(font); QLabel* textlinesCountLabel = new QLabel(i18n("Number of lines:"), textGroup); m_textlinesCountBox = new QSpinBox(1, 5, 1, textGroup); - m_textlinesCountBox->setValue(settings->numberOfTextlines()); QLabel* textWidthLabel = new QLabel(i18n("Text width:"), textGroup); m_textWidthBox = new QComboBox(textGroup); @@ -91,20 +80,6 @@ IconsViewSettingsPage::IconsViewSettingsPage(DolphinMainWindow* mainWindow, m_textWidthBox->addItem(i18n("Medium")); m_textWidthBox->addItem(i18n("Large")); - const bool leftToRightArrangement = (settings->arrangement() == QListView::LeftToRight); - int textWidthIndex = 0; - const int remainingWidth = settings->itemWidth() - settings->iconSize(); - if (leftToRightArrangement) { - textWidthIndex = (remainingWidth - LeftToRightBase) / LeftToRightInc; - } else { - textWidthIndex = (remainingWidth - TopToBottomBase) / TopToBottomInc; - } - // ensure that chosen index is always valid - textWidthIndex = qMax(textWidthIndex, 0); - textWidthIndex = qMin(textWidthIndex, m_textWidthBox->count() - 1); - - m_textWidthBox->setCurrentIndex(textWidthIndex); - QGridLayout* textGroupLayout = new QGridLayout(textGroup); textGroupLayout->addWidget(fontLabel, 0, 0); textGroupLayout->addWidget(m_fontRequester, 0, 1); @@ -121,14 +96,12 @@ IconsViewSettingsPage::IconsViewSettingsPage(DolphinMainWindow* mainWindow, m_arrangementBox = new QComboBox(gridGroup); m_arrangementBox->addItem(i18n("Left to Right")); m_arrangementBox->addItem(i18n("Top to Bottom")); - m_arrangementBox->setCurrentIndex(leftToRightArrangement ? 0 : 1); QLabel* gridSpacingLabel = new QLabel(i18n("Grid spacing:"), gridGroup); m_gridSpacingBox = new QComboBox(gridGroup); m_gridSpacingBox->addItem(i18n("Small")); m_gridSpacingBox->addItem(i18n("Medium")); m_gridSpacingBox->addItem(i18n("Large")); - m_gridSpacingBox->setCurrentIndex((settings->gridSpacing() - GridSpacingBase) / GridSpacingInc); QGridLayout* gridGroupLayout = new QGridLayout(gridGroup); gridGroupLayout->addWidget(arrangementLabel, 0, 0); @@ -140,6 +113,8 @@ IconsViewSettingsPage::IconsViewSettingsPage(DolphinMainWindow* mainWindow, // a vertical resizing. This assures that the dialog layout // is not stretched vertically. new QWidget(this); + + loadSettings(); } IconsViewSettingsPage::~IconsViewSettingsPage() @@ -148,7 +123,6 @@ IconsViewSettingsPage::~IconsViewSettingsPage() void IconsViewSettingsPage::applySettings() { IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings(); - Q_ASSERT(settings != 0); settings->setIconSize(m_iconSize); settings->setPreviewSize(m_previewSize); @@ -188,6 +162,13 @@ void IconsViewSettingsPage::applySettings() m_gridSpacingBox->currentIndex() * GridSpacingInc); } +void IconsViewSettingsPage::restoreDefaults() +{ + IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings(); + settings->setDefaults(); + loadSettings(); +} + void IconsViewSettingsPage::openIconSizeDialog() { IconSizeDialog dialog(this); @@ -197,4 +178,36 @@ void IconsViewSettingsPage::openIconSizeDialog() } } +void IconsViewSettingsPage::loadSettings() +{ + IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings(); + + m_iconSize = settings->iconSize(); + m_previewSize = settings->previewSize(); + + QFont font(settings->fontFamily(), + settings->fontSize()); + font.setItalic(settings->italicFont()); + font.setBold(settings->boldFont()); + m_fontRequester->setFont(font); + + m_textlinesCountBox->setValue(settings->numberOfTextlines()); + + const bool leftToRightArrangement = (settings->arrangement() == QListView::LeftToRight); + int textWidthIndex = 0; + const int remainingWidth = settings->itemWidth() - settings->iconSize(); + if (leftToRightArrangement) { + textWidthIndex = (remainingWidth - LeftToRightBase) / LeftToRightInc; + } else { + textWidthIndex = (remainingWidth - TopToBottomBase) / TopToBottomInc; + } + // ensure that chosen index is always valid + textWidthIndex = qMax(textWidthIndex, 0); + textWidthIndex = qMin(textWidthIndex, m_textWidthBox->count() - 1); + + m_textWidthBox->setCurrentIndex(textWidthIndex); + m_arrangementBox->setCurrentIndex(leftToRightArrangement ? 0 : 1); + m_gridSpacingBox->setCurrentIndex((settings->gridSpacing() - GridSpacingBase) / GridSpacingInc); +} + #include "iconsviewsettingspage.moc" diff --git a/src/iconsviewsettingspage.h b/src/iconsviewsettingspage.h index 817620e28..3080b3b28 100644 --- a/src/iconsviewsettingspage.h +++ b/src/iconsviewsettingspage.h @@ -61,9 +61,15 @@ public: */ void applySettings(); + /** Restores the settings to default values. */ + void restoreDefaults(); + private slots: void openIconSizeDialog(); +private: + void loadSettings(); + private: enum { diff --git a/src/settingspagebase.h b/src/settingspagebase.h index d8626feb3..d785e5dcd 100644 --- a/src/settingspagebase.h +++ b/src/settingspagebase.h @@ -41,6 +41,12 @@ public: * persistently store the settings. */ virtual void applySettings() = 0; + + /** + * Must be implemented by a derived class to + * restored the settings to default values. + */ + virtual void restoreDefaults() = 0; }; #endif diff --git a/src/viewsettingspage.cpp b/src/viewsettingspage.cpp index 9791588d6..b52dfc78d 100644 --- a/src/viewsettingspage.cpp +++ b/src/viewsettingspage.cpp @@ -68,7 +68,8 @@ ViewSettingsPage::ViewSettingsPage(DolphinMainWindow* mainWindow, } ViewSettingsPage::~ViewSettingsPage() -{} +{ +} void ViewSettingsPage::applySettings() { @@ -78,4 +79,12 @@ void ViewSettingsPage::applySettings() m_columnPage->applySettings(); } +void ViewSettingsPage::restoreDefaults() +{ + m_generalPage->restoreDefaults(); + m_iconsPage->restoreDefaults(); + m_detailsPage->restoreDefaults(); + m_columnPage->restoreDefaults(); +} + #include "viewsettingspage.moc" diff --git a/src/viewsettingspage.h b/src/viewsettingspage.h index da80f26fe..46671cb0c 100644 --- a/src/viewsettingspage.h +++ b/src/viewsettingspage.h @@ -43,9 +43,12 @@ public: ViewSettingsPage(DolphinMainWindow* mainWindow, QWidget* parent); virtual ~ViewSettingsPage(); - /** @see SettingsPageBase::applySettings */ + /** @see SettingsPageBase::applySettings() */ virtual void applySettings(); + /** @see SettingsPageBase::restoreDefaults() */ + virtual void restoreDefaults(); + private: GeneralViewSettingsPage* m_generalPage; IconsViewSettingsPage* m_iconsPage; -- 2.47.3