┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/settings/viewmodes
diff options
context:
space:
mode:
Diffstat (limited to 'src/settings/viewmodes')
-rw-r--r--src/settings/viewmodes/viewmodesettings.cpp136
-rw-r--r--src/settings/viewmodes/viewmodesettings.h34
-rw-r--r--src/settings/viewmodes/viewsettingstab.cpp35
-rw-r--r--src/settings/viewmodes/viewsettingstab.h4
4 files changed, 111 insertions, 98 deletions
diff --git a/src/settings/viewmodes/viewmodesettings.cpp b/src/settings/viewmodes/viewmodesettings.cpp
index 2ea843f3b..8c11bde5b 100644
--- a/src/settings/viewmodes/viewmodesettings.cpp
+++ b/src/settings/viewmodes/viewmodesettings.cpp
@@ -1,5 +1,6 @@
/*
* SPDX-FileCopyrightText: 2011 Peter Penz <[email protected]>
+ * SPDX-FileCopyrightText: 2021 Felix Ernst <[email protected]>
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
@@ -10,121 +11,154 @@
#include "dolphin_detailsmodesettings.h"
#include "dolphin_iconsmodesettings.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; \
+ViewModeSettings::ViewModeSettings(DolphinView::Mode mode)
+{
+ switch (mode) {
+ case DolphinView::IconsView: m_viewModeSettingsVariant = IconsModeSettings::self(); return;
+ case DolphinView::CompactView: m_viewModeSettingsVariant = CompactModeSettings::self(); return;
+ case DolphinView::DetailsView: m_viewModeSettingsVariant = DetailsModeSettings::self(); return;
+ default:
+ Q_UNREACHABLE();
}
+}
-#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: value = IconsModeSettings::getValue(); \
- Q_ASSERT(false); \
- break; \
- } \
- return value
-
-ViewModeSettings::ViewModeSettings(ViewMode mode) :
- m_mode(mode)
+ViewModeSettings::ViewModeSettings(ViewSettingsTab::Mode mode)
{
+ switch (mode) {
+ case ViewSettingsTab::IconsMode: m_viewModeSettingsVariant = IconsModeSettings::self(); return;
+ case ViewSettingsTab::CompactMode: m_viewModeSettingsVariant = CompactModeSettings::self(); return;
+ case ViewSettingsTab::DetailsMode: m_viewModeSettingsVariant = DetailsModeSettings::self(); return;
+ default:
+ Q_UNREACHABLE();
+ }
}
-ViewModeSettings::~ViewModeSettings()
+ViewModeSettings::ViewModeSettings(KStandardItemListView::ItemLayout itemLayout)
{
+ switch (itemLayout) {
+ case KStandardItemListView::IconsLayout: m_viewModeSettingsVariant = IconsModeSettings::self(); return;
+ case KStandardItemListView::CompactLayout: m_viewModeSettingsVariant = CompactModeSettings::self(); return;
+ case KStandardItemListView::DetailsLayout: m_viewModeSettingsVariant = DetailsModeSettings::self(); return;
+ default:
+ Q_UNREACHABLE();
+ }
}
-void ViewModeSettings::setIconSize(int size) const
+void ViewModeSettings::setIconSize(int iconSize)
{
- VIEWMODESETTINGS_SET_VALUE(m_mode, setIconSize, size);
+ std::visit([iconSize](auto &&v) {
+ v->setIconSize(iconSize);
+ }, m_viewModeSettingsVariant);
}
int ViewModeSettings::iconSize() const
{
- VIEWMODESETTINGS_RETURN_VALUE(m_mode, iconSize, int);
+ return std::visit([](auto &&v) {
+ return v->iconSize();
+ }, m_viewModeSettingsVariant);
}
-void ViewModeSettings::setPreviewSize(int size) const
+void ViewModeSettings::setPreviewSize(int previewSize)
{
- VIEWMODESETTINGS_SET_VALUE(m_mode, setPreviewSize, size);
+ std::visit([previewSize](auto &&v) {
+ v->setPreviewSize(previewSize);
+ }, m_viewModeSettingsVariant);
}
int ViewModeSettings::previewSize() const
{
- VIEWMODESETTINGS_RETURN_VALUE(m_mode, previewSize, int);
+ return std::visit([](auto &&v) {
+ return v->previewSize();
+ }, m_viewModeSettingsVariant);
}
-void ViewModeSettings::setUseSystemFont(bool flag)
+void ViewModeSettings::setUseSystemFont(bool useSystemFont)
{
- VIEWMODESETTINGS_SET_VALUE(m_mode, setUseSystemFont, flag);
+ std::visit([useSystemFont](auto &&v) {
+ v->setUseSystemFont(useSystemFont);
+ }, m_viewModeSettingsVariant);
}
bool ViewModeSettings::useSystemFont() const
{
- VIEWMODESETTINGS_RETURN_VALUE(m_mode, useSystemFont, bool);
+ return std::visit([](auto &&v) {
+ return v->useSystemFont();
+ }, m_viewModeSettingsVariant);
}
-void ViewModeSettings::setFontFamily(const QString& fontFamily)
+void ViewModeSettings::setFontFamily(const QString &fontFamily)
{
- VIEWMODESETTINGS_SET_VALUE(m_mode, setFontFamily, fontFamily);
+ std::visit([&fontFamily](auto &&v) {
+ v->setFontFamily(fontFamily);
+ }, m_viewModeSettingsVariant);
}
QString ViewModeSettings::fontFamily() const
{
- VIEWMODESETTINGS_RETURN_VALUE(m_mode, fontFamily, QString);
+ return std::visit([](auto &&v) {
+ return v->fontFamily();
+ }, m_viewModeSettingsVariant);
}
void ViewModeSettings::setFontSize(qreal fontSize)
{
- VIEWMODESETTINGS_SET_VALUE(m_mode, setFontSize, fontSize);
+ std::visit([fontSize](auto &&v) {
+ v->setFontSize(fontSize);
+ }, m_viewModeSettingsVariant);
}
qreal ViewModeSettings::fontSize() const
{
- VIEWMODESETTINGS_RETURN_VALUE(m_mode, fontSize, qreal);
+ return std::visit([](auto &&v) {
+ return v->fontSize();
+ }, m_viewModeSettingsVariant);
}
void ViewModeSettings::setItalicFont(bool italic)
{
- VIEWMODESETTINGS_SET_VALUE(m_mode, setItalicFont, italic);
+ std::visit([italic](auto &&v) {
+ v->setItalicFont(italic);
+ }, m_viewModeSettingsVariant);
}
bool ViewModeSettings::italicFont() const
{
- VIEWMODESETTINGS_RETURN_VALUE(m_mode, italicFont, bool);
+ return std::visit([](auto &&v) {
+ return v->italicFont();
+ }, m_viewModeSettingsVariant);
}
void ViewModeSettings::setFontWeight(int fontWeight)
{
- VIEWMODESETTINGS_SET_VALUE(m_mode, setFontWeight, fontWeight);
+ std::visit([fontWeight](auto &&v) {
+ v->setFontWeight(fontWeight);
+ }, m_viewModeSettingsVariant);
}
int ViewModeSettings::fontWeight() const
{
- VIEWMODESETTINGS_RETURN_VALUE(m_mode, fontWeight, int);
+ return std::visit([](auto &&v) {
+ return v->fontWeight();
+ }, m_viewModeSettingsVariant);
+}
+
+void ViewModeSettings::useDefaults(bool useDefaults)
+{
+ std::visit([useDefaults](auto &&v) {
+ v->useDefaults(useDefaults);
+ }, m_viewModeSettingsVariant);
}
void ViewModeSettings::readConfig()
{
- switch (m_mode) {
- case ViewModeSettings::IconsMode: IconsModeSettings::self()->load(); break;
- case ViewModeSettings::CompactMode: CompactModeSettings::self()->load(); break;
- case ViewModeSettings::DetailsMode: DetailsModeSettings::self()->load(); break;
- default: Q_ASSERT(false); break;
- }
+ std::visit([](auto &&v) {
+ v->load();
+ }, m_viewModeSettingsVariant);
}
void ViewModeSettings::save()
{
- switch (m_mode) {
- case ViewModeSettings::IconsMode: IconsModeSettings::self()->save(); break;
- case ViewModeSettings::CompactMode: CompactModeSettings::self()->save(); break;
- case ViewModeSettings::DetailsMode: DetailsModeSettings::self()->save(); break;
- default: Q_ASSERT(false); break;
- }
+ std::visit([](auto &&v) {
+ return v->save();
+ }, m_viewModeSettingsVariant);
}
diff --git a/src/settings/viewmodes/viewmodesettings.h b/src/settings/viewmodes/viewmodesettings.h
index 2e5299792..5d2b6e0e2 100644
--- a/src/settings/viewmodes/viewmodesettings.h
+++ b/src/settings/viewmodes/viewmodesettings.h
@@ -7,8 +7,18 @@
#ifndef VIEWMODESETTINGS_H
#define VIEWMODESETTINGS_H
+#include "kitemviews/kstandarditemlistview.h"
+#include "viewsettingstab.h"
+#include "views/dolphinview.h"
+
#include <QString>
+#include <variant>
+
+class CompactModeSettings;
+class DetailsModeSettings;
+class IconsModeSettings;
+
/**
* @short Helper class for accessing similar properties of IconsModeSettings,
* CompactModeSettings and DetailsModeSettings.
@@ -16,26 +26,20 @@
class ViewModeSettings
{
public:
- enum ViewMode
- {
- IconsMode,
- CompactMode,
- DetailsMode
- };
+ explicit ViewModeSettings(DolphinView::Mode mode);
+ explicit ViewModeSettings(ViewSettingsTab::Mode mode);
+ explicit ViewModeSettings(KStandardItemListView::ItemLayout itemLayout);
- explicit ViewModeSettings(ViewMode mode);
- virtual ~ViewModeSettings();
-
- void setIconSize(int size) const;
+ void setIconSize(int iconSize);
int iconSize() const;
- void setPreviewSize(int size) const;
+ void setPreviewSize(int previewSize);
int previewSize() const;
- void setUseSystemFont(bool flag);
+ void setUseSystemFont(bool useSystemFont);
bool useSystemFont() const;
- void setFontFamily(const QString& fontFamily);
+ void setFontFamily(const QString &fontFamily);
QString fontFamily() const;
void setFontSize(qreal fontSize);
@@ -47,11 +51,13 @@ public:
void setFontWeight(int fontWeight);
int fontWeight() const;
+ void useDefaults(bool useDefaults);
+
void readConfig();
void save();
private:
- ViewMode m_mode;
+ std::variant<IconsModeSettings *, CompactModeSettings *, DetailsModeSettings *> m_viewModeSettingsVariant;
};
#endif
diff --git a/src/settings/viewmodes/viewsettingstab.cpp b/src/settings/viewmodes/viewsettingstab.cpp
index 0fd2dca3a..7ea8d5809 100644
--- a/src/settings/viewmodes/viewsettingstab.cpp
+++ b/src/settings/viewmodes/viewsettingstab.cpp
@@ -11,6 +11,7 @@
#include "dolphin_iconsmodesettings.h"
#include "dolphinfontrequester.h"
#include "global.h"
+#include "settings/viewmodes/viewmodesettings.h"
#include "views/zoomlevelinfo.h"
#include <KLocalizedString>
@@ -206,7 +207,7 @@ void ViewSettingsTab::applySettings()
break;
}
- ViewModeSettings settings(viewMode());
+ ViewModeSettings settings(m_mode);
const int iconSize = ZoomLevelInfo::iconSizeForZoomLevel(m_defaultSizeSlider->value());
const int previewSize = ZoomLevelInfo::iconSizeForZoomLevel(m_previewSizeSlider->value());
@@ -224,17 +225,10 @@ void ViewSettingsTab::applySettings()
void ViewSettingsTab::restoreDefaultSettings()
{
- KConfigSkeleton* settings = nullptr;
- switch (m_mode) {
- case IconsMode: settings = IconsModeSettings::self(); break;
- case CompactMode: settings = CompactModeSettings::self(); break;
- case DetailsMode: settings = DetailsModeSettings::self(); break;
- default: Q_ASSERT(false); break;
- }
-
- settings->useDefaults(true);
+ ViewModeSettings settings(m_mode);
+ settings.useDefaults(true);
loadSettings();
- settings->useDefaults(false);
+ settings.useDefaults(false);
}
void ViewSettingsTab::loadSettings()
@@ -266,7 +260,7 @@ void ViewSettingsTab::loadSettings()
break;
}
- const ViewModeSettings settings(viewMode());
+ const ViewModeSettings settings(m_mode);
const QSize iconSize(settings.iconSize(), settings.iconSize());
m_defaultSizeSlider->setValue(ZoomLevelInfo::zoomLevelForIconSize(iconSize));
@@ -285,23 +279,6 @@ void ViewSettingsTab::loadSettings()
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: mode = ViewModeSettings::IconsMode;
- Q_ASSERT(false);
- break;
- }
-
- return mode;
-}
-
-
void ViewSettingsTab::slotDefaultSliderMoved(int value)
{
showToolTip(m_defaultSizeSlider, value);
diff --git a/src/settings/viewmodes/viewsettingstab.h b/src/settings/viewmodes/viewsettingstab.h
index 798968345..36dde0583 100644
--- a/src/settings/viewmodes/viewsettingstab.h
+++ b/src/settings/viewmodes/viewsettingstab.h
@@ -7,8 +7,6 @@
#ifndef VIEWSETTINGSTAB_H
#define VIEWSETTINGSTAB_H
-#include "settings/viewmodes/viewmodesettings.h"
-
#include <QWidget>
class DolphinFontRequester;
@@ -50,8 +48,6 @@ private:
void loadSettings();
void showToolTip(QSlider* slider, int value);
- ViewModeSettings::ViewMode viewMode() const;
-
private:
Mode m_mode;
QSlider* m_defaultSizeSlider;