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 WINDOWSALLSCREENSTRACKER_H 0007 #define WINDOWSALLSCREENSTRACKER_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 AllScreensTracker : public QObject { 0036 Q_OBJECT 0037 Q_PROPERTY(bool activeWindowMaximized READ activeWindowMaximized NOTIFY activeWindowMaximizedChanged) 0038 Q_PROPERTY(bool existsWindowActive READ existsWindowActive NOTIFY existsWindowActiveChanged) 0039 Q_PROPERTY(bool existsWindowMaximized READ existsWindowMaximized NOTIFY existsWindowMaximizedChanged) 0040 Q_PROPERTY(Latte::WindowSystem::SchemeColors *activeWindowScheme READ activeWindowScheme NOTIFY activeWindowSchemeChanged) 0041 0042 Q_PROPERTY(Latte::WindowSystem::Tracker::LastActiveWindow *lastActiveWindow READ lastActiveWindow NOTIFY lastActiveWindowChanged) 0043 0044 public: 0045 explicit AllScreensTracker(WindowsTracker *parent); 0046 virtual ~AllScreensTracker(); 0047 0048 bool activeWindowMaximized() const; 0049 bool existsWindowActive() const; 0050 bool existsWindowMaximized() const; 0051 0052 WindowSystem::SchemeColors *activeWindowScheme() const; 0053 0054 WindowSystem::Tracker::LastActiveWindow *lastActiveWindow(); 0055 0056 public slots: 0057 Q_INVOKABLE void requestMoveLastWindow(int localX, int localY); 0058 0059 signals: 0060 void activeWindowMaximizedChanged(); 0061 void existsWindowActiveChanged(); 0062 void existsWindowMaximizedChanged(); 0063 void activeWindowSchemeChanged(); 0064 0065 void lastActiveWindowChanged(); 0066 0067 private slots: 0068 void initSignalsForInformation(); 0069 0070 private: 0071 void init(); 0072 0073 private: 0074 Latte::WindowSystem::Tracker::LastActiveWindow *m_currentLastActiveWindow{nullptr}; 0075 0076 Latte::View *m_latteView{nullptr}; 0077 WindowSystem::AbstractWindowInterface *m_wm{nullptr}; 0078 }; 0079 0080 } 0081 } 0082 } 0083 0084 #endif