Warning, file /system/dolphin/src/settings/viewmodes/viewmodesettings.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002  * SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
0003  * SPDX-FileCopyrightText: 2021 Felix Ernst <felixernst@kde.org>
0004  *
0005  * SPDX-License-Identifier: GPL-2.0-or-later
0006  */
0007 
0008 #include "viewmodesettings.h"
0009 
0010 #include "dolphin_compactmodesettings.h"
0011 #include "dolphin_detailsmodesettings.h"
0012 #include "dolphin_iconsmodesettings.h"
0013 
0014 #include "dolphin_generalsettings.h"
0015 
0016 ViewModeSettings::ViewModeSettings()
0017 {
0018     auto removeEntries = [](KConfigGroup &group) {
0019         group.deleteEntry("FontFamily");
0020         group.deleteEntry("FontWeight");
0021         group.deleteEntry("ItalicFont");
0022     };
0023 
0024     KSharedConfig::Ptr config = KSharedConfig::openConfig();
0025     // Migrate old config entries
0026     if (GeneralSettings::version() < 202) {
0027         for (const QString &groupName : {QStringLiteral("CompactMode"), QStringLiteral("DetailsMode"), QStringLiteral("IconsMode")}) {
0028             KConfigGroup group = config->group(groupName);
0029             const QString family = group.readEntry("FontFamily", QString{});
0030             if (family.isEmpty()) {
0031                 removeEntries(group);
0032                 continue;
0033             }
0034 
0035             QFont font;
0036             font.setFamily(family);
0037             const int weight = group.readEntry<int>("FontWeight", QFont::Normal);
0038             font.setWeight(static_cast<QFont::Weight>(weight));
0039             font.setItalic(group.readEntry("ItalicFont", false));
0040             removeEntries(group);
0041 
0042             // Write the new config entry
0043             group.writeEntry("ViewFont", font);
0044         }
0045 
0046         config->sync();
0047     }
0048 }
0049 
0050 ViewModeSettings::ViewModeSettings(DolphinView::Mode mode)
0051     : ViewModeSettings()
0052 {
0053     switch (mode) {
0054     case DolphinView::IconsView:
0055         m_viewModeSettingsVariant = IconsModeSettings::self();
0056         return;
0057     case DolphinView::CompactView:
0058         m_viewModeSettingsVariant = CompactModeSettings::self();
0059         return;
0060     case DolphinView::DetailsView:
0061         m_viewModeSettingsVariant = DetailsModeSettings::self();
0062         return;
0063     default:
0064         Q_UNREACHABLE();
0065     }
0066 }
0067 
0068 ViewModeSettings::ViewModeSettings(ViewSettingsTab::Mode mode)
0069     : ViewModeSettings()
0070 {
0071     switch (mode) {
0072     case ViewSettingsTab::IconsMode:
0073         m_viewModeSettingsVariant = IconsModeSettings::self();
0074         return;
0075     case ViewSettingsTab::CompactMode:
0076         m_viewModeSettingsVariant = CompactModeSettings::self();
0077         return;
0078     case ViewSettingsTab::DetailsMode:
0079         m_viewModeSettingsVariant = DetailsModeSettings::self();
0080         return;
0081     default:
0082         Q_UNREACHABLE();
0083     }
0084 }
0085 
0086 ViewModeSettings::ViewModeSettings(KStandardItemListView::ItemLayout itemLayout)
0087     : ViewModeSettings()
0088 {
0089     switch (itemLayout) {
0090     case KStandardItemListView::IconsLayout:
0091         m_viewModeSettingsVariant = IconsModeSettings::self();
0092         return;
0093     case KStandardItemListView::CompactLayout:
0094         m_viewModeSettingsVariant = CompactModeSettings::self();
0095         return;
0096     case KStandardItemListView::DetailsLayout:
0097         m_viewModeSettingsVariant = DetailsModeSettings::self();
0098         return;
0099     default:
0100         Q_UNREACHABLE();
0101     }
0102 }
0103 
0104 void ViewModeSettings::setIconSize(int iconSize)
0105 {
0106     std::visit(
0107         [iconSize](auto &&v) {
0108             v->setIconSize(iconSize);
0109         },
0110         m_viewModeSettingsVariant);
0111 }
0112 
0113 int ViewModeSettings::iconSize() const
0114 {
0115     return std::visit(
0116         [](auto &&v) {
0117             return v->iconSize();
0118         },
0119         m_viewModeSettingsVariant);
0120 }
0121 
0122 void ViewModeSettings::setPreviewSize(int previewSize)
0123 {
0124     std::visit(
0125         [previewSize](auto &&v) {
0126             v->setPreviewSize(previewSize);
0127         },
0128         m_viewModeSettingsVariant);
0129 }
0130 
0131 int ViewModeSettings::previewSize() const
0132 {
0133     return std::visit(
0134         [](auto &&v) {
0135             return v->previewSize();
0136         },
0137         m_viewModeSettingsVariant);
0138 }
0139 
0140 void ViewModeSettings::setUseSystemFont(bool useSystemFont)
0141 {
0142     std::visit(
0143         [useSystemFont](auto &&v) {
0144             v->setUseSystemFont(useSystemFont);
0145         },
0146         m_viewModeSettingsVariant);
0147 }
0148 
0149 bool ViewModeSettings::useSystemFont() const
0150 {
0151     return std::visit(
0152         [](auto &&v) {
0153             return v->useSystemFont();
0154         },
0155         m_viewModeSettingsVariant);
0156 }
0157 
0158 void ViewModeSettings::setViewFont(const QFont &font)
0159 {
0160     std::visit(
0161         [&font](auto &&v) {
0162             v->setViewFont(font);
0163         },
0164         m_viewModeSettingsVariant);
0165 }
0166 
0167 QFont ViewModeSettings::viewFont() const
0168 {
0169     return std::visit(
0170         [](auto &&v) {
0171             return v->viewFont();
0172         },
0173         m_viewModeSettingsVariant);
0174 }
0175 
0176 void ViewModeSettings::useDefaults(bool useDefaults)
0177 {
0178     std::visit(
0179         [useDefaults](auto &&v) {
0180             v->useDefaults(useDefaults);
0181         },
0182         m_viewModeSettingsVariant);
0183 }
0184 
0185 void ViewModeSettings::readConfig()
0186 {
0187     std::visit(
0188         [](auto &&v) {
0189             v->load();
0190         },
0191         m_viewModeSettingsVariant);
0192 }
0193 
0194 void ViewModeSettings::save()
0195 {
0196     std::visit(
0197         [](auto &&v) {
0198             return v->save();
0199         },
0200         m_viewModeSettingsVariant);
0201 }