File indexing completed on 2024-04-21 05:26:55

0001 /*
0002  * SPDX-FileCopyrightText: 2019 Mikhail Zolotukhin <zomial@protonmail.com>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 #pragma once
0008 
0009 #include <QTemporaryDir>
0010 
0011 #include <KSharedConfig>
0012 
0013 class QString;
0014 class QFont;
0015 
0016 class ConfigValueProvider
0017 {
0018 public:
0019     ConfigValueProvider();
0020 
0021     QString fontName() const;
0022     QString iconThemeName() const;
0023     QString cursorThemeName() const;
0024     QString soundThemeName() const;
0025     bool eventSoundsEnabled() const;
0026     int cursorSize() const;
0027     bool iconsOnButtons() const;
0028     bool iconsInMenus() const;
0029     int toolbarStyle() const;
0030     bool scrollbarBehavior() const;
0031     bool preferDarkTheme() const;
0032     QString windowDecorationsButtonsOrder() const;
0033     QStringList windowDecorationsButtonsImages() const;
0034     bool enableAnimations() const;
0035     int doubleClickInterval() const;
0036     QMap<QString, QColor> colors() const;
0037 
0038     // The global scale factor, as X11 doesn't support mixed-DPI
0039     // setups. It's useful both for Plasma/X11 sessions and for
0040     // XWayland apps in Plasma/Wayland sessions.
0041     //
0042     // On Wayland sessions returns 1.0 if XWayland client scaling
0043     // is disabled.
0044     double x11GlobalScaleFactor() const;
0045 
0046     // The Force Font DPI setting from the fonts kcm. Returns 0
0047     // if disabled
0048     int fontDpi() const;
0049 
0050 private:
0051     QString fontStyleHelper(const QFont &font) const;
0052     QString windowDecorationButtonsOrderInGtkNotation(const QString &kdeConfigValue) const;
0053     QString currentWindowDecorationPluginPath() const;
0054 
0055     KSharedConfigPtr kdeglobalsConfig;
0056     KSharedConfigPtr fontsConfig;
0057     KSharedConfigPtr inputConfig;
0058     KSharedConfigPtr kwinConfig;
0059 
0060     QTemporaryDir generatedCSDTempPath;
0061 };