File indexing completed on 2024-04-14 14:09:17

0001 /*
0002     This file is a part of digiKam project
0003     https://www.digikam.org
0004 
0005     SPDX-FileCopyrightText: 2006-2018 Gilles Caulier <caulier dot gilles at gmail dot com>
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #pragma once
0011 
0012 #include <ksharedconfig.h>
0013 
0014 #include <QObject>
0015 #include <QPixmap>
0016 #include <QString>
0017 #include <QListWidget>
0018 
0019 class QMenu;
0020 class KXmlGuiWindow;
0021 
0022 namespace KSTheme
0023 {
0024 
0025 class Manager : public QObject
0026 {
0027     Q_OBJECT
0028 
0029 public:
0030 
0031     typedef enum { BREEZE_THEME, BREEZE_DARK_THEME } IconTheme;
0032 
0033     ~Manager();
0034     static Manager* instance();
0035 
0036     QString currentThemeName() const;
0037     void    setCurrentTheme(const QString& name);
0038 
0039     QString defaultThemeName() const;
0040 
0041     void    setThemeMenuAction(QMenu* const action);
0042     void    registerThemeActions(KXmlGuiWindow * const win);
0043     void    populateThemeQListWidget(QListWidget *themeWidget);
0044 
0045     void setIconTheme(IconTheme theme);
0046 
0047 signals:
0048 
0049     void signalThemeChanged();
0050 
0051 private Q_SLOTS:
0052 
0053     void slotChangePalette();
0054     void slotSettingsChanged();
0055 
0056 private:
0057 
0058     Manager();
0059 
0060     void    populateThemeMenu();
0061     QPixmap createSchemePreviewIcon(const KSharedConfigPtr& config) const;
0062     QString currentDesktopdefaultTheme() const;
0063     void    updateCurrentDesktopDefaultThemePreview();
0064 
0065 private:
0066 
0067     friend class ThemeManagerCreator;
0068 
0069     class Private;
0070     Private* const d;
0071 };
0072 
0073 }