Macros should be avoided if possible. Instead this commit replaces
the usage of macros with an std::variant of the ViewModeSettings.
As part of this cleanup, code that belongs to the VideModeSettings
class is moved there. Some parameters are also renamed to be more
in line with typical naming conventions.
/*
* SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
/*
* SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
+ * SPDX-FileCopyrightText: 2021 Felix Ernst <fe.a.ernst@gmail.com>
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "dolphin_detailsmodesettings.h"
#include "dolphin_iconsmodesettings.h"
#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
{
}
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
{
}
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
{
}
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
{
}
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)
{
}
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
{
}
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)
{
}
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
{
}
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)
{
}
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
{
}
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()
{
}
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()
{
}
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);
#ifndef VIEWMODESETTINGS_H
#define VIEWMODESETTINGS_H
#ifndef VIEWMODESETTINGS_H
#define VIEWMODESETTINGS_H
+#include "kitemviews/kstandarditemlistview.h"
+#include "viewsettingstab.h"
+#include "views/dolphinview.h"
+
+#include <variant>
+
+class CompactModeSettings;
+class DetailsModeSettings;
+class IconsModeSettings;
+
/**
* @short Helper class for accessing similar properties of IconsModeSettings,
* CompactModeSettings and DetailsModeSettings.
/**
* @short Helper class for accessing similar properties of IconsModeSettings,
* CompactModeSettings and DetailsModeSettings.
class ViewModeSettings
{
public:
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);
- void setPreviewSize(int size) const;
+ void setPreviewSize(int previewSize);
- void setUseSystemFont(bool flag);
+ void setUseSystemFont(bool useSystemFont);
bool useSystemFont() const;
bool useSystemFont() const;
- void setFontFamily(const QString& fontFamily);
+ void setFontFamily(const QString &fontFamily);
QString fontFamily() const;
void setFontSize(qreal fontSize);
QString fontFamily() const;
void setFontSize(qreal fontSize);
void setFontWeight(int fontWeight);
int fontWeight() const;
void setFontWeight(int fontWeight);
int fontWeight() const;
+ void useDefaults(bool useDefaults);
+
void readConfig();
void save();
private:
void readConfig();
void save();
private:
+ std::variant<IconsModeSettings *, CompactModeSettings *, DetailsModeSettings *> m_viewModeSettingsVariant;
#include "dolphin_iconsmodesettings.h"
#include "dolphinfontrequester.h"
#include "global.h"
#include "dolphin_iconsmodesettings.h"
#include "dolphinfontrequester.h"
#include "global.h"
+#include "settings/viewmodes/viewmodesettings.h"
#include "views/zoomlevelinfo.h"
#include <KLocalizedString>
#include "views/zoomlevelinfo.h"
#include <KLocalizedString>
- ViewModeSettings settings(viewMode());
+ ViewModeSettings settings(m_mode);
const int iconSize = ZoomLevelInfo::iconSizeForZoomLevel(m_defaultSizeSlider->value());
const int previewSize = ZoomLevelInfo::iconSizeForZoomLevel(m_previewSizeSlider->value());
const int iconSize = ZoomLevelInfo::iconSizeForZoomLevel(m_defaultSizeSlider->value());
const int previewSize = ZoomLevelInfo::iconSizeForZoomLevel(m_previewSizeSlider->value());
void ViewSettingsTab::restoreDefaultSettings()
{
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);
- settings->useDefaults(false);
+ settings.useDefaults(false);
}
void ViewSettingsTab::loadSettings()
}
void ViewSettingsTab::loadSettings()
- const ViewModeSettings settings(viewMode());
+ const ViewModeSettings settings(m_mode);
const QSize iconSize(settings.iconSize(), settings.iconSize());
m_defaultSizeSlider->setValue(ZoomLevelInfo::zoomLevelForIconSize(iconSize));
const QSize iconSize(settings.iconSize(), settings.iconSize());
m_defaultSizeSlider->setValue(ZoomLevelInfo::zoomLevelForIconSize(iconSize));
m_fontRequester->setCustomFont(font);
}
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);
void ViewSettingsTab::slotDefaultSliderMoved(int value)
{
showToolTip(m_defaultSizeSlider, value);
#ifndef VIEWSETTINGSTAB_H
#define VIEWSETTINGSTAB_H
#ifndef VIEWSETTINGSTAB_H
#define VIEWSETTINGSTAB_H
-#include "settings/viewmodes/viewmodesettings.h"
-
#include <QWidget>
class DolphinFontRequester;
#include <QWidget>
class DolphinFontRequester;
void loadSettings();
void showToolTip(QSlider* slider, int value);
void loadSettings();
void showToolTip(QSlider* slider, int value);
- ViewModeSettings::ViewMode viewMode() const;
-
private:
Mode m_mode;
QSlider* m_defaultSizeSlider;
private:
Mode m_mode;
QSlider* m_defaultSizeSlider;
#include "dolphinfileitemlistwidget.h"
#include "kitemviews/kfileitemmodel.h"
#include "kitemviews/kitemlistcontroller.h"
#include "dolphinfileitemlistwidget.h"
#include "kitemviews/kfileitemmodel.h"
#include "kitemviews/kitemlistcontroller.h"
+#include "settings/viewmodes/viewmodesettings.h"
#include "views/viewmodecontroller.h"
#include "zoomlevelinfo.h"
#include "views/viewmodecontroller.h"
#include "zoomlevelinfo.h"
- ViewModeSettings settings(viewMode());
+ ViewModeSettings settings(itemLayout());
if (previewsShown()) {
const int previewSize = ZoomLevelInfo::iconSizeForZoomLevel(level);
settings.setPreviewSize(previewSize);
if (previewsShown()) {
const int previewSize = ZoomLevelInfo::iconSizeForZoomLevel(level);
settings.setPreviewSize(previewSize);
void DolphinItemListView::readSettings()
{
void DolphinItemListView::readSettings()
{
- ViewModeSettings settings(viewMode());
+ ViewModeSettings settings(itemLayout());
settings.readConfig();
beginTransaction();
settings.readConfig();
beginTransaction();
void DolphinItemListView::updateFont()
{
void DolphinItemListView::updateFont()
{
- const ViewModeSettings settings(viewMode());
+ const ViewModeSettings settings(itemLayout());
if (settings.useSystemFont()) {
KItemListView::updateFont();
if (settings.useSystemFont()) {
KItemListView::updateFont();
void DolphinItemListView::updateGridSize()
{
void DolphinItemListView::updateGridSize()
{
- const ViewModeSettings settings(viewMode());
+ const ViewModeSettings settings(itemLayout());
// Calculate the size of the icon
const int iconSize = previewsShown() ? settings.previewSize() : settings.iconSize();
// Calculate the size of the icon
const int iconSize = previewsShown() ? settings.previewSize() : settings.iconSize();
setItemSize(QSizeF(itemWidth, itemHeight));
endTransaction();
}
setItemSize(QSizeF(itemWidth, itemHeight));
endTransaction();
}
-
-ViewModeSettings::ViewMode DolphinItemListView::viewMode() const
-{
- ViewModeSettings::ViewMode mode;
-
- switch (itemLayout()) {
- case KFileItemListView::IconsLayout: mode = ViewModeSettings::IconsMode; break;
- case KFileItemListView::CompactLayout: mode = ViewModeSettings::CompactMode; break;
- case KFileItemListView::DetailsLayout: mode = ViewModeSettings::DetailsMode; break;
- default: mode = ViewModeSettings::IconsMode;
- Q_ASSERT(false);
- break;
- }
-
- return mode;
-}
-
#include "dolphin_export.h"
#include "kitemviews/kfileitemlistview.h"
#include "dolphin_export.h"
#include "kitemviews/kfileitemlistview.h"
-#include "settings/viewmodes/viewmodesettings.h"
private:
void updateGridSize();
private:
void updateGridSize();
- ViewModeSettings::ViewMode viewMode() const;
-
private:
int m_zoomLevel;
};
private:
int m_zoomLevel;
};
-#include "dolphin_compactmodesettings.h"
-#include "dolphin_detailsmodesettings.h"
-#include "dolphin_iconsmodesettings.h"
#include "dolphin_generalsettings.h"
#include "dolphinitemlistview.h"
#include "dolphinnewfilemenuobserver.h"
#include "dolphin_generalsettings.h"
#include "dolphinitemlistview.h"
#include "dolphinnewfilemenuobserver.h"
#include "kitemviews/kitemlistheader.h"
#include "kitemviews/kitemlistselectionmanager.h"
#include "kitemviews/private/kitemlistroleeditor.h"
#include "kitemviews/kitemlistheader.h"
#include "kitemviews/kitemlistselectionmanager.h"
#include "kitemviews/private/kitemlistroleeditor.h"
+#include "settings/viewmodes/viewmodesettings.h"
#include "versioncontrol/versioncontrolobserver.h"
#include "viewproperties.h"
#include "views/tooltips/tooltipmanager.h"
#include "versioncontrol/versioncontrolobserver.h"
#include "viewproperties.h"
#include "views/tooltips/tooltipmanager.h"
void DolphinView::resetZoomLevel()
{
void DolphinView::resetZoomLevel()
{
- // TODO : Switch to using ViewModeSettings after MR #256 is merged
- int defaultIconSize = KIconLoader::SizeSmall;
- switch (m_mode) {
- case IconsView:
- IconsModeSettings::self()->useDefaults(true);
- defaultIconSize = IconsModeSettings::iconSize();
- IconsModeSettings::self()->useDefaults(false);
- break;
- case DetailsView:
- DetailsModeSettings::self()->useDefaults(true);
- defaultIconSize = DetailsModeSettings::iconSize();
- DetailsModeSettings::self()->useDefaults(false);
- break;
- case CompactView:
- CompactModeSettings::self()->useDefaults(true);
- defaultIconSize = CompactModeSettings::iconSize();
- CompactModeSettings::self()->useDefaults(false);
- break;
- default:
- Q_ASSERT(false);
- break;
- }
+ ViewModeSettings settings{m_mode};
+ settings.useDefaults(true);
+ const int defaultIconSize = settings.iconSize();
+ settings.useDefaults(false);
setZoomLevel(ZoomLevelInfo::zoomLevelForIconSize(QSize(defaultIconSize, defaultIconSize)));
}
setZoomLevel(ZoomLevelInfo::zoomLevelForIconSize(QSize(defaultIconSize, defaultIconSize)));
}