]> cloud.milkyroute.net Git - dolphin.git/blob - src/settings/viewmodes/viewmodesettings.cpp
Simplify custom font settings
[dolphin.git] / src / settings / viewmodes / viewmodesettings.cpp
1 /*
2 * SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
3 * SPDX-FileCopyrightText: 2021 Felix Ernst <fe.a.ernst@gmail.com>
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7
8 #include "viewmodesettings.h"
9
10 #include "dolphin_compactmodesettings.h"
11 #include "dolphin_detailsmodesettings.h"
12 #include "dolphin_iconsmodesettings.h"
13
14 ViewModeSettings::ViewModeSettings(DolphinView::Mode mode)
15 {
16 switch (mode) {
17 case DolphinView::IconsView: m_viewModeSettingsVariant = IconsModeSettings::self(); return;
18 case DolphinView::CompactView: m_viewModeSettingsVariant = CompactModeSettings::self(); return;
19 case DolphinView::DetailsView: m_viewModeSettingsVariant = DetailsModeSettings::self(); return;
20 default:
21 Q_UNREACHABLE();
22 }
23 }
24
25 ViewModeSettings::ViewModeSettings(ViewSettingsTab::Mode mode)
26 {
27 switch (mode) {
28 case ViewSettingsTab::IconsMode: m_viewModeSettingsVariant = IconsModeSettings::self(); return;
29 case ViewSettingsTab::CompactMode: m_viewModeSettingsVariant = CompactModeSettings::self(); return;
30 case ViewSettingsTab::DetailsMode: m_viewModeSettingsVariant = DetailsModeSettings::self(); return;
31 default:
32 Q_UNREACHABLE();
33 }
34 }
35
36 ViewModeSettings::ViewModeSettings(KStandardItemListView::ItemLayout itemLayout)
37 {
38 switch (itemLayout) {
39 case KStandardItemListView::IconsLayout: m_viewModeSettingsVariant = IconsModeSettings::self(); return;
40 case KStandardItemListView::CompactLayout: m_viewModeSettingsVariant = CompactModeSettings::self(); return;
41 case KStandardItemListView::DetailsLayout: m_viewModeSettingsVariant = DetailsModeSettings::self(); return;
42 default:
43 Q_UNREACHABLE();
44 }
45 }
46
47 void ViewModeSettings::setIconSize(int iconSize)
48 {
49 std::visit([iconSize](auto &&v) {
50 v->setIconSize(iconSize);
51 }, m_viewModeSettingsVariant);
52 }
53
54 int ViewModeSettings::iconSize() const
55 {
56 return std::visit([](auto &&v) {
57 return v->iconSize();
58 }, m_viewModeSettingsVariant);
59 }
60
61 void ViewModeSettings::setPreviewSize(int previewSize)
62 {
63 std::visit([previewSize](auto &&v) {
64 v->setPreviewSize(previewSize);
65 }, m_viewModeSettingsVariant);
66 }
67
68 int ViewModeSettings::previewSize() const
69 {
70 return std::visit([](auto &&v) {
71 return v->previewSize();
72 }, m_viewModeSettingsVariant);
73 }
74
75 void ViewModeSettings::setUseSystemFont(bool useSystemFont)
76 {
77 std::visit([useSystemFont](auto &&v) {
78 v->setUseSystemFont(useSystemFont);
79 }, m_viewModeSettingsVariant);
80 }
81
82 bool ViewModeSettings::useSystemFont() const
83 {
84 return std::visit([](auto &&v) {
85 return v->useSystemFont();
86 }, m_viewModeSettingsVariant);
87 }
88
89 void ViewModeSettings::setViewFont(const QFont &font)
90 {
91 std::visit([&font](auto &&v) {
92 v->setViewFont(font);
93 }, m_viewModeSettingsVariant);
94 }
95
96 QFont ViewModeSettings::viewFont() const
97 {
98 return std::visit([](auto &&v) {
99 return v->viewFont();
100 }, m_viewModeSettingsVariant);
101 }
102
103 void ViewModeSettings::useDefaults(bool useDefaults)
104 {
105 std::visit([useDefaults](auto &&v) {
106 v->useDefaults(useDefaults);
107 }, m_viewModeSettingsVariant);
108 }
109
110 void ViewModeSettings::readConfig()
111 {
112 std::visit([](auto &&v) {
113 v->load();
114 }, m_viewModeSettingsVariant);
115 }
116
117 void ViewModeSettings::save()
118 {
119 std::visit([](auto &&v) {
120 return v->save();
121 }, m_viewModeSettingsVariant);
122 }