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