1 /*
2 SPDX-FileCopyrightText: 2016 Smith AR <audoban@openmailbox.org>
3 SPDX-FileCopyrightText: 2016 Michail Vourlakos <mvourlakos@gmail.com>
4
5 SPDX-License-Identifier: GPL-2.0-or-later
6 */
7
8 #include "windowinfowrap.h"
9
10
11 namespace Latte {
12 namespace WindowSystem {
13
WindowInfoWrap()14 WindowInfoWrap::WindowInfoWrap()
15 {
16 }
17
WindowInfoWrap(const WindowInfoWrap & o)18 WindowInfoWrap::WindowInfoWrap(const WindowInfoWrap &o)
19 : m_wid(o.m_wid)
20 , m_parentId(o.m_parentId)
21 , m_geometry(o.m_geometry)
22 , m_isValid(o.m_isValid)
23 , m_isActive(o.m_isActive)
24 , m_isMinimized(o.m_isMinimized)
25 , m_isMaxVert(o.m_isMaxVert)
26 , m_isMaxHoriz(o.m_isMaxHoriz)
27 , m_isFullscreen(o.m_isFullscreen)
28 , m_isShaded(o.m_isShaded)
29 , m_isKeepAbove(o.m_isKeepAbove)
30 , m_isKeepBelow(o.m_isKeepBelow)
31 , m_hasSkipPager(o.m_hasSkipPager)
32 , m_hasSkipSwitcher(o.m_hasSkipSwitcher)
33 , m_hasSkipTaskbar(o.m_hasSkipTaskbar)
34 , m_isOnAllDesktops(o.m_isOnAllDesktops)
35 , m_isOnAllActivities(o.m_isOnAllActivities)
36 , m_isClosable(o.m_isClosable)
37 , m_isFullScreenable(o.m_isFullScreenable)
38 , m_isGroupable(o.m_isGroupable)
39 , m_isMaximizable(o.m_isMaximizable)
40 , m_isMinimizable(o.m_isMinimizable)
41 , m_isMovable(o.m_isMovable)
42 , m_isResizable(o.m_isResizable)
43 , m_isShadeable(o.m_isShadeable)
44 , m_isVirtualDesktopsChangeable(o.m_isVirtualDesktopsChangeable)
45 , m_desktops(o.m_desktops)
46 , m_activities(o.m_activities)
47 , m_display(o.m_display)
48 {
49 }
50
WindowInfoWrap(WindowInfoWrap && o)51 WindowInfoWrap::WindowInfoWrap(WindowInfoWrap &&o)
52 : m_wid(o.m_wid)
53 , m_parentId(o.m_parentId)
54 , m_geometry(o.m_geometry)
55 , m_isValid(o.m_isValid)
56 , m_isActive(o.m_isActive)
57 , m_isMinimized(o.m_isMinimized)
58 , m_isMaxVert(o.m_isMaxVert)
59 , m_isMaxHoriz(o.m_isMaxHoriz)
60 , m_isFullscreen(o.m_isFullscreen)
61 , m_isShaded(o.m_isShaded)
62 , m_isKeepAbove(o.m_isKeepAbove)
63 , m_isKeepBelow(o.m_isKeepBelow)
64 , m_hasSkipPager(o.m_hasSkipPager)
65 , m_hasSkipSwitcher(o.m_hasSkipSwitcher)
66 , m_hasSkipTaskbar(o.m_hasSkipTaskbar)
67 , m_isOnAllDesktops(o.m_isOnAllDesktops)
68 , m_isOnAllActivities(o.m_isOnAllActivities)
69 , m_isClosable(o.m_isClosable)
70 , m_isFullScreenable(o.m_isFullScreenable)
71 , m_isGroupable(o.m_isGroupable)
72 , m_isMaximizable(o.m_isMaximizable)
73 , m_isMinimizable(o.m_isMinimizable)
74 , m_isMovable(o.m_isMovable)
75 , m_isResizable(o.m_isResizable)
76 , m_isShadeable(o.m_isShadeable)
77 , m_isVirtualDesktopsChangeable(o.m_isVirtualDesktopsChangeable)
78 , m_desktops(o.m_desktops)
79 , m_activities(o.m_activities)
80 , m_display(o.m_display)
81 {
82 }
83
84 //! Operators
85 // BEGIN: definitions
operator =(WindowInfoWrap && rhs)86 WindowInfoWrap &WindowInfoWrap::operator=(WindowInfoWrap &&rhs)
87 {
88 m_wid = rhs.m_wid;
89 m_parentId = rhs.m_parentId;
90 m_geometry = rhs.m_geometry;
91 m_isValid = rhs.m_isValid;
92 m_isActive = rhs.m_isActive;
93 m_isMinimized = rhs.m_isMinimized;
94 m_isMaxVert = rhs.m_isMaxVert;
95 m_isMaxHoriz = rhs.m_isMaxHoriz;
96 m_isFullscreen = rhs.m_isFullscreen;
97 m_isShaded = rhs.m_isShaded;
98 m_isKeepAbove = rhs.m_isKeepAbove;
99 m_isKeepBelow = rhs.m_isKeepBelow;
100 m_hasSkipPager = rhs.m_hasSkipPager;
101 m_hasSkipSwitcher = rhs.m_hasSkipSwitcher;
102 m_hasSkipTaskbar = rhs.m_hasSkipTaskbar;
103 m_isOnAllDesktops = rhs.m_isOnAllDesktops;
104 m_isOnAllActivities = rhs.m_isOnAllActivities;
105 m_isClosable = rhs.m_isClosable;
106 m_isFullScreenable = rhs.m_isFullScreenable;
107 m_isGroupable = rhs.m_isGroupable;
108 m_isMaximizable = rhs.m_isMaximizable;
109 m_isMinimizable = rhs.m_isMinimizable;
110 m_isMovable = rhs.m_isMovable;
111 m_isResizable = rhs.m_isResizable;
112 m_isShadeable = rhs.m_isShadeable;
113 m_isVirtualDesktopsChangeable = rhs.m_isVirtualDesktopsChangeable;
114
115 m_display = rhs.m_display;
116 m_desktops = rhs.m_desktops;
117 m_activities = rhs.m_activities;
118 return *this;
119 }
120
operator =(const WindowInfoWrap & rhs)121 WindowInfoWrap &WindowInfoWrap::operator=(const WindowInfoWrap &rhs)
122 {
123 m_wid = rhs.m_wid;
124 m_parentId = rhs.m_parentId;
125 m_geometry = rhs.m_geometry;
126 m_isValid = rhs.m_isValid;
127 m_isActive = rhs.m_isActive;
128 m_isMinimized = rhs.m_isMinimized;
129 m_isMaxVert = rhs.m_isMaxVert;
130 m_isMaxHoriz = rhs.m_isMaxHoriz;
131 m_isFullscreen = rhs.m_isFullscreen;
132 m_isShaded = rhs.m_isShaded;
133 m_isKeepAbove = rhs.m_isKeepAbove;
134 m_isKeepBelow = rhs.m_isKeepBelow;
135 m_hasSkipPager = rhs.m_hasSkipPager;
136 m_hasSkipSwitcher = rhs.m_hasSkipSwitcher;
137 m_hasSkipTaskbar = rhs.m_hasSkipTaskbar;
138 m_isOnAllDesktops = rhs.m_isOnAllDesktops;
139 m_isOnAllActivities = rhs.m_isOnAllActivities;
140 m_isClosable = rhs.m_isClosable;
141 m_isFullScreenable = rhs.m_isFullScreenable;
142 m_isGroupable = rhs.m_isGroupable;
143 m_isMaximizable = rhs.m_isMaximizable;
144 m_isMinimizable = rhs.m_isMinimizable;
145 m_isMovable = rhs.m_isMovable;
146 m_isResizable = rhs.m_isResizable;
147 m_isShadeable = rhs.m_isShadeable;
148 m_isVirtualDesktopsChangeable = rhs.m_isVirtualDesktopsChangeable;
149
150 m_display = rhs.m_display;
151 m_desktops = rhs.m_desktops;
152 m_activities = rhs.m_activities;
153 return *this;
154 }
155
156 //! Access properties
isValid() const157 bool WindowInfoWrap::isValid() const
158 {
159 return m_isValid;
160 }
161
setIsValid(bool isValid)162 void WindowInfoWrap::setIsValid(bool isValid)
163 {
164 m_isValid = isValid;
165 }
166
isActive() const167 bool WindowInfoWrap::isActive() const
168 {
169 return m_isActive;
170 }
171
setIsActive(bool isActive)172 void WindowInfoWrap::setIsActive(bool isActive)
173 {
174 m_isActive = isActive;
175 }
176
isMinimized() const177 bool WindowInfoWrap::isMinimized() const
178 {
179 return m_isMinimized;
180 }
181
setIsMinimized(bool isMinimized)182 void WindowInfoWrap::setIsMinimized(bool isMinimized)
183 {
184 m_isMinimized = isMinimized;
185 }
186
isMaximized() const187 bool WindowInfoWrap::isMaximized() const
188 {
189 return m_isMaxVert && m_isMaxHoriz;
190 }
191
isMaxVert() const192 bool WindowInfoWrap::isMaxVert() const
193 {
194 return m_isMaxVert;
195 }
196
setIsMaxVert(bool isMaxVert)197 void WindowInfoWrap::setIsMaxVert(bool isMaxVert)
198 {
199 m_isMaxVert = isMaxVert;
200 }
201
isMaxHoriz() const202 bool WindowInfoWrap::isMaxHoriz() const
203 {
204 return m_isMaxHoriz;
205 }
206
setIsMaxHoriz(bool isMaxHoriz)207 void WindowInfoWrap::setIsMaxHoriz(bool isMaxHoriz)
208 {
209 m_isMaxHoriz = isMaxHoriz;
210 }
211
isFullscreen() const212 bool WindowInfoWrap::isFullscreen() const
213 {
214 return m_isFullscreen;
215 }
216
setIsFullscreen(bool isFullscreen)217 void WindowInfoWrap::setIsFullscreen(bool isFullscreen)
218 {
219 m_isFullscreen = isFullscreen;
220 }
221
isShaded() const222 bool WindowInfoWrap::isShaded() const
223 {
224 return m_isShaded;
225 }
226
setIsShaded(bool isShaded)227 void WindowInfoWrap::setIsShaded(bool isShaded)
228 {
229 m_isShaded = isShaded;
230 }
231
isKeepAbove() const232 bool WindowInfoWrap::isKeepAbove() const
233 {
234 return m_isKeepAbove;
235 }
236
setIsKeepAbove(bool isKeepAbove)237 void WindowInfoWrap::setIsKeepAbove(bool isKeepAbove)
238 {
239 m_isKeepAbove = isKeepAbove;
240 }
241
isKeepBelow() const242 bool WindowInfoWrap::isKeepBelow() const
243 {
244 return m_isKeepBelow;
245 }
246
setIsKeepBelow(bool isKeepBelow)247 void WindowInfoWrap::setIsKeepBelow(bool isKeepBelow)
248 {
249 m_isKeepBelow = isKeepBelow;
250 }
251
hasSkipPager() const252 bool WindowInfoWrap::hasSkipPager() const
253 {
254 return m_hasSkipPager;
255 }
256
setHasSkipPager(bool skipPager)257 void WindowInfoWrap::setHasSkipPager(bool skipPager)
258 {
259 m_hasSkipPager = skipPager;
260 }
261
hasSkipSwitcher() const262 bool WindowInfoWrap::hasSkipSwitcher() const
263 {
264 return m_hasSkipSwitcher;
265 }
266
setHasSkipSwitcher(bool skipSwitcher)267 void WindowInfoWrap::setHasSkipSwitcher(bool skipSwitcher)
268 {
269 m_hasSkipSwitcher = skipSwitcher;
270 }
271
hasSkipTaskbar() const272 bool WindowInfoWrap::hasSkipTaskbar() const
273 {
274 return m_hasSkipTaskbar;
275 }
276
setHasSkipTaskbar(bool skipTaskbar)277 void WindowInfoWrap::setHasSkipTaskbar(bool skipTaskbar)
278 {
279 m_hasSkipTaskbar = skipTaskbar;
280 }
281
isOnAllDesktops() const282 bool WindowInfoWrap::isOnAllDesktops() const
283 {
284 return m_isOnAllDesktops;
285 }
286
setIsOnAllDesktops(bool alldesktops)287 void WindowInfoWrap::setIsOnAllDesktops(bool alldesktops)
288 {
289 m_isOnAllDesktops = alldesktops;
290 }
291
isOnAllActivities() const292 bool WindowInfoWrap::isOnAllActivities() const
293 {
294 return m_isOnAllActivities;
295 }
296
setIsOnAllActivities(bool allactivities)297 void WindowInfoWrap::setIsOnAllActivities(bool allactivities)
298 {
299 m_isOnAllActivities = allactivities;
300 }
301
302 //!BEGIN: Window Abilities
isCloseable() const303 bool WindowInfoWrap::isCloseable() const
304 {
305 return m_isClosable;
306 }
setIsClosable(bool closable)307 void WindowInfoWrap::setIsClosable(bool closable)
308 {
309 m_isClosable = closable;
310 }
311
isFullScreenable() const312 bool WindowInfoWrap::isFullScreenable() const
313 {
314 return m_isFullScreenable;
315 }
setIsFullScreenable(bool fullscreenable)316 void WindowInfoWrap::setIsFullScreenable(bool fullscreenable)
317 {
318 m_isFullScreenable = fullscreenable;
319 }
320
isGroupable() const321 bool WindowInfoWrap::isGroupable() const
322 {
323 return m_isGroupable;
324 }
setIsGroupable(bool groupable)325 void WindowInfoWrap::setIsGroupable(bool groupable)
326 {
327 m_isGroupable = groupable;
328 }
329
isMaximizable() const330 bool WindowInfoWrap::isMaximizable() const
331 {
332 return m_isMaximizable;
333 }
setIsMaximizable(bool maximizable)334 void WindowInfoWrap::setIsMaximizable(bool maximizable)
335 {
336 m_isMaximizable = maximizable;
337 }
338
isMinimizable() const339 bool WindowInfoWrap::isMinimizable() const
340 {
341 return m_isMinimizable;
342 }
setIsMinimizable(bool minimizable)343 void WindowInfoWrap::setIsMinimizable(bool minimizable)
344 {
345 m_isMinimizable = minimizable;
346 }
347
isMovable() const348 bool WindowInfoWrap::isMovable() const
349 {
350 return m_isMovable;
351 }
setIsMovable(bool movable)352 void WindowInfoWrap::setIsMovable(bool movable)
353 {
354 m_isMovable = movable;
355 }
356
isResizable() const357 bool WindowInfoWrap::isResizable() const
358 {
359 return m_isResizable;
360 }
setIsResizable(bool resizable)361 void WindowInfoWrap::setIsResizable(bool resizable)
362 {
363 m_isResizable = resizable;
364 }
365
isShadeable() const366 bool WindowInfoWrap::isShadeable() const
367 {
368 return m_isShadeable;
369 }
setIsShadeable(bool shadeble)370 void WindowInfoWrap::setIsShadeable(bool shadeble)
371 {
372 m_isShadeable = shadeble;
373 }
374
isVirtualDesktopsChangeable() const375 bool WindowInfoWrap::isVirtualDesktopsChangeable() const
376 {
377 return m_isVirtualDesktopsChangeable;
378 }
setIsVirtualDesktopsChangeable(bool virtualdesktopchangeable)379 void WindowInfoWrap::setIsVirtualDesktopsChangeable(bool virtualdesktopchangeable)
380 {
381 m_isVirtualDesktopsChangeable = virtualdesktopchangeable;
382 }
383 //!END: Window Abilities
384
385
386
isMainWindow() const387 bool WindowInfoWrap::isMainWindow() const
388 {
389 return (m_parentId.toInt() <= 0);
390 }
391
isChildWindow() const392 bool WindowInfoWrap::isChildWindow() const
393 {
394 return (m_parentId.toInt() > 0);
395 }
396
397
appName() const398 QString WindowInfoWrap::appName() const
399 {
400 return m_appName;
401 }
402
setAppName(const QString & appName)403 void WindowInfoWrap::setAppName(const QString &appName)
404 {
405 m_appName = appName;
406 }
407
display() const408 QString WindowInfoWrap::display() const
409 {
410 return m_display;
411 }
412
setDisplay(const QString & display)413 void WindowInfoWrap::setDisplay(const QString &display)
414 {
415 m_display = display;
416 }
417
icon() const418 QIcon WindowInfoWrap::icon() const
419 {
420 return m_icon;
421 }
422
setIcon(const QIcon & icon)423 void WindowInfoWrap::setIcon(const QIcon &icon)
424 {
425 m_icon = icon;
426 }
427
geometry() const428 QRect WindowInfoWrap::geometry() const
429 {
430 return m_geometry;
431 }
432
setGeometry(const QRect & geometry)433 void WindowInfoWrap::setGeometry(const QRect &geometry)
434 {
435 m_geometry = geometry;
436 }
437
wid() const438 WindowId WindowInfoWrap::wid() const
439 {
440 return m_wid;
441 }
442
setWid(const WindowId & wid)443 void WindowInfoWrap::setWid(const WindowId &wid)
444 {
445 m_wid = wid;
446 }
447
parentId() const448 WindowId WindowInfoWrap::parentId() const
449 {
450 return m_parentId;
451 }
452
setParentId(const WindowId & parentId)453 void WindowInfoWrap::setParentId(const WindowId &parentId)
454 {
455 if (m_wid == parentId) {
456 return;
457 }
458
459 m_parentId = parentId;
460 }
461
desktops() const462 QStringList WindowInfoWrap::desktops() const
463 {
464 return m_desktops;
465 }
466
setDesktops(const QStringList & desktops)467 void WindowInfoWrap::setDesktops(const QStringList &desktops)
468 {
469 m_desktops = desktops;
470 }
471
activities() const472 QStringList WindowInfoWrap::activities() const
473 {
474 return m_activities;
475 }
476
setActivities(const QStringList & activities)477 void WindowInfoWrap::setActivities(const QStringList &activities)
478 {
479 m_activities = activities;
480 }
481
isOnDesktop(const QString & desktop) const482 bool WindowInfoWrap::isOnDesktop(const QString &desktop) const
483 {
484 return m_isOnAllDesktops || m_desktops.contains(desktop);
485 }
486
isOnActivity(const QString & activity) const487 bool WindowInfoWrap::isOnActivity(const QString &activity) const
488 {
489 return m_isOnAllActivities || m_activities.contains(activity);
490 }
491
492 }
493 }
494