1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
// SPDX-FileCopyrightText: 2023 Devin Lin <devin@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
import QtQuick
import org.kde.plasma.core as PlasmaCore
import org.kde.taskmanager as TaskManager
import org.kde.plasma.private.mobileshell.windowplugin as WindowPlugin
import org.kde.kitemmodels as KItemModels
// Helper component that uses Plasma's tasks model to provide whether a maximized window is showing on the current screen.
QtObject {
// Setting this property is necessary to filter by screen, otherwise the model will use all screens.
// Set it to Plasmoid.containment.screenGeometry in a plasmoid to accomplish this.
property alias screenGeometry: tasksModel.screenGeometry
property bool isCurrentWindowFullscreen: __internal.count > 0 && visibleWindowsModel.currentFullscreen && !WindowPlugin.WindowUtil.isShowingDesktop
readonly property bool showingWindow: __internal.count > 0 && !WindowPlugin.WindowUtil.isShowingDesktop
readonly property int windowCount: __internal.count
property var __internal: KItemModels.KSortFilterProxyModel {
id: visibleWindowsModel
sourceModel: taskModel
filterRowCallback: (sourceRow, sourceParent) => {
const task = sourceModel.index(sourceRow, 0, sourceParent);
let isFullScreen = sourceModel.data(task, TaskManager.AbstractTasksModel.IsFullScreen);
let isMaximized = sourceModel.data(task, TaskManager.AbstractTasksModel.IsMaximized);
if (sourceRow == 0) {
visibleWindowsModel.currentFullscreen = isFullScreen;
}
return isFullScreen || isMaximized;
}
property bool currentFullscreen: false
property var taskModel: TaskManager.TasksModel {
id: tasksModel
filterByVirtualDesktop: true
filterByActivity: true
filterMinimized: true
filterByScreen: true
filterHidden: true
virtualDesktop: virtualDesktopInfo.currentDesktop
activity: activityInfo.currentActivity
sortMode: TaskManager.TasksModel.SortLastActivated
groupMode: TaskManager.TasksModel.GroupDisabled
}
property var vdi: TaskManager.VirtualDesktopInfo {
id: virtualDesktopInfo
}
property var ai: TaskManager.ActivityInfo {
id: activityInfo
}
}
}
|