File indexing completed on 2024-04-14 05:24:41

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 }