From d04c952ae201bbf224105bd9417e6e99dd2a5130 Mon Sep 17 00:00:00 2001 From: qiqi49 Date: Fri, 10 May 2024 17:50:12 +0800 Subject: [PATCH] =?UTF-8?q?feat(taskManager):=E4=BC=98=E5=8C=96=E9=A2=84?= =?UTF-8?q?=E8=A7=88=E5=9B=BEmodel,=E5=BD=93=E6=98=BE=E7=A4=BA=E6=97=B6?= =?UTF-8?q?=E9=81=BF=E5=85=8D=E5=9B=A0=E6=95=B0=E9=87=8F=E6=94=B9=E5=8F=98?= =?UTF-8?q?=E5=BC=95=E8=B5=B7=E7=9A=84=E7=AA=97=E5=8F=A3=E9=97=AA=E7=83=81?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/qml/TaskManagerView.qml | 32 +++++++++++++++++++ .../ukui-task-manager/qml/ThumbnailWindow.qml | 16 +++++----- 2 files changed, 40 insertions(+), 8 deletions(-) diff --git a/widgets/ukui-task-manager/plugin/qml/TaskManagerView.qml b/widgets/ukui-task-manager/plugin/qml/TaskManagerView.qml index 810a6a7..5922f00 100644 --- a/widgets/ukui-task-manager/plugin/qml/TaskManagerView.qml +++ b/widgets/ukui-task-manager/plugin/qml/TaskManagerView.qml @@ -137,6 +137,38 @@ TaskManager { taskManager.state = "aboutToHideThumbanil"; } } + + // 更新预览图model数据 + onCurrentWinIdListChanged: updateThumbnailModel() + property var modelList: [] + ListModel { + id: thumbnailModel + } + function updateThumbnailModel() { + // 这里不能直接用=(js中表示引用),需要浅拷贝 + var listFromModel = modelList.slice(0); + var listFromCurrent = currentWinIdList.slice(0); + var indexOfRemoveList = []; + + for (var i = 0; i < listFromModel.length; i++) { + if (listFromCurrent.includes(listFromModel[i])) { + listFromCurrent.splice(listFromCurrent.indexOf(listFromModel[i]), 1); + } else { + indexOfRemoveList.push(i); + } + } + for (var i = indexOfRemoveList.length -1; i > -1; i--) { + listFromModel.splice(indexOfRemoveList[i], 1); + thumbnailModel.remove(indexOfRemoveList[i]); + } + + for (var i = 0; i < listFromCurrent.length; i ++) { + listFromModel.push(listFromCurrent[i]); + thumbnailModel.append({"winId": listFromCurrent[i]}); + } + + modelList = listFromModel; + } } } } diff --git a/widgets/ukui-task-manager/qml/ThumbnailWindow.qml b/widgets/ukui-task-manager/qml/ThumbnailWindow.qml index 11f9989..5489536 100644 --- a/widgets/ukui-task-manager/qml/ThumbnailWindow.qml +++ b/widgets/ukui-task-manager/qml/ThumbnailWindow.qml @@ -188,7 +188,7 @@ MouseArea { baseMouseArea.determineListViewSize() } - model: currentWinIdList + model: thumbnailModel delegate: MouseArea { id: itemMouseArea width: childrenRect.width @@ -205,7 +205,7 @@ MouseArea { } function activateWindowView() { - var winIds = [modelData]; + var winIds = [model.winId]; if (baseMouseArea.menuVisible || containsMouse) { activeTimer.interval = 500; activeTimer.activeWinIds = winIds; @@ -220,20 +220,20 @@ MouseArea { onClicked: { if (mouse.button === Qt.RightButton) { - var actions = UkuiTaskManager.TaskManager.windowActions(modelData); + var actions = UkuiTaskManager.TaskManager.windowActions(model.winId); baseMouseArea.menuVisible = taskManager.viewModel.openMenu(true, actions, listView); } else { - UkuiTaskManager.TaskManager.activateWindow(modelData); + UkuiTaskManager.TaskManager.activateWindow(model.winId); } } Loader { WindowThumbnailMprisModel { id: mprisModel - winID: modelData + winID: model.winId } - property string modelData: model.modelData - property var title: windowTitles ? windowTitles[modelData] : "" - property var icon: windowIcons ? windowIcons[modelData] : "" + property string modelData: model.winId + property var title: windowTitles ? windowTitles[model.winId] : "" + property var icon: windowIcons ? windowIcons[model.winId] : "" property var windowThumbnailMprisModel: mprisModel property bool mouseAreaContainsMouse: itemMouseArea.containsMouse property bool mouseAreaContainsPress: itemMouseArea.containsPress