2023-03-19 01:54:41 +00:00
|
|
|
// SPDX-FileCopyrightText: 2023 Devin Lin <devin@kde.org>
|
|
|
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
|
|
2023-03-19 01:48:49 +00:00
|
|
|
import QtQuick
|
|
|
|
|
|
|
|
|
|
import org.kde.plasma.core as PlasmaCore
|
|
|
|
|
import org.kde.taskmanager as TaskManager
|
2023-04-01 05:20:56 +00:00
|
|
|
import org.kde.plasma.private.mobileshell.windowplugin as WindowPlugin
|
2023-08-29 14:30:12 +00:00
|
|
|
import org.kde.kitemmodels as KItemModels
|
2023-03-19 01:48:49 +00:00
|
|
|
|
|
|
|
|
// Helper component that uses Plasma's tasks model to provide whether a maximized window is showing on the current screen.
|
|
|
|
|
QtObject {
|
2024-06-23 22:47:24 +00:00
|
|
|
// 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
|
|
|
|
|
|
2024-11-25 17:30:47 +00:00
|
|
|
property bool isCurrentWindowFullscreen: __internal.count > 0 && visibleWindowsModel.currentFullscreen && !WindowPlugin.WindowUtil.isShowingDesktop
|
|
|
|
|
|
2023-04-01 05:20:56 +00:00
|
|
|
readonly property bool showingWindow: __internal.count > 0 && !WindowPlugin.WindowUtil.isShowingDesktop
|
2024-07-13 16:30:07 +00:00
|
|
|
readonly property int windowCount: __internal.count
|
2023-03-19 01:48:49 +00:00
|
|
|
|
2023-08-29 14:30:12 +00:00
|
|
|
property var __internal: KItemModels.KSortFilterProxyModel {
|
2024-11-25 17:30:47 +00:00
|
|
|
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 {
|
2023-03-19 01:48:49 +00:00
|
|
|
id: tasksModel
|
|
|
|
|
filterByVirtualDesktop: true
|
|
|
|
|
filterByActivity: true
|
2024-11-25 17:30:47 +00:00
|
|
|
filterMinimized: true
|
2023-03-19 01:48:49 +00:00
|
|
|
filterByScreen: true
|
|
|
|
|
filterHidden: true
|
|
|
|
|
|
|
|
|
|
virtualDesktop: virtualDesktopInfo.currentDesktop
|
|
|
|
|
activity: activityInfo.currentActivity
|
|
|
|
|
|
2024-11-25 17:30:47 +00:00
|
|
|
sortMode: TaskManager.TasksModel.SortLastActivated
|
|
|
|
|
|
2023-03-19 01:48:49 +00:00
|
|
|
groupMode: TaskManager.TasksModel.GroupDisabled
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
property var vdi: TaskManager.VirtualDesktopInfo {
|
|
|
|
|
id: virtualDesktopInfo
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
property var ai: TaskManager.ActivityInfo {
|
|
|
|
|
id: activityInfo
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|