KWin
Loading...
Searching...
No Matches
previewbridge.h
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
5*/
6#pragma once
7
8#include <KDecoration2/DecorationButton>
9#include <KDecoration2/Private/DecorationBridge>
10
11#include <QList>
12#include <QPointer>
13
14class QQuickItem;
15
16class KPluginFactory;
17
18namespace KDecoration2
19{
20namespace Preview
21{
22
23class PreviewClient;
24class PreviewItem;
25class PreviewSettings;
26
27class PreviewBridge : public DecorationBridge
28{
29 Q_OBJECT
30 Q_PROPERTY(QString plugin READ plugin WRITE setPlugin NOTIFY pluginChanged)
31 Q_PROPERTY(QString theme READ theme WRITE setTheme NOTIFY themeChanged)
32 Q_PROPERTY(QString kcmoduleName READ kcmoduleName WRITE setKcmoduleName NOTIFY kcmoduleNameChanged)
33 Q_PROPERTY(bool valid READ isValid NOTIFY validChanged)
34public:
35 explicit PreviewBridge(QObject *parent = nullptr);
36 ~PreviewBridge() override;
37 std::unique_ptr<DecoratedClientPrivate> createClient(DecoratedClient *client, Decoration *decoration) override;
38 std::unique_ptr<DecorationSettingsPrivate> settings(DecorationSettings *parent) override;
39
41 {
42 return m_lastCreatedClient;
43 }
45 {
46 return m_lastCreatedSettings;
47 }
48
51
52 void setPlugin(const QString &plugin);
53 QString plugin() const;
54 void setKcmoduleName(const QString &name);
55 QString kcmoduleName() const;
56 void setTheme(const QString &theme);
57 QString theme() const;
58 bool isValid() const;
59
60 KDecoration2::Decoration *createDecoration(QObject *parent = nullptr);
61 KDecoration2::DecorationButton *createButton(KDecoration2::Decoration *decoration, KDecoration2::DecorationButtonType type, QObject *parent = nullptr);
62
63public Q_SLOTS:
64 void configure(QQuickItem *ctx);
65
66Q_SIGNALS:
71
72private:
73 void createFactory();
74 void setValid(bool valid);
75 PreviewClient *m_lastCreatedClient;
76 PreviewSettings *m_lastCreatedSettings;
77 QList<PreviewItem *> m_previewItems;
78 QString m_plugin;
79 QString m_theme;
80 QString m_kcmoduleName;
81 QPointer<KPluginFactory> m_factory;
82 bool m_valid;
83};
84
85class BridgeItem : public QObject
86{
87 Q_OBJECT
88 Q_PROPERTY(QString plugin READ plugin WRITE setPlugin NOTIFY pluginChanged)
89 Q_PROPERTY(QString theme READ theme WRITE setTheme NOTIFY themeChanged)
90 Q_PROPERTY(QString kcmoduleName READ kcmoduleName WRITE setKcmoduleName NOTIFY kcmoduleNameChanged)
91 Q_PROPERTY(bool valid READ isValid NOTIFY validChanged)
92 Q_PROPERTY(KDecoration2::Preview::PreviewBridge *bridge READ bridge CONSTANT)
93
94public:
95 explicit BridgeItem(QObject *parent = nullptr);
96 ~BridgeItem() override;
97
98 void setPlugin(const QString &plugin)
99 {
100 m_bridge->setPlugin(plugin);
101 }
102 QString plugin() const
103 {
104 return m_bridge->plugin();
105 }
106 void setTheme(const QString &theme)
107 {
108 m_bridge->setTheme(theme);
109 }
110 QString kcmoduleName() const
111 {
112 return m_bridge->kcmoduleName();
113 }
114 void setKcmoduleName(const QString &name)
115 {
116 m_bridge->setKcmoduleName(name);
117 }
118 QString theme() const
119 {
120 return m_bridge->theme();
121 }
122 bool isValid() const
123 {
124 return m_bridge->isValid();
125 }
126
128 {
129 return m_bridge;
130 }
131
132Q_SIGNALS:
137
138private:
139 PreviewBridge *m_bridge;
140};
141
142}
143}
144
void setTheme(const QString &theme)
void setPlugin(const QString &plugin)
void setKcmoduleName(const QString &name)
PreviewBridge * bridge() const
KDecoration2::Preview::PreviewBridge * bridge
void registerPreviewItem(PreviewItem *item)
KDecoration2::Decoration * createDecoration(QObject *parent=nullptr)
std::unique_ptr< DecorationSettingsPrivate > settings(DecorationSettings *parent) override
PreviewSettings * lastCreatedSettings()
KDecoration2::DecorationButton * createButton(KDecoration2::Decoration *decoration, KDecoration2::DecorationButtonType type, QObject *parent=nullptr)
std::unique_ptr< DecoratedClientPrivate > createClient(DecoratedClient *client, Decoration *decoration) override
void unregisterPreviewItem(PreviewItem *item)
void setTheme(const QString &theme)
void setKcmoduleName(const QString &name)
void setPlugin(const QString &plugin)
Q_DECLARE_METATYPE(KWin::SwitchEvent::State)
#define explicit