diff options
| author | Ahmad Samir <[email protected]> | 2022-05-05 20:31:30 +0200 |
|---|---|---|
| committer | Ahmad Samir <[email protected]> | 2022-05-31 14:25:13 +0000 |
| commit | 5cbe6b530249ab5f5b1b9f57cf794a2b7faec269 (patch) | |
| tree | 459032dd1c18b916545629784b0b941262545697 /src/settings | |
| parent | 802ecc92d2ac9c0dd32687b5d9e535f6b1618652 (diff) | |
Migrate old custom view font config entries
Diffstat (limited to 'src/settings')
| -rw-r--r-- | src/settings/dolphin_generalsettings.kcfg | 2 | ||||
| -rw-r--r-- | src/settings/viewmodes/viewmodesettings.cpp | 38 | ||||
| -rw-r--r-- | src/settings/viewmodes/viewmodesettings.h | 2 |
3 files changed, 41 insertions, 1 deletions
diff --git a/src/settings/dolphin_generalsettings.kcfg b/src/settings/dolphin_generalsettings.kcfg index 08f01d72c..b2460b11c 100644 --- a/src/settings/dolphin_generalsettings.kcfg +++ b/src/settings/dolphin_generalsettings.kcfg @@ -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"> diff --git a/src/settings/viewmodes/viewmodesettings.cpp b/src/settings/viewmodes/viewmodesettings.cpp index 73a91a272..37675df29 100644 --- a/src/settings/viewmodes/viewmodesettings.cpp +++ b/src/settings/viewmodes/viewmodesettings.cpp @@ -11,7 +11,43 @@ #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; diff --git a/src/settings/viewmodes/viewmodesettings.h b/src/settings/viewmodes/viewmodesettings.h index 6d8b3afb6..e766c80e7 100644 --- a/src/settings/viewmodes/viewmodesettings.h +++ b/src/settings/viewmodes/viewmodesettings.h @@ -48,6 +48,8 @@ public: void save(); private: + explicit ViewModeSettings(); + std::variant<IconsModeSettings *, CompactModeSettings *, DetailsModeSettings *> m_viewModeSettingsVariant; }; |
