/* SPDX-FileCopyrightText: 2006-2007 Aaron Seigo SPDX-FileCopyrightText: 2013 Marco Martin SPDX-License-Identifier: LGPL-2.0-or-later */ #ifndef PLASMA_THEME_P_H #define PLASMA_THEME_P_H #include "theme.h" #include #include #include #include #include #include #include #include #include "private/contrasteffectwatcher_p.h" namespace Plasma { class Theme; // NOTE: Default wallpaper can be set from the theme configuration #define DEFAULT_WALLPAPER_THEME "default" #define DEFAULT_WALLPAPER_SUFFIX ".png" static const int DEFAULT_WALLPAPER_WIDTH = 1920; static const int DEFAULT_WALLPAPER_HEIGHT = 1200; enum CacheType { NoCache = 0, PixmapCache = 1, SvgElementsCache = 2, }; Q_DECLARE_FLAGS(CacheTypes, CacheType) Q_DECLARE_OPERATORS_FOR_FLAGS(CacheTypes) class ThemePrivate : public QObject, public QSharedData { Q_OBJECT public: explicit ThemePrivate(QObject *parent = nullptr); ~ThemePrivate() override; KConfigGroup &config(); QString imagePath(const QString &theme, const QString &type, const QString &image); QString findInTheme(const QString &image, const QString &theme, bool cache = true); void discardCache(CacheTypes caches); void scheduleThemeChangeNotification(CacheTypes caches); void setThemeName(const QString &themeName, bool writeSettings, bool emitChanged); void processWallpaperSettings(const KSharedConfigPtr &metadata); void processContrastSettings(const KSharedConfigPtr &metadata); void processAdaptiveTransparencySettings(const KSharedConfigPtr &metadata); void processBlurBehindSettings(const KSharedConfigPtr &metadata); QColor color(Theme::ColorRole role, Theme::ColorGroup group = Theme::NormalColorGroup) const; void updateKSvgSelectors(CacheTypes notify); public Q_SLOTS: void colorsChanged(); void settingsFileChanged(const QString &settings); void notifyOfChanged(); void settingsChanged(bool emitChanges); Q_SIGNALS: void themeChanged(); void defaultFontChanged(); void smallestFontChanged(); void applicationPaletteChange(); public: static const char defaultTheme[]; static const char systemColorsTheme[]; static const char themeRcFile[]; static ContrastEffectWatcher *s_backgroundContrastEffectWatcher; // Ref counting of ThemePrivate instances static ThemePrivate *globalTheme; static QHash themes; std::unique_ptr kSvgImageSet; QString themeName; KPluginMetaData pluginMetaData; QList fallbackThemes; KSharedConfigPtr colors; KColorScheme colorScheme; KColorScheme selectionColorScheme; KColorScheme buttonColorScheme; KColorScheme viewColorScheme; KColorScheme complementaryColorScheme; KColorScheme headerColorScheme; KColorScheme tooltipColorScheme; QPalette palette; bool eventFilter(QObject *watched, QEvent *event) override; KConfigGroup cfg; QString defaultWallpaperTheme; QString defaultWallpaperSuffix; int defaultWallpaperWidth; int defaultWallpaperHeight; QHash discoveries; QTimer *selectorsUpdateTimer; QTimer *updateNotificationTimer; unsigned cacheSize; CacheTypes cachesToDiscard; QString themeVersion; QString themeMetadataPath; bool compositingActive : 1; bool backgroundContrastActive : 1; bool isDefault : 1; bool useGlobal : 1; bool hasWallpapers : 1; bool fixedName : 1; qreal backgroundContrast; qreal backgroundIntensity; qreal backgroundSaturation; bool backgroundContrastEnabled; bool adaptiveTransparencyEnabled; bool blurBehindEnabled; // Version number of Plasma the Theme has been designed for int apiMajor; int apiMinor; int apiRevision; }; } #endif extern const QString s;