File indexing completed on 2024-05-19 05:38:25
0001 /* 0002 KCMStyle 0003 SPDX-FileCopyrightText: 2000 TrollTech AS. 0004 SPDX-FileCopyrightText: 2002 Karol Szwed <gallium@kde.org> 0005 SPDX-FileCopyrightText: 2002 Daniel Molkentin <molkentin@kde.org> 0006 SPDX-FileCopyrightText: 2007 Urs Wolfer <uwolfer @ kde.org> 0007 SPDX-FileCopyrightText: 2019 Kai Uwe Broulik <kde@broulik.de> 0008 SPDX-FileCopyrightText: 2019 Cyril Rossi <cyril.rossi@enioka.com> 0009 0010 0011 Based on kcmdisplay 0012 SPDX-FileCopyrightText: 1997-2002 kcmdisplay Authors. 0013 0014 SPDX-License-Identifier: GPL-2.0-only 0015 */ 0016 0017 #pragma once 0018 0019 #include <QPointer> 0020 0021 #include <KQuickManagedConfigModule> 0022 0023 #include "gtkpage.h" 0024 #include "stylesettings.h" 0025 #include "stylesmodel.h" 0026 0027 class QQuickItem; 0028 0029 class StyleData; 0030 class StyleConfigDialog; 0031 0032 class KCMStyle : public KQuickManagedConfigModule 0033 { 0034 Q_OBJECT 0035 0036 Q_PROPERTY(GtkPage *gtkPage READ gtkPage CONSTANT) 0037 Q_PROPERTY(StylesModel *model READ model CONSTANT) 0038 Q_PROPERTY(StyleSettings *styleSettings READ styleSettings CONSTANT) 0039 Q_PROPERTY(ToolBarStyle mainToolBarStyle READ mainToolBarStyle WRITE setMainToolBarStyle NOTIFY mainToolBarStyleChanged) 0040 Q_PROPERTY(ToolBarStyle otherToolBarStyle READ otherToolBarStyle WRITE setOtherToolBarStyle NOTIFY otherToolBarStyleChanged) 0041 Q_PROPERTY(bool gtkConfigKdedModuleLoaded READ gtkConfigKdedModuleLoaded NOTIFY gtkConfigKdedModuleLoadedChanged) 0042 0043 public: 0044 KCMStyle(QObject *parent, const KPluginMetaData &data); 0045 ~KCMStyle() override; 0046 0047 enum ToolBarStyle { 0048 NoText, 0049 TextOnly, 0050 TextBesideIcon, 0051 TextUnderIcon, 0052 }; 0053 Q_ENUM(ToolBarStyle) 0054 0055 GtkPage *gtkPage() const; 0056 0057 StylesModel *model() const; 0058 0059 StyleSettings *styleSettings() const; 0060 0061 ToolBarStyle mainToolBarStyle() const; 0062 void setMainToolBarStyle(ToolBarStyle style); 0063 Q_SIGNAL void mainToolBarStyleChanged(); 0064 0065 ToolBarStyle otherToolBarStyle() const; 0066 void setOtherToolBarStyle(ToolBarStyle style); 0067 Q_SIGNAL void otherToolBarStyleChanged(); 0068 0069 bool gtkConfigKdedModuleLoaded() const; 0070 Q_SIGNAL void gtkConfigKdedModuleLoadedChanged(); 0071 0072 Q_INVOKABLE void configure(const QString &title, const QString &styleName, QQuickItem *ctx = nullptr); 0073 0074 void load() override; 0075 void save() override; 0076 void defaults() override; 0077 0078 bool isDefaults() const override; 0079 bool isSaveNeeded() const override; 0080 0081 Q_SIGNALS: 0082 void showErrorMessage(const QString &message); 0083 void styleReconfigured(const QString &styleName); 0084 0085 private: 0086 void loadSettingsToModel(); 0087 void checkGtkConfigKdedModuleLoaded(); 0088 0089 StyleData *m_data; 0090 StylesModel *m_model; 0091 0092 QString m_previousStyle; 0093 bool m_effectsDirty = false; 0094 0095 ToolBarStyle m_mainToolBarStyle = NoText; 0096 ToolBarStyle m_otherToolBarStyle = NoText; 0097 0098 QPointer<StyleConfigDialog> m_styleConfigDialog; 0099 0100 bool m_gtkConfigKdedModuleLoaded = false; 0101 GtkPage *m_gtkPage = nullptr; 0102 };