]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Migrate old custom view font config entries
authorAhmad Samir <a.samirh78@gmail.com>
Thu, 5 May 2022 18:31:30 +0000 (20:31 +0200)
committerAhmad Samir <a.samirh78@gmail.com>
Tue, 31 May 2022 14:25:13 +0000 (14:25 +0000)
src/dolphinmainwindow.cpp
src/settings/dolphin_generalsettings.kcfg
src/settings/viewmodes/viewmodesettings.cpp
src/settings/viewmodes/viewmodesettings.h

index e717906566697de0977b428ea8309a1ca6f909af..124ce45357392f034b2a4374f033f1abba2645b3 100644 (file)
 
 namespace {
     // Used for GeneralSettings::version() to determine whether
-    // an updated version of Dolphin is running.
-    const int CurrentDolphinVersion = 201;
+    // an updated version of Dolphin is running, so as to migrate
+    // removed/renamed ...etc config entries; increment it in such
+    // cases
+    const int CurrentDolphinVersion = 202;
     // The maximum number of entries in the back/forward popup menu
     const int MaxNumberOfNavigationentries = 12;
     // The maximum number of "Activate Tab" shortcuts
index 08f01d72c974e96086c7e1155077273de0bb35b3..b2460b11ca892eec5fc6bcc5eab83e116a6eebaa 100644 (file)
@@ -32,7 +32,7 @@
             <default>true</default>
         </entry>
         <entry name="Version" type="Int">
-            <label>Internal version of Dolphin, containing 3 digits for major, minor, bugfix</label>
+            <label>Internal config version of Dolphin, mainly Used to determine whether an updated version of Dolphin is running, so as to migrate config entries that were removed/renamed ...etc</label>
             <default>0</default>
         </entry>
         <entry name="ModifiedStartupSettings" type="Bool">
index 73a91a2723e7300b11e72b65d091d95c134174fb..37675df2959485eeefdf997b1f17e35170fd6a69 100644 (file)
 #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 char *groupName : {"CompactMode", "DetailsMode", "IconsMode"}) {
+            KConfigGroup group = config->group(groupName);
+            const QString family = group.readEntry("FontFamily", QString{});
+            if (family.isEmpty()) {
+                removeEntries(group);
+                continue;
+            }
+
+            QFont font;
+            font.setFamily(family);
+            font.setWeight(group.readEntry<int>("FontWeight", QFont::Normal));
+            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;
@@ -23,6 +59,7 @@ ViewModeSettings::ViewModeSettings(DolphinView::Mode mode)
 }
 
 ViewModeSettings::ViewModeSettings(ViewSettingsTab::Mode mode)
+    : ViewModeSettings()
 {
     switch (mode) {
     case ViewSettingsTab::IconsMode:    m_viewModeSettingsVariant = IconsModeSettings::self();   return;
@@ -34,6 +71,7 @@ ViewModeSettings::ViewModeSettings(ViewSettingsTab::Mode mode)
 }
 
 ViewModeSettings::ViewModeSettings(KStandardItemListView::ItemLayout itemLayout)
+    : ViewModeSettings()
 {
     switch (itemLayout) {
     case KStandardItemListView::IconsLayout:    m_viewModeSettingsVariant = IconsModeSettings::self();   return;
index 6d8b3afb6877ccf486f8c997238836b45c71eb38..e766c80e7115fc8d4e8065572bb04406d19073ef 100644 (file)
@@ -48,6 +48,8 @@ public:
     void save();
 
 private:
+    explicit ViewModeSettings();
+
     std::variant<IconsModeSettings *, CompactModeSettings *, DetailsModeSettings *> m_viewModeSettingsVariant;
 };