Warning, /plasma/plasma-workspace/applets/systemtray/package/contents/ui/HiddenItemsView.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2016 Marco Martin <mart@kde.org>
0003     SPDX-FileCopyrightText: 2020 Konrad Materka <materka@gmail.com>
0004     SPDX-FileCopyrightText: 2020 Nate Graham <nate@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.0-or-later
0007 */
0008 
0009 import QtQuick 2.15
0010 import QtQuick.Layouts 1.1
0011 import org.kde.plasma.core as PlasmaCore
0012 import org.kde.plasma.components 3.0 as PlasmaComponents3
0013 import org.kde.plasma.plasmoid 2.0
0014 import org.kde.kitemmodels 1.0 as KItemModels
0015 
0016 import "items"
0017 import org.kde.plasma.extras 2.0 as PlasmaExtras
0018 
0019 PlasmaComponents3.ScrollView {
0020     id: hiddenTasksView
0021 
0022     property alias layout: hiddenTasks
0023 
0024     hoverEnabled: true
0025     onHoveredChanged: if (!hovered) {
0026         hiddenTasks.currentIndex = -1;
0027     }
0028     background: null
0029 
0030     GridView {
0031         id: hiddenTasks
0032 
0033         readonly property int minimumRows: 4
0034         readonly property int minimumColumns: 4
0035 
0036         cellWidth: Math.floor(Math.min(hiddenTasksView.availableWidth, popup.Layout.minimumWidth) / minimumRows)
0037         cellHeight: Math.floor(popup.Layout.minimumHeight / minimumColumns)
0038 
0039         currentIndex: -1
0040         highlight: PlasmaExtras.Highlight {}
0041         highlightMoveDuration: 0
0042 
0043         pixelAligned: true
0044 
0045         readonly property int itemCount: model.count
0046 
0047         //! This is used in order to identify the minimum required label height in order for all
0048         //! labels to be aligned properly at all items. At the same time this approach does not
0049         //! enforce labels with 3 lines at all cases so translations that require only one or two
0050         //! lines will always look consistent with no too much padding
0051         readonly property int minLabelHeight: {
0052             var minHeight = 0;
0053 
0054             for(let i in contentItem.children){
0055                 var gridItem = contentItem.children[i];
0056                 if (!gridItem || !gridItem.hasOwnProperty("item") || !gridItem.item.hasOwnProperty("labelHeight")) {
0057                     continue;
0058                 }
0059 
0060                 if (gridItem.item.labelHeight > minHeight) {
0061                     minHeight = gridItem.item.labelHeight;
0062                 }
0063             }
0064 
0065             return minHeight;
0066         }
0067 
0068         model: KItemModels.KSortFilterProxyModel {
0069             sourceModel: Plasmoid.systemTrayModel
0070             filterRoleName: "effectiveStatus"
0071             filterRowCallback: (sourceRow, sourceParent) => {
0072                 let value = sourceModel.data(sourceModel.index(sourceRow, 0, sourceParent), filterRole);
0073                 return value === PlasmaCore.Types.PassiveStatus
0074             }
0075         }
0076         delegate: ItemLoader {
0077             width: hiddenTasks.cellWidth
0078             height: hiddenTasks.cellHeight
0079             minLabelHeight: hiddenTasks.minLabelHeight
0080         }
0081 
0082         keyNavigationEnabled: true
0083         activeFocusOnTab: true
0084 
0085         KeyNavigation.up: hiddenTasksView.KeyNavigation.up
0086 
0087         onActiveFocusChanged: {
0088             if (activeFocus && currentIndex === -1) {
0089                 currentIndex = 0
0090             } else if (!activeFocus && currentIndex >= 0) {
0091                 currentIndex = -1
0092             }
0093         }
0094     }
0095 }