File indexing completed on 2024-12-08 04:58:27

0001 /*
0002     SPDX-FileCopyrightText: 2019 Michail Vourlakos <mvourlakos@gmail.com>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #ifndef WINDOWSYSTEMTRACKEDVIEWINFO_H
0007 #define WINDOWSYSTEMTRACKEDVIEWINFO_H
0008 
0009 // local
0010 #include "trackedgeneralinfo.h"
0011 #include "../windowinfowrap.h"
0012 
0013 // Qt
0014 #include <QObject>
0015 #include <QRect>
0016 
0017 namespace Latte {
0018 class View;
0019 namespace WindowSystem {
0020 class SchemeColors;
0021 namespace Tracker {
0022 class Windows;
0023 }
0024 }
0025 }
0026 
0027 
0028 namespace Latte {
0029 namespace WindowSystem {
0030 namespace Tracker {
0031 
0032 class TrackedViewInfo : public TrackedGeneralInfo {
0033     Q_OBJECT
0034 
0035 public:
0036     TrackedViewInfo(Tracker::Windows *tracker, Latte::View *view);
0037     ~TrackedViewInfo() override;
0038 
0039     bool activeWindowTouching() const;
0040     void setActiveWindowTouching(bool touching);
0041 
0042     bool existsWindowTouching() const;
0043     void setExistsWindowTouching(bool touching);
0044 
0045     bool activeWindowTouchingEdge() const;
0046     void setActiveWindowTouchingEdge(bool touching);
0047 
0048     bool existsWindowTouchingEdge() const;
0049     void setExistsWindowTouchingEdge(bool touching);
0050 
0051     bool isTouchingBusyVerticalView() const;
0052     void setIsTouchingBusyVerticalView(bool touching);
0053 
0054     QRect screenGeometry() const;
0055     void setScreenGeometry(QRect geometry);
0056 
0057     SchemeColors *touchingWindowScheme() const;
0058     void setTouchingWindowScheme(SchemeColors *scheme);
0059 
0060     Latte::View *view() const;
0061 
0062     bool isTracking(const WindowInfoWrap &winfo) const override;
0063 
0064 private:
0065     bool m_activeWindowTouching{false};
0066     bool m_existsWindowTouching{false};
0067     bool m_activeWindowTouchingEdge{false};
0068     bool m_existsWindowTouchingEdge{false};
0069     bool m_isTouchingBusyVerticalView{false};
0070 
0071     QRect m_screenGeometry;
0072 
0073     SchemeColors *m_touchingWindowScheme{nullptr};
0074 
0075     Latte::View *m_view{nullptr};
0076 };
0077 
0078 }
0079 }
0080 }
0081 
0082 #endif