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