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 #ifndef KDECOARTIONS_PREVIEW_CLIENT_H 7 #define KDECOARTIONS_PREVIEW_CLIENT_H 8 9 #include "../../../decorations/decorationpalette.h" 10 11 #include <KDecoration2/Private/DecoratedClientPrivate> 12 #include <QObject> 13 #include <QPalette> 14 15 class QAbstractItemModel; 16 17 namespace KDecoration2 18 { 19 namespace Preview 20 { 21 class PreviewClient : public QObject, public ApplicationMenuEnabledDecoratedClientPrivate 22 { 23 Q_OBJECT 24 Q_PROPERTY(KDecoration2::Decoration *decoration READ decoration CONSTANT) 25 Q_PROPERTY(QString caption READ caption WRITE setCaption NOTIFY captionChanged) 26 Q_PROPERTY(QIcon icon READ icon WRITE setIcon NOTIFY iconChanged) 27 Q_PROPERTY(QString iconName READ iconName WRITE setIconName NOTIFY iconNameChanged) 28 Q_PROPERTY(bool active READ isActive WRITE setActive NOTIFY activeChanged) 29 Q_PROPERTY(bool closeable READ isCloseable WRITE setCloseable NOTIFY closeableChanged) 30 Q_PROPERTY(bool keepAbove READ isKeepAbove WRITE setKeepAbove NOTIFY keepAboveChanged) 31 Q_PROPERTY(bool keepBelow READ isKeepBelow WRITE setKeepBelow NOTIFY keepBelowChanged) 32 Q_PROPERTY(bool maximizable READ isMaximizeable WRITE setMaximizable NOTIFY maximizableChanged) 33 Q_PROPERTY(bool maximized READ isMaximized NOTIFY maximizedChanged) 34 Q_PROPERTY(bool maximizedVertically READ isMaximizedVertically WRITE setMaximizedVertically NOTIFY maximizedVerticallyChanged) 35 Q_PROPERTY(bool maximizedHorizontally READ isMaximizedHorizontally WRITE setMaximizedHorizontally NOTIFY maximizedHorizontallyChanged) 36 Q_PROPERTY(bool minimizable READ isMinimizeable WRITE setMinimizable NOTIFY minimizableChanged) 37 Q_PROPERTY(bool modal READ isModal WRITE setModal NOTIFY modalChanged) 38 Q_PROPERTY(bool movable READ isMoveable WRITE setMovable NOTIFY movableChanged) 39 Q_PROPERTY(int desktop READ desktop WRITE setDesktop NOTIFY desktopChanged) 40 Q_PROPERTY(bool onAllDesktops READ isOnAllDesktops NOTIFY onAllDesktopsChanged) 41 Q_PROPERTY(bool resizable READ isResizeable WRITE setResizable NOTIFY resizableChanged) 42 Q_PROPERTY(bool shadeable READ isShadeable WRITE setShadeable NOTIFY shadeableChanged) 43 Q_PROPERTY(bool shaded READ isShaded WRITE setShaded NOTIFY shadedChanged) 44 Q_PROPERTY(bool providesContextHelp READ providesContextHelp WRITE setProvidesContextHelp NOTIFY providesContextHelpChanged) 45 Q_PROPERTY(int width READ width WRITE setWidth NOTIFY widthChanged) 46 Q_PROPERTY(int height READ height WRITE setHeight NOTIFY heightChanged) 47 Q_PROPERTY(bool bordersTopEdge READ bordersTopEdge WRITE setBordersTopEdge NOTIFY bordersTopEdgeChanged) 48 Q_PROPERTY(bool bordersLeftEdge READ bordersLeftEdge WRITE setBordersLeftEdge NOTIFY bordersLeftEdgeChanged) 49 Q_PROPERTY(bool bordersRightEdge READ bordersRightEdge WRITE setBordersRightEdge NOTIFY bordersRightEdgeChanged) 50 Q_PROPERTY(bool bordersBottomEdge READ bordersBottomEdge WRITE setBordersBottomEdge NOTIFY bordersBottomEdgeChanged) 51 public: 52 explicit PreviewClient(DecoratedClient *client, Decoration *decoration); 53 ~PreviewClient() override; 54 55 QString caption() const override; 56 WId decorationId() const override; 57 WId windowId() const override; 58 int desktop() const override; 59 QIcon icon() const override; 60 bool isActive() const override; 61 bool isCloseable() const override; 62 bool isKeepAbove() const override; 63 bool isKeepBelow() const override; 64 bool isMaximizeable() const override; 65 bool isMaximized() const override; 66 bool isMaximizedVertically() const override; 67 bool isMaximizedHorizontally() const override; 68 bool isMinimizeable() const override; 69 bool isModal() const override; 70 bool isMoveable() const override; 71 bool isOnAllDesktops() const override; 72 bool isResizeable() const override; 73 bool isShadeable() const override; 74 bool isShaded() const override; 75 bool providesContextHelp() const override; 76 77 int width() const override; 78 int height() const override; 79 QSize size() const override; 80 QPalette palette() const override; 81 QColor color(ColorGroup group, ColorRole role) const override; 82 Qt::Edges adjacentScreenEdges() const override; 83 84 bool hasApplicationMenu() const override; 85 bool isApplicationMenuActive() const override; 86 87 void requestShowToolTip(const QString &text) override; 88 void requestHideToolTip() override; 89 void requestClose() override; 90 void requestContextHelp() override; 91 void requestToggleMaximization(Qt::MouseButtons buttons) override; 92 void requestMinimize() override; 93 void requestToggleKeepAbove() override; 94 void requestToggleKeepBelow() override; 95 void requestToggleShade() override; 96 void requestShowWindowMenu(const QRect &rect) override; 97 void requestShowApplicationMenu(const QRect &rect, int actionId) override; 98 void requestToggleOnAllDesktops() override; 99 100 void showApplicationMenu(int actionId) override; 101 102 void setCaption(const QString &caption); 103 void setActive(bool active); 104 void setCloseable(bool closeable); 105 void setMaximizable(bool maximizable); 106 void setKeepBelow(bool keepBelow); 107 void setKeepAbove(bool keepAbove); 108 void setMaximizedHorizontally(bool maximized); 109 void setMaximizedVertically(bool maximized); 110 void setMinimizable(bool minimizable); 111 void setModal(bool modal); 112 void setMovable(bool movable); 113 void setResizable(bool resizable); 114 void setShadeable(bool shadeable); 115 void setShaded(bool shaded); 116 void setProvidesContextHelp(bool contextHelp); 117 void setDesktop(int desktop); 118 119 void setWidth(int width); 120 void setHeight(int height); 121 122 QString iconName() const; 123 void setIconName(const QString &icon); 124 void setIcon(const QIcon &icon); 125 126 bool bordersTopEdge() const; 127 bool bordersLeftEdge() const; 128 bool bordersRightEdge() const; 129 bool bordersBottomEdge() const; 130 131 void setBordersTopEdge(bool enabled); 132 void setBordersLeftEdge(bool enabled); 133 void setBordersRightEdge(bool enabled); 134 void setBordersBottomEdge(bool enabled); 135 136 Q_SIGNALS: 137 void captionChanged(const QString &); 138 void iconChanged(const QIcon &); 139 void iconNameChanged(const QString &); 140 void activeChanged(bool); 141 void closeableChanged(bool); 142 void keepAboveChanged(bool); 143 void keepBelowChanged(bool); 144 void maximizableChanged(bool); 145 void maximizedChanged(bool); 146 void maximizedVerticallyChanged(bool); 147 void maximizedHorizontallyChanged(bool); 148 void minimizableChanged(bool); 149 void modalChanged(bool); 150 void movableChanged(bool); 151 void onAllDesktopsChanged(bool); 152 void resizableChanged(bool); 153 void shadeableChanged(bool); 154 void shadedChanged(bool); 155 void providesContextHelpChanged(bool); 156 void desktopChanged(int); 157 void widthChanged(int); 158 void heightChanged(int); 159 void paletteChanged(const QPalette&); 160 void bordersTopEdgeChanged(bool); 161 void bordersLeftEdgeChanged(bool); 162 void bordersRightEdgeChanged(bool); 163 void bordersBottomEdgeChanged(bool); 164 165 void showWindowMenuRequested(); 166 void showApplicationMenuRequested(); 167 void minimizeRequested(); 168 void closeRequested(); 169 170 private: 171 QString m_caption; 172 QIcon m_icon; 173 QString m_iconName; 174 KWin::Decoration::DecorationPalette m_palette; 175 bool m_active; 176 bool m_closeable; 177 bool m_keepBelow; 178 bool m_keepAbove; 179 bool m_maximizable; 180 bool m_maximizedHorizontally; 181 bool m_maximizedVertically; 182 bool m_minimizable; 183 bool m_modal; 184 bool m_movable; 185 bool m_resizable; 186 bool m_shadeable; 187 bool m_shaded; 188 bool m_providesContextHelp; 189 int m_desktop; 190 int m_width; 191 int m_height; 192 bool m_bordersTopEdge; 193 bool m_bordersLeftEdge; 194 bool m_bordersRightEdge; 195 bool m_bordersBottomEdge; 196 }; 197 198 } // namespace Preview 199 } // namespace KDecoration2 200 201 #endif 202