File indexing completed on 2024-06-09 05:30:57
0001 /* 0002 SPDX-FileCopyrightText: 2015 Eike Hein <hein@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <Plasma/Theme> 0010 0011 #include <QQuickItem> 0012 #include <QQuickWindow> 0013 0014 namespace KWayland::Client 0015 { 0016 class PlasmaShell; 0017 } 0018 0019 class DashboardWindow : public QQuickWindow 0020 { 0021 Q_OBJECT 0022 0023 Q_PROPERTY(QQuickItem *mainItem READ mainItem WRITE setMainItem NOTIFY mainItemChanged) 0024 Q_PROPERTY(QQuickItem *visualParent READ visualParent WRITE setVisualParent NOTIFY visualParentChanged) 0025 Q_PROPERTY(QQuickItem *keyEventProxy READ keyEventProxy WRITE setKeyEventProxy NOTIFY keyEventProxyChanged) 0026 Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor NOTIFY backgroundColorChanged) 0027 0028 Q_CLASSINFO("DefaultProperty", "mainItem") 0029 0030 public: 0031 explicit DashboardWindow(QQuickItem *parent = nullptr); 0032 ~DashboardWindow() override; 0033 0034 QQuickItem *mainItem() const; 0035 void setMainItem(QQuickItem *item); 0036 0037 QQuickItem *visualParent() const; 0038 void setVisualParent(QQuickItem *item); 0039 0040 QQuickItem *keyEventProxy() const; 0041 void setKeyEventProxy(QQuickItem *item); 0042 0043 QColor backgroundColor() const; 0044 void setBackgroundColor(const QColor &color); 0045 0046 Q_INVOKABLE void toggle(); 0047 0048 Q_SIGNALS: 0049 void mainItemChanged() const; 0050 void visualParentChanged() const; 0051 void keyEventProxyChanged() const; 0052 void backgroundColorChanged() const; 0053 void keyEscapePressed() const; 0054 0055 private Q_SLOTS: 0056 void updateTheme(); 0057 void visualParentWindowChanged(QQuickWindow *window); 0058 void visualParentScreenChanged(QScreen *screen); 0059 0060 protected: 0061 bool event(QEvent *event) override; 0062 void keyPressEvent(QKeyEvent *e) override; 0063 0064 private: 0065 QQuickItem *m_mainItem; 0066 QPointer<QQuickItem> m_visualParentItem; 0067 QPointer<QQuickWindow> m_visualParentWindow; 0068 QPointer<QQuickItem> m_keyEventProxy; 0069 KWayland::Client::PlasmaShell *m_plasmashell = nullptr; 0070 Plasma::Theme m_theme; 0071 };