]> cloud.milkyroute.net Git - dolphin.git/blob - src/settings/viewmodes/viewmodesettings.cpp
5936e29701de7905acd5d1683a51ea8f5337c4c0
[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: m_viewModeSettingsVariant = IconsModeSettings::self(); return;
55 case DolphinView::CompactView: m_viewModeSettingsVariant = CompactModeSettings::self(); return;
56 case DolphinView::DetailsView: m_viewModeSettingsVariant = DetailsModeSettings::self(); return;
57 default:
58 Q_UNREACHABLE();
59 }
60 }
61
62 ViewModeSettings::ViewModeSettings(ViewSettingsTab::Mode mode)
63 : ViewModeSettings()
64 {
65 switch (mode) {
66 case ViewSettingsTab::IconsMode: m_viewModeSettingsVariant = IconsModeSettings::self(); return;
67 case ViewSettingsTab::CompactMode: m_viewModeSettingsVariant = CompactModeSettings::self(); return;
68 case ViewSettingsTab::DetailsMode: m_viewModeSettingsVariant = DetailsModeSettings::self(); return;
69 default:
70 Q_UNREACHABLE();
71 }
72 }
73
74 ViewModeSettings::ViewModeSettings(KStandardItemListView::ItemLayout itemLayout)
75 : ViewModeSettings()
76 {
77 switch (itemLayout) {
78 case KStandardItemListView::IconsLayout: m_viewModeSettingsVariant = IconsModeSettings::self(); return;
79 case KStandardItemListView::CompactLayout: m_viewModeSettingsVariant = CompactModeSettings::self(); return;
80 case KStandardItemListView::DetailsLayout: m_viewModeSettingsVariant = DetailsModeSettings::self(); return;
81 default:
82 Q_UNREACHABLE();
83 }
84 }
85
86 void ViewModeSettings::setIconSize(int iconSize)
87 {
88 std::visit([iconSize](auto &&v) {
89 v->setIconSize(iconSize);
90 }, m_viewModeSettingsVariant);
91 }
92
93 int ViewModeSettings::iconSize() const
94 {
95 return std::visit([](auto &&v) {
96 return v->iconSize();
97 }, m_viewModeSettingsVariant);
98 }
99
100 void ViewModeSettings::setPreviewSize(int previewSize)
101 {
102 std::visit([previewSize](auto &&v) {
103 v->setPreviewSize(previewSize);
104 }, m_viewModeSettingsVariant);
105 }
106
107 int ViewModeSettings::previewSize() const
108 {
109 return std::visit([](auto &&v) {
110 return v->previewSize();
111 }, m_viewModeSettingsVariant);
112 }
113
114 void ViewModeSettings::setUseSystemFont(bool useSystemFont)
115 {
116 std::visit([useSystemFont](auto &&v) {
117 v->setUseSystemFont(useSystemFont);
118 }, m_viewModeSettingsVariant);
119 }
120
121 bool ViewModeSettings::useSystemFont() const
122 {
123 return std::visit([](auto &&v) {
124 return v->useSystemFont();
125 }, m_viewModeSettingsVariant);
126 }
127
128 void ViewModeSettings::setViewFont(const QFont &font)
129 {
130 std::visit([&font](auto &&v) {
131 v->setViewFont(font);
132 }, m_viewModeSettingsVariant);
133 }
134
135 QFont ViewModeSettings::viewFont() const
136 {
137 return std::visit([](auto &&v) {
138 return v->viewFont();
139 }, m_viewModeSettingsVariant);
140 }
141
142 void ViewModeSettings::useDefaults(bool useDefaults)
143 {
144 std::visit([useDefaults](auto &&v) {
145 v->useDefaults(useDefaults);
146 }, m_viewModeSettingsVariant);
147 }
148
149 void ViewModeSettings::readConfig()
150 {
151 std::visit([](auto &&v) {
152 v->load();
153 }, m_viewModeSettingsVariant);
154 }
155
156 void ViewModeSettings::save()
157 {
158 std::visit([](auto &&v) {
159 return v->save();
160 }, m_viewModeSettingsVariant);
161 }