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 };