]> cloud.milkyroute.net Git - dolphin.git/blob - src/settings/viewmodes/viewmodesettings.cpp
Add clang-format and format code as in Frameworks
[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 #include "dolphin_generalsettings.h"
15
16 ViewModeSettings::ViewModeSettings()
17 {
18 auto removeEntries = [](KConfigGroup &group) {
19 group.deleteEntry("FontFamily");
20 group.deleteEntry("FontWeight");
21 group.deleteEntry("ItalicFont");
22 };
23
24 KSharedConfig::Ptr config = KSharedConfig::openConfig();
25 // Migrate old config entries
26 if (GeneralSettings::version() < 202) {
27 for (const char *groupName : {"CompactMode", "DetailsMode", "IconsMode"}) {
28 KConfigGroup group = config->group(groupName);
29 const QString family = group.readEntry("FontFamily", QString{});
30 if (family.isEmpty()) {
31 removeEntries(group);
32 continue;
33 }
34
35 QFont font;
36 font.setFamily(family);
37 const int weight = group.readEntry<int>("FontWeight", QFont::Normal);
38 font.setWeight(static_cast<QFont::Weight>(weight));
39 font.setItalic(group.readEntry("ItalicFont", false));
40 removeEntries(group);
41
42 // Write the new config entry
43 group.writeEntry("ViewFont", font);
44 }
45
46 config->sync();
47 }
48 }
49
50 ViewModeSettings::ViewModeSettings(DolphinView::Mode mode)
51 : ViewModeSettings()
52 {
53 switch (mode) {
54 case DolphinView::IconsView:
55 m_viewModeSettingsVariant = IconsModeSettings::self();
56 return;
57 case DolphinView::CompactView:
58 m_viewModeSettingsVariant = CompactModeSettings::self();
59 return;
60 case DolphinView::DetailsView:
61 m_viewModeSettingsVariant = DetailsModeSettings::self();
62 return;
63 default:
64 Q_UNREACHABLE();
65 }
66 }
67
68 ViewModeSettings::ViewModeSettings(ViewSettingsTab::Mode mode)
69 : ViewModeSettings()
70 {
71 switch (mode) {
72 case ViewSettingsTab::IconsMode:
73 m_viewModeSettingsVariant = IconsModeSettings::self();
74 return;
75 case ViewSettingsTab::CompactMode:
76 m_viewModeSettingsVariant = CompactModeSettings::self();
77 return;
78 case ViewSettingsTab::DetailsMode:
79 m_viewModeSettingsVariant = DetailsModeSettings::self();
80 return;
81 default:
82 Q_UNREACHABLE();
83 }
84 }
85
86 ViewModeSettings::ViewModeSettings(KStandardItemListView::ItemLayout itemLayout)
87 : ViewModeSettings()
88 {
89 switch (itemLayout) {
90 case KStandardItemListView::IconsLayout:
91 m_viewModeSettingsVariant = IconsModeSettings::self();
92 return;
93 case KStandardItemListView::CompactLayout:
94 m_viewModeSettingsVariant = CompactModeSettings::self();
95 return;
96 case KStandardItemListView::DetailsLayout:
97 m_viewModeSettingsVariant = DetailsModeSettings::self();
98 return;
99 default:
100 Q_UNREACHABLE();
101 }
102 }
103
104 void ViewModeSettings::setIconSize(int iconSize)
105 {
106 std::visit(
107 [iconSize](auto &&v) {
108 v->setIconSize(iconSize);
109 },
110 m_viewModeSettingsVariant);
111 }
112
113 int ViewModeSettings::iconSize() const
114 {
115 return std::visit(
116 [](auto &&v) {
117 return v->iconSize();
118 },
119 m_viewModeSettingsVariant);
120 }
121
122 void ViewModeSettings::setPreviewSize(int previewSize)
123 {
124 std::visit(
125 [previewSize](auto &&v) {
126 v->setPreviewSize(previewSize);
127 },
128 m_viewModeSettingsVariant);
129 }
130
131 int ViewModeSettings::previewSize() const
132 {
133 return std::visit(
134 [](auto &&v) {
135 return v->previewSize();
136 },
137 m_viewModeSettingsVariant);
138 }
139
140 void ViewModeSettings::setUseSystemFont(bool useSystemFont)
141 {
142 std::visit(
143 [useSystemFont](auto &&v) {
144 v->setUseSystemFont(useSystemFont);
145 },
146 m_viewModeSettingsVariant);
147 }
148
149 bool ViewModeSettings::useSystemFont() const
150 {
151 return std::visit(
152 [](auto &&v) {
153 return v->useSystemFont();
154 },
155 m_viewModeSettingsVariant);
156 }
157
158 void ViewModeSettings::setViewFont(const QFont &font)
159 {
160 std::visit(
161 [&font](auto &&v) {
162 v->setViewFont(font);
163 },
164 m_viewModeSettingsVariant);
165 }
166
167 QFont ViewModeSettings::viewFont() const
168 {
169 return std::visit(
170 [](auto &&v) {
171 return v->viewFont();
172 },
173 m_viewModeSettingsVariant);
174 }
175
176 void ViewModeSettings::useDefaults(bool useDefaults)
177 {
178 std::visit(
179 [useDefaults](auto &&v) {
180 v->useDefaults(useDefaults);
181 },
182 m_viewModeSettingsVariant);
183 }
184
185 void ViewModeSettings::readConfig()
186 {
187 std::visit(
188 [](auto &&v) {
189 v->load();
190 },
191 m_viewModeSettingsVariant);
192 }
193
194 void ViewModeSettings::save()
195 {
196 std::visit(
197 [](auto &&v) {
198 return v->save();
199 },
200 m_viewModeSettingsVariant);
201 }