┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/settings
diff options
context:
space:
mode:
Diffstat (limited to 'src/settings')
-rw-r--r--src/settings/viewmodes/viewmodesettings.cpp141
-rw-r--r--src/settings/viewmodes/viewmodesettings.h70
-rw-r--r--src/settings/viewmodes/viewsettingstab.cpp118
-rw-r--r--src/settings/viewmodes/viewsettingstab.h3
4 files changed, 261 insertions, 71 deletions
diff --git a/src/settings/viewmodes/viewmodesettings.cpp b/src/settings/viewmodes/viewmodesettings.cpp
new file mode 100644
index 000000000..4cb59069a
--- /dev/null
+++ b/src/settings/viewmodes/viewmodesettings.cpp
@@ -0,0 +1,141 @@
+/***************************************************************************
+ * Copyright (C) 2011 by Peter Penz <[email protected]> *
+ * *
+ * 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; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * 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; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
+ ***************************************************************************/
+
+#include "viewmodesettings.h"
+
+#include "dolphin_iconsmodesettings.h"
+#include "dolphin_detailsmodesettings.h"
+#include "dolphin_compactmodesettings.h"
+
+#define VIEWMODESETTINGS_SET_VALUE(mode, setValue, value) \
+ switch (mode) { \
+ case ViewModeSettings::IconsMode: IconsModeSettings::setValue(value); break; \
+ case ViewModeSettings::CompactMode: CompactModeSettings::setValue(value); break; \
+ case ViewModeSettings::DetailsMode: DetailsModeSettings::setValue(value); break; \
+ default: Q_ASSERT(false); break; \
+ }
+
+#define VIEWMODESETTINGS_RETURN_VALUE(mode, getValue, type) \
+ type value; \
+ switch (m_mode) { \
+ case IconsMode: value = IconsModeSettings::getValue(); break; \
+ case CompactMode: value = CompactModeSettings::getValue(); break; \
+ case DetailsMode: value = DetailsModeSettings::getValue(); break; \
+ default: Q_ASSERT(false); break; \
+ } \
+ return value
+
+ViewModeSettings::ViewModeSettings(ViewMode mode) :
+ m_mode(mode)
+{
+}
+
+ViewModeSettings::~ViewModeSettings()
+{
+}
+
+void ViewModeSettings::setIconSize(int size) const
+{
+ VIEWMODESETTINGS_SET_VALUE(m_mode, setIconSize, size);
+}
+
+int ViewModeSettings::iconSize() const
+{
+ VIEWMODESETTINGS_RETURN_VALUE(m_mode, iconSize, int);
+}
+
+void ViewModeSettings::setPreviewSize(int size) const
+{
+ VIEWMODESETTINGS_SET_VALUE(m_mode, setPreviewSize, size);
+}
+
+int ViewModeSettings::previewSize() const
+{
+ VIEWMODESETTINGS_RETURN_VALUE(m_mode, previewSize, int);
+}
+
+void ViewModeSettings::setUseSystemFont(bool flag)
+{
+ VIEWMODESETTINGS_SET_VALUE(m_mode, setUseSystemFont, flag);
+}
+
+bool ViewModeSettings::useSystemFont() const
+{
+ VIEWMODESETTINGS_RETURN_VALUE(m_mode, useSystemFont, bool);
+}
+
+void ViewModeSettings::setFontFamily(const QString& fontFamily)
+{
+ VIEWMODESETTINGS_SET_VALUE(m_mode, setFontFamily, fontFamily);
+}
+
+QString ViewModeSettings::fontFamily() const
+{
+ VIEWMODESETTINGS_RETURN_VALUE(m_mode, fontFamily, QString);
+}
+
+void ViewModeSettings::setFontSize(qreal fontSize)
+{
+ VIEWMODESETTINGS_SET_VALUE(m_mode, setFontSize, fontSize);
+}
+
+qreal ViewModeSettings::fontSize() const
+{
+ VIEWMODESETTINGS_RETURN_VALUE(m_mode, fontSize, qreal);
+}
+
+void ViewModeSettings::setItalicFont(bool italic)
+{
+ VIEWMODESETTINGS_SET_VALUE(m_mode, setItalicFont, italic);
+}
+
+bool ViewModeSettings::italicFont() const
+{
+ VIEWMODESETTINGS_RETURN_VALUE(m_mode, italicFont, bool);
+}
+
+void ViewModeSettings::setFontWeight(int fontWeight)
+{
+ VIEWMODESETTINGS_SET_VALUE(m_mode, setFontWeight, fontWeight);
+}
+
+int ViewModeSettings::fontWeight() const
+{
+ VIEWMODESETTINGS_RETURN_VALUE(m_mode, fontWeight, int);
+}
+
+void ViewModeSettings::readConfig()
+{
+ switch (m_mode) {
+ case ViewModeSettings::IconsMode: IconsModeSettings::self()->readConfig(); break;
+ case ViewModeSettings::CompactMode: CompactModeSettings::self()->readConfig(); break;
+ case ViewModeSettings::DetailsMode: DetailsModeSettings::self()->readConfig(); break;
+ default: Q_ASSERT(false); break;
+ }
+}
+
+void ViewModeSettings::writeConfig()
+{
+ switch (m_mode) {
+ case ViewModeSettings::IconsMode: IconsModeSettings::self()->writeConfig(); break;
+ case ViewModeSettings::CompactMode: CompactModeSettings::self()->writeConfig(); break;
+ case ViewModeSettings::DetailsMode: DetailsModeSettings::self()->writeConfig(); break;
+ default: Q_ASSERT(false); break;
+ }
+}
diff --git a/src/settings/viewmodes/viewmodesettings.h b/src/settings/viewmodes/viewmodesettings.h
new file mode 100644
index 000000000..be41ae284
--- /dev/null
+++ b/src/settings/viewmodes/viewmodesettings.h
@@ -0,0 +1,70 @@
+/***************************************************************************
+ * Copyright (C) 2011 by Peter Penz <[email protected]> *
+ * *
+ * 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; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * 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; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef VIEWMODESETTINGS_H
+#define VIEWMODESETTINGS_H
+
+#include <QString>
+
+/**
+ * @short Helper class for accessing similar properties of IconsModeSettings,
+ * CompactModeSettings and DetailsModeSettings.
+ */
+class ViewModeSettings
+{
+public:
+ enum ViewMode
+ {
+ IconsMode,
+ CompactMode,
+ DetailsMode
+ };
+
+ ViewModeSettings(ViewMode mode);
+ virtual ~ViewModeSettings();
+
+ void setIconSize(int size) const;
+ int iconSize() const;
+
+ void setPreviewSize(int size) const;
+ int previewSize() const;
+
+ void setUseSystemFont(bool flag);
+ bool useSystemFont() const;
+
+ void setFontFamily(const QString& fontFamily);
+ QString fontFamily() const;
+
+ void setFontSize(qreal fontSize);
+ qreal fontSize() const;
+
+ void setItalicFont(bool italic);
+ bool italicFont() const;
+
+ void setFontWeight(int fontWeight);
+ int fontWeight() const;
+
+ void readConfig();
+ void writeConfig();
+
+private:
+ ViewMode m_mode;
+};
+
+#endif
diff --git a/src/settings/viewmodes/viewsettingstab.cpp b/src/settings/viewmodes/viewsettingstab.cpp
index 743f042ca..6ad8663a6 100644
--- a/src/settings/viewmodes/viewsettingstab.cpp
+++ b/src/settings/viewmodes/viewsettingstab.cpp
@@ -34,41 +34,6 @@
#include <views/zoomlevelinfo.h>
-template<class T>
-void apply(int iconSizeValue, int previewSizeValue, const QFont& font, bool useSystemFont)
-{
- const int iconSize = ZoomLevelInfo::iconSizeForZoomLevel(iconSizeValue);
- const int previewSize = ZoomLevelInfo::iconSizeForZoomLevel(previewSizeValue);
- T::setIconSize(iconSize);
- T::setPreviewSize(previewSize);
-
- T::setUseSystemFont(useSystemFont);
- T::setFontFamily(font.family());
- T::setFontSize(font.pointSizeF());
- T::setItalicFont(font.italic());
- T::setFontWeight(font.weight());
-
- T::self()->writeConfig();
-}
-
-template<class T>
-void load(int* iconSizeValue, int* previewSizeValue, QFont* font, bool* useSystemFont)
-{
- const QSize iconSize(T::iconSize(), T::iconSize());
- *iconSizeValue = ZoomLevelInfo::zoomLevelForIconSize(iconSize);
-
- const QSize previewSize(T::previewSize(), T::previewSize());
- *previewSizeValue = ZoomLevelInfo::zoomLevelForIconSize(previewSize);
-
- *useSystemFont = T::useSystemFont();
-
- *font = QFont(T::fontFamily(), qRound(T::fontSize()));
- font->setItalic(T::italicFont());
- font->setWeight(T::fontWeight());
- font->setPointSizeF(T::fontSize());
-}
-
-
ViewSettingsTab::ViewSettingsTab(Mode mode, QWidget* parent) :
QWidget(parent),
m_mode(mode),
@@ -146,26 +111,27 @@ ViewSettingsTab::~ViewSettingsTab()
void ViewSettingsTab::applySettings()
{
- const int defaultSize = m_defaultSizeSlider->value();
- const int previewSize = m_previewSizeSlider->value();
const QFont font = m_fontRequester->currentFont();
const bool useSystemFont = (m_fontRequester->mode() == DolphinFontRequester::SystemFont);
- switch (m_mode) {
- case IconsMode:
+ if (m_mode == IconsMode) {
IconsModeSettings::setTextWidthIndex(m_textWidthBox->currentIndex());
- apply<IconsModeSettings>(defaultSize, previewSize, font, useSystemFont);
- break;
- case CompactMode:
- apply<CompactModeSettings>(defaultSize, previewSize, font, useSystemFont);
- break;
- case DetailsMode:
- apply<DetailsModeSettings>(defaultSize, previewSize, font, useSystemFont);
- break;
- default:
- Q_ASSERT(false);
- break;
}
+
+ ViewModeSettings settings(viewMode());
+
+ const int iconSize = ZoomLevelInfo::iconSizeForZoomLevel(m_defaultSizeSlider->value());
+ const int previewSize = ZoomLevelInfo::iconSizeForZoomLevel(m_previewSizeSlider->value());
+ settings.setIconSize(iconSize);
+ settings.setPreviewSize(previewSize);
+
+ settings.setUseSystemFont(useSystemFont);
+ settings.setFontFamily(font.family());
+ settings.setFontSize(font.pointSizeF());
+ settings.setItalicFont(font.italic());
+ settings.setFontWeight(font.weight());
+
+ settings.writeConfig();
}
void ViewSettingsTab::restoreDefaultSettings()
@@ -185,31 +151,41 @@ void ViewSettingsTab::restoreDefaultSettings()
void ViewSettingsTab::loadSettings()
{
- int iconSizeValue = 0;
- int previewSizeValue = 0;
- QFont font;
- bool useSystemFont = false;
-
- switch (m_mode) {
- case IconsMode:
+ if (m_mode == IconsMode) {
m_textWidthBox->setCurrentIndex(IconsModeSettings::textWidthIndex());
- load<IconsModeSettings>(&iconSizeValue, &previewSizeValue, &font, &useSystemFont);
- break;
- case CompactMode:
- load<CompactModeSettings>(&iconSizeValue, &previewSizeValue, &font, &useSystemFont);
- break;
- case DetailsMode:
- load<DetailsModeSettings>(&iconSizeValue, &previewSizeValue, &font, &useSystemFont);
- break;
- default:
- Q_ASSERT(false);
- break;
}
- m_defaultSizeSlider->setValue(iconSizeValue);
- m_previewSizeSlider->setValue(previewSizeValue);
- m_fontRequester->setMode(useSystemFont ? DolphinFontRequester::SystemFont : DolphinFontRequester::CustomFont);
+ const ViewModeSettings settings(viewMode());
+ const QSize iconSize(settings.iconSize(), settings.iconSize());
+ m_defaultSizeSlider->setValue(ZoomLevelInfo::zoomLevelForIconSize(iconSize));
+
+ const QSize previewSize(settings.previewSize(), settings.previewSize());
+ m_previewSizeSlider->setValue(ZoomLevelInfo::zoomLevelForIconSize(previewSize));
+
+ m_fontRequester->setMode(settings.useSystemFont()
+ ? DolphinFontRequester::SystemFont
+ : DolphinFontRequester::CustomFont);
+
+ QFont font(settings.fontFamily(), qRound(settings.fontSize()));
+ font.setItalic(settings.italicFont());
+ font.setWeight(settings.fontWeight());
+ font.setPointSizeF(settings.fontSize());
m_fontRequester->setCustomFont(font);
}
+ViewModeSettings::ViewMode ViewSettingsTab::viewMode() const
+{
+ ViewModeSettings::ViewMode mode;
+
+ switch (m_mode) {
+ case ViewSettingsTab::IconsMode: mode = ViewModeSettings::IconsMode; break;
+ case ViewSettingsTab::CompactMode: mode = ViewModeSettings::CompactMode; break;
+ case ViewSettingsTab::DetailsMode: mode = ViewModeSettings::DetailsMode; break;
+ default: Q_ASSERT(false); break;
+ }
+
+ return mode;
+}
+
+
#include "viewsettingstab.moc"
diff --git a/src/settings/viewmodes/viewsettingstab.h b/src/settings/viewmodes/viewsettingstab.h
index 1561df6c9..2e0f439aa 100644
--- a/src/settings/viewmodes/viewsettingstab.h
+++ b/src/settings/viewmodes/viewsettingstab.h
@@ -21,6 +21,7 @@
#define VIEWSETTINGSTAB_H
#include <QWidget>
+#include <settings/viewmodes/viewmodesettings.h>
class DolphinFontRequester;
class KComboBox;
@@ -53,6 +54,8 @@ signals:
private:
void loadSettings();
+ ViewModeSettings::ViewMode viewMode() const;
+
private:
Mode m_mode;
QSlider* m_defaultSizeSlider;