diff --git a/kcmkwin/kwindecoration/declarative-plugin/plugin.cpp b/kcmkwin/kwindecoration/declarative-plugin/plugin.cpp index 3df73c5b55..690aa1333f 100644 --- a/kcmkwin/kwindecoration/declarative-plugin/plugin.cpp +++ b/kcmkwin/kwindecoration/declarative-plugin/plugin.cpp @@ -38,7 +38,7 @@ namespace Preview void Plugin::registerTypes(const char *uri) { Q_ASSERT(QLatin1String(uri) == QLatin1String("org.kde.kwin.private.kdecoration")); - qmlRegisterType(uri, 1, 0, "Bridge"); + qmlRegisterType(uri, 1, 0, "Bridge"); qmlRegisterType(uri, 1, 0, "Settings"); qmlRegisterType(uri, 1, 0, "Decoration"); qmlRegisterType(uri, 1, 0, "Button"); @@ -46,6 +46,7 @@ void Plugin::registerTypes(const char *uri) qmlRegisterType(); qmlRegisterType(); qmlRegisterType(); + qmlRegisterType(); } } diff --git a/kcmkwin/kwindecoration/declarative-plugin/previewbridge.cpp b/kcmkwin/kwindecoration/declarative-plugin/previewbridge.cpp index d6d1ef5c83..7d201f31d4 100644 --- a/kcmkwin/kwindecoration/declarative-plugin/previewbridge.cpp +++ b/kcmkwin/kwindecoration/declarative-plugin/previewbridge.cpp @@ -237,5 +237,19 @@ void PreviewBridge::configure() dialog.exec(); } +BridgeItem::BridgeItem(QObject *parent) + : QObject(parent) + , m_bridge(new PreviewBridge()) +{ + connect(m_bridge, &PreviewBridge::themeChanged, this, &BridgeItem::themeChanged); + connect(m_bridge, &PreviewBridge::pluginChanged, this, &BridgeItem::pluginChanged); + connect(m_bridge, &PreviewBridge::validChanged, this, &BridgeItem::validChanged); +} + +BridgeItem::~BridgeItem() +{ + m_bridge->deleteLater(); +} + } } diff --git a/kcmkwin/kwindecoration/declarative-plugin/previewbridge.h b/kcmkwin/kwindecoration/declarative-plugin/previewbridge.h index fc3c9e073d..fe366eb42e 100644 --- a/kcmkwin/kwindecoration/declarative-plugin/previewbridge.h +++ b/kcmkwin/kwindecoration/declarative-plugin/previewbridge.h @@ -89,6 +89,48 @@ private: bool m_valid; }; +class BridgeItem : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString plugin READ plugin WRITE setPlugin NOTIFY pluginChanged) + Q_PROPERTY(QString theme READ theme WRITE setTheme NOTIFY themeChanged) + Q_PROPERTY(bool valid READ isValid NOTIFY validChanged) + Q_PROPERTY(KDecoration2::Preview::PreviewBridge *bridge READ bridge CONSTANT) + +public: + explicit BridgeItem(QObject *parent = nullptr); + virtual ~BridgeItem(); + + void setPlugin(const QString &plugin) { + m_bridge->setPlugin(plugin); + } + QString plugin() const { + return m_bridge->plugin(); + } + void setTheme(const QString &theme) { + m_bridge->setTheme(theme); + } + QString theme() const { + return m_bridge->theme(); + } + bool isValid() const { + return m_bridge->isValid(); + } + + PreviewBridge *bridge() const { + return m_bridge; + } + +Q_SIGNALS: + void pluginChanged(); + void themeChanged(); + void validChanged(); + +private: + PreviewBridge *m_bridge; + +}; + } } diff --git a/kcmkwin/kwindecoration/qml/ButtonGroup.qml b/kcmkwin/kwindecoration/qml/ButtonGroup.qml index 1548732dd5..a64f446abb 100644 --- a/kcmkwin/kwindecoration/qml/ButtonGroup.qml +++ b/kcmkwin/kwindecoration/qml/ButtonGroup.qml @@ -37,7 +37,7 @@ ListView { id: button property int itemIndex: index property var buttonsModel: parent.ListView.view.model - bridge: bridgeItem + bridge: bridgeItem.bridge settings: settingsItem type: model["button"] anchors.fill: Drag.active ? undefined : parent diff --git a/kcmkwin/kwindecoration/qml/Buttons.qml b/kcmkwin/kwindecoration/qml/Buttons.qml index 7c6997c330..33b6f64efe 100644 --- a/kcmkwin/kwindecoration/qml/Buttons.qml +++ b/kcmkwin/kwindecoration/qml/Buttons.qml @@ -32,7 +32,7 @@ Item { } KDecoration.Settings { id: settingsItem - bridge: bridgeItem + bridge: bridgeItem.bridge } Rectangle { anchors.fill: parent @@ -153,7 +153,7 @@ Item { KDecoration.Button { id: availableButton anchors.centerIn: Drag.active ? undefined : parent - bridge: bridgeItem + bridge: bridgeItem.bridge settings: settingsItem type: model["button"] width: units.iconSizes.small diff --git a/kcmkwin/kwindecoration/qml/Previews.qml b/kcmkwin/kwindecoration/qml/Previews.qml index eabc666432..bc8c56ade1 100644 --- a/kcmkwin/kwindecoration/qml/Previews.qml +++ b/kcmkwin/kwindecoration/qml/Previews.qml @@ -52,7 +52,7 @@ ScrollView { } KDecoration.Settings { id: settingsItem - bridge: bridgeItem + bridge: bridgeItem.bridge borderSizesIndex: listView.borderSizesIndex } MouseArea { @@ -67,7 +67,7 @@ ScrollView { Item { KDecoration.Decoration { id: inactivePreview - bridge: bridgeItem + bridge: bridgeItem.bridge settings: settingsItem anchors.fill: parent Component.onCompleted: { @@ -81,7 +81,7 @@ ScrollView { } KDecoration.Decoration { id: activePreview - bridge: bridgeItem + bridge: bridgeItem.bridge settings: settingsItem anchors.fill: parent Component.onCompleted: { @@ -107,7 +107,7 @@ ScrollView { id: configureButton enabled: model["configureable"] iconName: "configure" - onClicked: bridgeItem.configure() + onClicked: bridgeItem.bridge.configure() } } }