Warning, /plasma/plasma-systemmonitor/src/table/BaseCellDelegate.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  * SPDX-FileCopyrightText: 2020 Arjen Hiemstra <ahiemstra@heimr.nl>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005  */
0006 
0007 import QtQuick
0008 import QtQuick.Controls
0009 import QtQuick.Layouts
0010 import QtQml.Models
0011 
0012 import org.kde.kirigami as Kirigami
0013 import org.kde.ksysguard.table as Table
0014 
0015 TreeViewDelegate
0016 {
0017     id: root
0018 
0019     readonly property bool rowHovered: root.TableView.view.hoveredRow == row
0020 
0021     readonly property var __selection: TableView.view.selectionModel
0022 
0023     text: model.display
0024 
0025     // Important: Don't remove this until QTBUG-84858 is resolved properly.
0026     Accessible.role: Accessible.Cell
0027 
0028     rightPadding: Kirigami.Units.smallSpacing
0029     topPadding: Kirigami.Units.smallSpacing
0030     bottomPadding: Kirigami.Units.smallSpacing
0031 
0032     background: Rectangle {
0033         color: (row % 2 == 0 || selected) ? Kirigami.Theme.backgroundColor : Kirigami.Theme.alternateBackgroundColor
0034 
0035         Rectangle {
0036             anchors.fill: parent
0037             Kirigami.Theme.inherit: false
0038             Kirigami.Theme.colorSet: Kirigami.Theme.Selection
0039             color: Kirigami.Theme.backgroundColor
0040             opacity: 0.3
0041             visible: root.rowHovered
0042         }
0043     }
0044 
0045     onHoveredChanged: {
0046         if (hovered) {
0047             root.TableView.view.hoveredRow = root.row
0048         }
0049     }
0050 
0051     hoverEnabled: true
0052 
0053     TapHandler {
0054         acceptedButtons: Qt.LeftButton | Qt.RightButton
0055         gesturePolicy: TapHandler.ReleaseWithinBounds
0056 
0057         onTapped: (eventPoint, button) => {
0058             var modelIndex = root.TableView.view.model.index(row, column);
0059 
0060             root.TableView.view.forceActiveFocus(Qt.ClickFocus)
0061 
0062             // latest clicks sets current index
0063             root.__selection.setCurrentIndex(modelIndex, ItemSelectionModel.Current | ItemSelectionModel.Rows)
0064 
0065             if (root.__selection.isSelected(modelIndex) && button == Qt.RightButton) {
0066                 root.TableView.view.contextMenuRequested(modelIndex, eventPoint.globalPressPosition)
0067                 return
0068             }
0069 
0070             if (point.modifiers & Qt.ShiftModifier) {
0071                 //TODO: Implement range selection
0072                 root.__selection.select(modelIndex, ItemSelectionModel.Toggle | ItemSelectionModel.Rows)
0073             } else if (point.modifiers & Qt.ControlModifier) {
0074                 root.__selection.select(modelIndex, ItemSelectionModel.Toggle | ItemSelectionModel.Rows)
0075             } else {
0076                 root.__selection.select(modelIndex, ItemSelectionModel.ClearAndSelect | ItemSelectionModel.Rows)
0077             }
0078 
0079             if (button == Qt.RightButton) {
0080                 root.TableView.view.contextMenuRequested(modelIndex, eventPoint.globalPressPosition)
0081             }
0082         }
0083     }
0084 }