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 #include "windowstracker.h" 0007 0008 // local 0009 #include "currentscreentracker.h" 0010 #include "allscreenstracker.h" 0011 #include "../positioner.h" 0012 #include "../view.h" 0013 #include "../../lattecorona.h" 0014 #include "../../wm/tracker/windowstracker.h" 0015 0016 0017 namespace Latte { 0018 namespace ViewPart { 0019 0020 WindowsTracker::WindowsTracker(Latte::View *parent) 0021 : QObject(parent), 0022 m_latteView(parent) 0023 { 0024 qDebug() << "WindowsTracker creating..."; 0025 0026 auto corona = qobject_cast<Latte::Corona *>(m_latteView->corona()); 0027 m_wm = corona->wm(); 0028 0029 m_allScreensTracker = new TrackerPart::AllScreensTracker(this); 0030 m_currentScreenTracker = new TrackerPart::CurrentScreenTracker(this); 0031 0032 connect(m_wm->windowsTracker(), &WindowSystem::Tracker::Windows::enabledChanged, this, [&](const Latte::View *view) { 0033 if (m_latteView == view) { 0034 emit enabledChanged(); 0035 } 0036 }); 0037 0038 m_wm->windowsTracker()->addView(m_latteView); 0039 emit allScreensChanged(); 0040 emit currentScreenChanged(); 0041 } 0042 0043 WindowsTracker::~WindowsTracker() 0044 { 0045 qDebug() << "WindowsTracker removing..."; 0046 0047 if (m_allScreensTracker) { 0048 m_allScreensTracker->deleteLater(); 0049 } 0050 0051 if (m_currentScreenTracker) { 0052 m_currentScreenTracker->deleteLater(); 0053 } 0054 } 0055 0056 Latte::View *WindowsTracker::view() const 0057 { 0058 return m_latteView; 0059 } 0060 0061 WindowSystem::AbstractWindowInterface *WindowsTracker::wm() const 0062 { 0063 return m_wm; 0064 } 0065 0066 bool WindowsTracker::enabled() const 0067 { 0068 return m_wm->windowsTracker()->enabled(m_latteView); 0069 } 0070 0071 void WindowsTracker::setEnabled(bool active) 0072 { 0073 m_wm->windowsTracker()->setEnabled(m_latteView, active); 0074 } 0075 0076 0077 TrackerPart::AllScreensTracker *WindowsTracker::allScreens() const 0078 { 0079 return m_allScreensTracker; 0080 } 0081 0082 TrackerPart::CurrentScreenTracker *WindowsTracker::currentScreen() const 0083 { 0084 return m_currentScreenTracker; 0085 } 0086 0087 //! Environment Functions 0088 void WindowsTracker::switchToNextActivity() 0089 { 0090 m_wm->switchToNextActivity(); 0091 } 0092 0093 void WindowsTracker::switchToPreviousActivity() 0094 { 0095 m_wm->switchToPreviousActivity(); 0096 } 0097 0098 void WindowsTracker::switchToNextVirtualDesktop() 0099 { 0100 m_wm->switchToNextVirtualDesktop(); 0101 } 0102 0103 void WindowsTracker::switchToPreviousVirtualDesktop() 0104 { 0105 m_wm->switchToPreviousVirtualDesktop(); 0106 } 0107 0108 } 0109 }