1 /*
2  * SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org>
3  *
4  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5  */
6 #include "mockclient.h"
7 #include <decoratedclient.h>
8 
9 #include <QPalette>
10 
MockClient(KDecoration2::DecoratedClient * client,KDecoration2::Decoration * decoration)11 MockClient::MockClient(KDecoration2::DecoratedClient *client, KDecoration2::Decoration *decoration)
12     : QObject()
13     , ApplicationMenuEnabledDecoratedClientPrivate(client, decoration)
14 {
15 }
16 
adjacentScreenEdges() const17 Qt::Edges MockClient::adjacentScreenEdges() const
18 {
19     return Qt::Edges();
20 }
21 
caption() const22 QString MockClient::caption() const
23 {
24     return QString();
25 }
26 
decorationId() const27 WId MockClient::decorationId() const
28 {
29     return 0;
30 }
31 
desktop() const32 int MockClient::desktop() const
33 {
34     return 1;
35 }
36 
height() const37 int MockClient::height() const
38 {
39     return m_height;
40 }
41 
icon() const42 QIcon MockClient::icon() const
43 {
44     return QIcon();
45 }
46 
isActive() const47 bool MockClient::isActive() const
48 {
49     return false;
50 }
51 
isCloseable() const52 bool MockClient::isCloseable() const
53 {
54     return m_closeable;
55 }
56 
isKeepAbove() const57 bool MockClient::isKeepAbove() const
58 {
59     return m_keepAbove;
60 }
61 
isKeepBelow() const62 bool MockClient::isKeepBelow() const
63 {
64     return m_keepBelow;
65 }
66 
isMaximizeable() const67 bool MockClient::isMaximizeable() const
68 {
69     return m_maximizable;
70 }
71 
isMaximized() const72 bool MockClient::isMaximized() const
73 {
74     return isMaximizedHorizontally() && isMaximizedVertically();
75 }
76 
isMaximizedHorizontally() const77 bool MockClient::isMaximizedHorizontally() const
78 {
79     return m_maximizedHorizontally;
80 }
81 
isMaximizedVertically() const82 bool MockClient::isMaximizedVertically() const
83 {
84     return m_maximizedVertically;
85 }
86 
isMinimizeable() const87 bool MockClient::isMinimizeable() const
88 {
89     return m_minimizable;
90 }
91 
isModal() const92 bool MockClient::isModal() const
93 {
94     return false;
95 }
96 
isMoveable() const97 bool MockClient::isMoveable() const
98 {
99     return false;
100 }
101 
isOnAllDesktops() const102 bool MockClient::isOnAllDesktops() const
103 {
104     return m_onAllDesktops;
105 }
106 
isResizeable() const107 bool MockClient::isResizeable() const
108 {
109     return false;
110 }
111 
isShadeable() const112 bool MockClient::isShadeable() const
113 {
114     return m_shadeable;
115 }
116 
isShaded() const117 bool MockClient::isShaded() const
118 {
119     return m_shaded;
120 }
121 
palette() const122 QPalette MockClient::palette() const
123 {
124     return QPalette();
125 }
126 
hasApplicationMenu() const127 bool MockClient::hasApplicationMenu() const
128 {
129     return true;
130 }
131 
isApplicationMenuActive() const132 bool MockClient::isApplicationMenuActive() const
133 {
134     return false;
135 }
136 
providesContextHelp() const137 bool MockClient::providesContextHelp() const
138 {
139     return m_contextHelp;
140 }
141 
requestClose()142 void MockClient::requestClose()
143 {
144     Q_EMIT closeRequested();
145 }
146 
requestContextHelp()147 void MockClient::requestContextHelp()
148 {
149     Q_EMIT quickHelpRequested();
150 }
151 
requestToggleMaximization(Qt::MouseButtons buttons)152 void MockClient::requestToggleMaximization(Qt::MouseButtons buttons)
153 {
154     bool maximizedHorizontally = m_maximizedHorizontally;
155     bool maximizedVertically = m_maximizedVertically;
156     if (buttons.testFlag(Qt::LeftButton)) {
157         maximizedHorizontally = !m_maximizedHorizontally;
158         maximizedVertically = !m_maximizedVertically;
159     }
160     if (buttons.testFlag(Qt::MiddleButton)) {
161         maximizedHorizontally = !m_maximizedHorizontally;
162     }
163     if (buttons.testFlag(Qt::RightButton)) {
164         maximizedVertically = !m_maximizedVertically;
165     }
166     const bool wasMaximized = isMaximized();
167     if (m_maximizedHorizontally != maximizedHorizontally) {
168         m_maximizedHorizontally = maximizedHorizontally;
169         Q_EMIT client()->maximizedHorizontallyChanged(m_maximizedHorizontally);
170     }
171     if (m_maximizedVertically != maximizedVertically) {
172         m_maximizedVertically = maximizedVertically;
173         Q_EMIT client()->maximizedVerticallyChanged(m_maximizedVertically);
174     }
175     if (wasMaximized != isMaximized()) {
176         Q_EMIT client()->maximizedChanged(isMaximized());
177     }
178 }
179 
requestMinimize()180 void MockClient::requestMinimize()
181 {
182     Q_EMIT minimizeRequested();
183 }
184 
requestShowWindowMenu(const QRect & rect)185 void MockClient::requestShowWindowMenu(const QRect &rect)
186 {
187     Q_EMIT menuRequested();
188 }
189 
requestShowApplicationMenu(const QRect & rect,int actionId)190 void MockClient::requestShowApplicationMenu(const QRect &rect, int actionId)
191 {
192     Q_UNUSED(rect);
193     Q_UNUSED(actionId);
194     Q_EMIT applicationMenuRequested(); // FIXME TODO pass geometry
195 }
196 
requestToggleKeepAbove()197 void MockClient::requestToggleKeepAbove()
198 {
199     m_keepAbove = !m_keepAbove;
200     Q_EMIT client()->keepAboveChanged(m_keepAbove);
201 }
202 
requestToggleKeepBelow()203 void MockClient::requestToggleKeepBelow()
204 {
205     m_keepBelow = !m_keepBelow;
206     Q_EMIT client()->keepBelowChanged(m_keepBelow);
207 }
208 
requestToggleOnAllDesktops()209 void MockClient::requestToggleOnAllDesktops()
210 {
211     m_onAllDesktops = !m_onAllDesktops;
212     Q_EMIT client()->onAllDesktopsChanged(m_onAllDesktops);
213 }
214 
requestToggleShade()215 void MockClient::requestToggleShade()
216 {
217     m_shaded = !m_shaded;
218     Q_EMIT client()->shadedChanged(m_shaded);
219 }
220 
requestShowToolTip(const QString & text)221 void MockClient::requestShowToolTip(const QString &text)
222 {
223     Q_UNUSED(text);
224 }
225 
requestHideToolTip()226 void MockClient::requestHideToolTip()
227 {
228 }
229 
size() const230 QSize MockClient::size() const
231 {
232     return QSize(m_width, m_height);
233 }
234 
width() const235 int MockClient::width() const
236 {
237     return m_width;
238 }
239 
windowId() const240 WId MockClient::windowId() const
241 {
242     return 0;
243 }
244 
setCloseable(bool set)245 void MockClient::setCloseable(bool set)
246 {
247     m_closeable = set;
248     Q_EMIT client()->closeableChanged(set);
249 }
250 
setMinimizable(bool set)251 void MockClient::setMinimizable(bool set)
252 {
253     m_minimizable = set;
254     Q_EMIT client()->minimizeableChanged(set);
255 }
256 
setProvidesContextHelp(bool set)257 void MockClient::setProvidesContextHelp(bool set)
258 {
259     m_contextHelp = set;
260     Q_EMIT client()->providesContextHelpChanged(set);
261 }
262 
setShadeable(bool set)263 void MockClient::setShadeable(bool set)
264 {
265     m_shadeable = set;
266     Q_EMIT client()->shadeableChanged(set);
267 }
268 
setMaximizable(bool set)269 void MockClient::setMaximizable(bool set)
270 {
271     m_maximizable = set;
272     Q_EMIT client()->maximizeableChanged(set);
273 }
274 
setWidth(int w)275 void MockClient::setWidth(int w)
276 {
277     m_width = w;
278     Q_EMIT client()->widthChanged(w);
279 }
280 
setHeight(int h)281 void MockClient::setHeight(int h)
282 {
283     m_height = h;
284     Q_EMIT client()->heightChanged(h);
285 }
286 
showApplicationMenu(int actionId)287 void MockClient::showApplicationMenu(int actionId)
288 {
289     Q_UNUSED(actionId)
290 }
291