File indexing completed on 2024-04-21 05:31:06

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