]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/settings/viewmodes/viewmodesettings.cpp
GIT_SILENT Update Appstream for new release
[dolphin.git] / src / settings / viewmodes / viewmodesettings.cpp
index 73a91a2723e7300b11e72b65d091d95c134174fb..1644cc074a2713f52e2bfa468e480835c6a73a7e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
- * SPDX-FileCopyrightText: 2021 Felix Ernst <fe.a.ernst@gmail.com>
+ * SPDX-FileCopyrightText: 2021 Felix Ernst <felixernst@kde.org>
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 #include "dolphin_detailsmodesettings.h"
 #include "dolphin_iconsmodesettings.h"
 
+#include "dolphin_generalsettings.h"
+
+ViewModeSettings::ViewModeSettings()
+{
+    auto removeEntries = [](KConfigGroup &group) {
+        group.deleteEntry("FontFamily");
+        group.deleteEntry("FontWeight");
+        group.deleteEntry("ItalicFont");
+    };
+
+    KSharedConfig::Ptr config = KSharedConfig::openConfig();
+    // Migrate old config entries
+    if (GeneralSettings::version() < 202) {
+        for (const QString &groupName : {QStringLiteral("CompactMode"), QStringLiteral("DetailsMode"), QStringLiteral("IconsMode")}) {
+            KConfigGroup group = config->group(groupName);
+            const QString family = group.readEntry("FontFamily", QString{});
+            if (family.isEmpty()) {
+                removeEntries(group);
+                continue;
+            }
+
+            QFont font;
+            font.setFamily(family);
+            const int weight = group.readEntry<int>("FontWeight", QFont::Normal);
+            font.setWeight(static_cast<QFont::Weight>(weight));
+            font.setItalic(group.readEntry("ItalicFont", false));
+            removeEntries(group);
+
+            // Write the new config entry
+            group.writeEntry("ViewFont", font);
+        }
+
+        config->sync();
+    }
+}
+
 ViewModeSettings::ViewModeSettings(DolphinView::Mode mode)
+    : ViewModeSettings()
 {
     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;
+    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();
     }
 }
 
 ViewModeSettings::ViewModeSettings(ViewSettingsTab::Mode mode)
+    : ViewModeSettings()
 {
     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;
+    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(KStandardItemListView::ItemLayout itemLayout)
+    : ViewModeSettings()
 {
     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;
+    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();
     }
@@ -46,77 +103,99 @@ ViewModeSettings::ViewModeSettings(KStandardItemListView::ItemLayout itemLayout)
 
 void ViewModeSettings::setIconSize(int iconSize)
 {
-    std::visit([iconSize](auto &&v) {
-        v->setIconSize(iconSize);
-    }, m_viewModeSettingsVariant);
+    std::visit(
+        [iconSize](auto &&v) {
+            v->setIconSize(iconSize);
+        },
+        m_viewModeSettingsVariant);
 }
 
 int ViewModeSettings::iconSize() const
 {
-    return std::visit([](auto &&v) {
-        return v->iconSize();
-    }, m_viewModeSettingsVariant);
+    return std::visit(
+        [](auto &&v) {
+            return v->iconSize();
+        },
+        m_viewModeSettingsVariant);
 }
 
 void ViewModeSettings::setPreviewSize(int previewSize)
 {
-    std::visit([previewSize](auto &&v) {
-        v->setPreviewSize(previewSize);
-    }, m_viewModeSettingsVariant);
+    std::visit(
+        [previewSize](auto &&v) {
+            v->setPreviewSize(previewSize);
+        },
+        m_viewModeSettingsVariant);
 }
 
 int ViewModeSettings::previewSize() const
 {
-    return std::visit([](auto &&v) {
-        return v->previewSize();
-    }, m_viewModeSettingsVariant);
+    return std::visit(
+        [](auto &&v) {
+            return v->previewSize();
+        },
+        m_viewModeSettingsVariant);
 }
 
 void ViewModeSettings::setUseSystemFont(bool useSystemFont)
 {
-    std::visit([useSystemFont](auto &&v) {
-        v->setUseSystemFont(useSystemFont);
-    }, m_viewModeSettingsVariant);
+    std::visit(
+        [useSystemFont](auto &&v) {
+            v->setUseSystemFont(useSystemFont);
+        },
+        m_viewModeSettingsVariant);
 }
 
 bool ViewModeSettings::useSystemFont() const
 {
-    return std::visit([](auto &&v) {
-        return v->useSystemFont();
-    }, m_viewModeSettingsVariant);
+    return std::visit(
+        [](auto &&v) {
+            return v->useSystemFont();
+        },
+        m_viewModeSettingsVariant);
 }
 
 void ViewModeSettings::setViewFont(const QFont &font)
 {
-    std::visit([&font](auto &&v) {
-        v->setViewFont(font);
-    }, m_viewModeSettingsVariant);
+    std::visit(
+        [&font](auto &&v) {
+            v->setViewFont(font);
+        },
+        m_viewModeSettingsVariant);
 }
 
 QFont ViewModeSettings::viewFont() const
 {
-    return std::visit([](auto &&v) {
-        return v->viewFont();
-    }, m_viewModeSettingsVariant);
+    return std::visit(
+        [](auto &&v) {
+            return v->viewFont();
+        },
+        m_viewModeSettingsVariant);
 }
 
 void ViewModeSettings::useDefaults(bool useDefaults)
 {
-    std::visit([useDefaults](auto &&v) {
-        v->useDefaults(useDefaults);
-    }, m_viewModeSettingsVariant);
+    std::visit(
+        [useDefaults](auto &&v) {
+            v->useDefaults(useDefaults);
+        },
+        m_viewModeSettingsVariant);
 }
 
 void ViewModeSettings::readConfig()
 {
-    std::visit([](auto &&v) {
-        v->load();
-    }, m_viewModeSettingsVariant);
+    std::visit(
+        [](auto &&v) {
+            v->load();
+        },
+        m_viewModeSettingsVariant);
 }
 
 void ViewModeSettings::save()
 {
-    std::visit([](auto &&v) {
-        return v->save();
-    }, m_viewModeSettingsVariant);
+    std::visit(
+        [](auto &&v) {
+            return v->save();
+        },
+        m_viewModeSettingsVariant);
 }