File indexing completed on 2024-04-28 16:49:32

0001 /*
0002 *  Copyright 2019  Michail Vourlakos <mvourlakos@gmail.com>
0003 *
0004 *  This file is part of Latte-Dock
0005 *
0006 *  Latte-Dock is free software; you can redistribute it and/or
0007 *  modify it under the terms of the GNU General Public License as
0008 *  published by the Free Software Foundation; either version 2 of
0009 *  the License, or (at your option) any later version.
0010 *
0011 *  Latte-Dock is distributed in the hope that it will be useful,
0012 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
0013 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0014 *  GNU General Public License for more details.
0015 *
0016 *  You should have received a copy of the GNU General Public License
0017 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
0018 */
0019 
0020 #ifndef WINDOWSYSTEMTRACKEDVIEWINFO_H
0021 #define WINDOWSYSTEMTRACKEDVIEWINFO_H
0022 
0023 // local
0024 #include "trackedgeneralinfo.h"
0025 #include "../windowinfowrap.h"
0026 
0027 // Qt
0028 #include <QObject>
0029 #include <QRect>
0030 
0031 namespace Latte {
0032 class View;
0033 namespace WindowSystem {
0034 class SchemeColors;
0035 namespace Tracker {
0036 class Windows;
0037 }
0038 }
0039 }
0040 
0041 
0042 namespace Latte {
0043 namespace WindowSystem {
0044 namespace Tracker {
0045 
0046 class TrackedViewInfo : public TrackedGeneralInfo {
0047     Q_OBJECT
0048 
0049 public:
0050     TrackedViewInfo(Tracker::Windows *tracker, Latte::View *view);
0051     ~TrackedViewInfo() override;
0052 
0053     bool activeWindowTouching() const;
0054     void setActiveWindowTouching(bool touching);
0055 
0056     bool existsWindowTouching() const;
0057     void setExistsWindowTouching(bool touching);
0058 
0059     bool isTouchingBusyVerticalView() const;
0060     void setIsTouchingBusyVerticalView(bool touching);
0061 
0062     QRect availableScreenGeometry() const;
0063     void setAvailableScreenGeometry(QRect geometry);
0064 
0065     SchemeColors *touchingWindowScheme() const;
0066     void setTouchingWindowScheme(SchemeColors *scheme);
0067 
0068     Latte::View *view() const;
0069 
0070     bool isTracking(const WindowInfoWrap &winfo) const override;
0071 
0072 private:
0073     bool m_activeWindowTouching{false};
0074     bool m_existsWindowTouching{false};
0075     bool m_isTouchingBusyVerticalView{false};
0076 
0077     QRect m_availableScreenGeometry;
0078 
0079     SchemeColors *m_touchingWindowScheme{nullptr};
0080 
0081     Latte::View *m_view{nullptr};
0082 };
0083 
0084 }
0085 }
0086 }
0087 
0088 #endif