Plasma-workspace

fullscreentracker.cpp
1/*
2 SPDX-FileCopyrightText: 2024 Kristen McWilliam <kmcwilliampublic@gmail.com>
3
4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5*/
6
7#include "abstracttasksmodel.h"
8#include "fullscreentracker_p.h"
9
10using namespace NotificationManager;
11
12FullscreenTracker::FullscreenTracker(QObject *parent)
13 : TaskManager::TasksModel(parent)
14{
15 setFilterMinimized(true);
16 setFilterHidden(true);
17
18 checkFullscreenFocused();
19
20 connect(this, &TaskManager::TasksModel::activeTaskChanged, this, &FullscreenTracker::checkFullscreenFocused);
21 connect(this, &TaskManager::TasksModel::dataChanged, this, &FullscreenTracker::checkFullscreenFocused);
22}
23
24FullscreenTracker::~FullscreenTracker() = default;
25
26FullscreenTracker::Ptr FullscreenTracker::createTracker()
27{
28 static std::weak_ptr<FullscreenTracker> s_instance;
29 if (s_instance.expired()) {
30 std::shared_ptr<FullscreenTracker> ptr(new FullscreenTracker(nullptr));
31 s_instance = ptr;
32 return ptr;
33 }
34 return s_instance.lock();
35}
36
37bool FullscreenTracker::fullscreenFocused() const
38{
39 return m_fullscreenFocused;
40}
41
42void FullscreenTracker::setFullscreenFocused(bool focused)
43{
44 if (m_fullscreenFocused != focused) {
45 m_fullscreenFocused = focused;
46 Q_EMIT fullscreenFocusedChanged(focused);
47 }
48}
49
50void FullscreenTracker::checkFullscreenFocused()
51{
52 QModelIndex activeTaskIndex = activeTask();
53 if (!activeTaskIndex.isValid()) {
54 setFullscreenFocused(false);
55 return;
56 }
57
58 bool isFullscreen = activeTaskIndex.data(TaskManager::AbstractTasksModel::IsFullScreen).toBool();
59
60 setFullscreenFocused(isFullscreen);
61}
void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList< int > &roles)
QVariant data(int role) const const
bool isValid() const const
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)
bool toBool() const const
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Apr 25 2025 11:55:44 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.