File indexing completed on 2025-01-19 11:19:09
0001 /* 0002 SPDX-FileCopyrightText: 2019 Michail Vourlakos <mvourlakos@gmail.com> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #ifndef WINDOWSCURRENTSCREENTRACKER_H 0007 #define WINDOWSCURRENTSCREENTRACKER_H 0008 0009 // local 0010 #include "../../wm/abstractwindowinterface.h" 0011 0012 // Qt 0013 #include <QObject> 0014 0015 namespace Latte{ 0016 class View; 0017 0018 namespace ViewPart { 0019 class WindowsTracker; 0020 } 0021 0022 namespace WindowSystem { 0023 class AbstractWindowInterface; 0024 class SchemeColors; 0025 namespace Tracker { 0026 class LastActiveWindow; 0027 } 0028 } 0029 } 0030 0031 namespace Latte { 0032 namespace ViewPart { 0033 namespace TrackerPart { 0034 0035 class CurrentScreenTracker : public QObject { 0036 Q_OBJECT 0037 Q_PROPERTY(bool activeWindowMaximized READ activeWindowMaximized NOTIFY activeWindowMaximizedChanged) 0038 Q_PROPERTY(bool activeWindowTouching READ activeWindowTouching NOTIFY activeWindowTouchingChanged) 0039 Q_PROPERTY(bool activeWindowTouchingEdge READ activeWindowTouchingEdge NOTIFY activeWindowTouchingEdgeChanged) 0040 Q_PROPERTY(bool existsWindowActive READ existsWindowActive NOTIFY existsWindowActiveChanged) 0041 Q_PROPERTY(bool existsWindowMaximized READ existsWindowMaximized NOTIFY existsWindowMaximizedChanged) 0042 Q_PROPERTY(bool existsWindowTouching READ existsWindowTouching NOTIFY existsWindowTouchingChanged) 0043 Q_PROPERTY(bool existsWindowTouchingEdge READ existsWindowTouchingEdge NOTIFY existsWindowTouchingEdgeChanged) 0044 Q_PROPERTY(bool isTouchingBusyVerticalView READ isTouchingBusyVerticalView NOTIFY isTouchingBusyVerticalViewChanged) 0045 Q_PROPERTY(Latte::WindowSystem::SchemeColors *activeWindowScheme READ activeWindowScheme NOTIFY activeWindowSchemeChanged) 0046 Q_PROPERTY(Latte::WindowSystem::SchemeColors *touchingWindowScheme READ touchingWindowScheme NOTIFY touchingWindowSchemeChanged) 0047 0048 Q_PROPERTY(Latte::WindowSystem::Tracker::LastActiveWindow *lastActiveWindow READ lastActiveWindow NOTIFY lastActiveWindowChanged) 0049 0050 public: 0051 explicit CurrentScreenTracker(WindowsTracker *parent); 0052 virtual ~CurrentScreenTracker(); 0053 0054 bool activeWindowMaximized() const; 0055 bool activeWindowTouching() const; 0056 bool activeWindowTouchingEdge() const; 0057 bool existsWindowActive() const; 0058 bool existsWindowMaximized() const; 0059 bool existsWindowTouching() const; 0060 bool existsWindowTouchingEdge() const; 0061 0062 bool isTouchingBusyVerticalView() const; 0063 0064 WindowSystem::SchemeColors *activeWindowScheme() const; 0065 WindowSystem::SchemeColors *touchingWindowScheme() const; 0066 0067 WindowSystem::Tracker::LastActiveWindow *lastActiveWindow(); 0068 0069 public slots: 0070 Q_INVOKABLE void requestMoveLastWindow(int localX, int localY); 0071 0072 signals: 0073 void activeWindowMaximizedChanged(); 0074 void activeWindowTouchingChanged(); 0075 void activeWindowTouchingEdgeChanged(); 0076 void existsWindowActiveChanged(); 0077 void existsWindowMaximizedChanged(); 0078 void existsWindowTouchingChanged(); 0079 void existsWindowTouchingEdgeChanged(); 0080 void isTouchingBusyVerticalViewChanged(); 0081 0082 void activeWindowSchemeChanged(); 0083 void touchingWindowSchemeChanged(); 0084 0085 void lastActiveWindowChanged(); 0086 0087 private slots: 0088 void initSignalsForInformation(); 0089 0090 private: 0091 void init(); 0092 0093 private: 0094 Latte::View *m_latteView{nullptr}; 0095 WindowSystem::AbstractWindowInterface *m_wm{nullptr}; 0096 }; 0097 0098 } 0099 } 0100 } 0101 0102 #endif