Warning, /multimedia/haruna/src/qml/Haruna/Components/SelectActionPopup.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * SPDX-FileCopyrightText: 2020 George Florea Bănuș <georgefb899@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 import QtQuick 0008 import QtQuick.Controls 0009 import QtQuick.Layouts 0010 import org.kde.kirigami as Kirigami 0011 0012 import org.kde.haruna 0013 0014 Popup { 0015 id: root 0016 0017 property string title: "" 0018 property string subtitle: "" 0019 property int buttonIndex: -1 0020 0021 signal actionSelected(string actionName) 0022 0023 implicitHeight: parent.height * 0.9 0024 implicitWidth: parent.width * 0.9 0025 modal: true 0026 anchors.centerIn: parent 0027 focus: true 0028 0029 onOpened: { 0030 actionsListView.positionViewAtBeginning() 0031 filterActionsField.selectAll() 0032 filterActionsField.focus = true 0033 } 0034 0035 onActionSelected: close() 0036 0037 ColumnLayout { 0038 anchors.fill: parent 0039 0040 Kirigami.Heading { 0041 text: root.title 0042 visible: text !== "" 0043 } 0044 0045 Label { 0046 text: root.subtitle 0047 visible: text !== "" 0048 Layout.fillWidth: true 0049 Layout.alignment: Qt.AlignTop 0050 } 0051 0052 Kirigami.SearchField { 0053 id: filterActionsField 0054 0055 focus: true 0056 onAccepted: selectActionModel.setNameFilter(text) 0057 Layout.fillWidth: true 0058 Layout.alignment: Qt.AlignTop 0059 KeyNavigation.up: actionsListView 0060 KeyNavigation.down: actionsListView 0061 KeyNavigation.tab: actionsListView 0062 Keys.onReturnPressed: { 0063 actionSelected(actionsListView.currentItem.actionName) 0064 } 0065 Keys.onEnterPressed: { 0066 actionSelected(actionsListView.currentItem.actionName) 0067 } 0068 } 0069 0070 ScrollView { 0071 Layout.fillWidth: true 0072 Layout.fillHeight: true 0073 Layout.alignment: Qt.AlignTop 0074 0075 ListView { 0076 id: actionsListView 0077 0078 model: ProxyActionsModel { 0079 id: selectActionModel 0080 0081 sourceModel: actionsModel 0082 } 0083 0084 spacing: 1 0085 clip: true 0086 delegate: ItemDelegate { 0087 property string actionName: model.name 0088 0089 width: actionsListView.width 0090 0091 contentItem: RowLayout { 0092 Label { 0093 text: model.text 0094 0095 Layout.fillWidth: true 0096 } 0097 0098 Label { 0099 text: model.shortcut 0100 opacity: 0.7 0101 } 0102 } 0103 onClicked: actionSelected(model.name) 0104 Keys.onEnterPressed: actionSelected(model.name) 0105 Keys.onReturnPressed: actionSelected(model.name) 0106 } 0107 0108 KeyNavigation.up: filterActionsField 0109 KeyNavigation.down: filterActionsField 0110 Keys.onPressed: { 0111 if (event.key === Qt.Key_End) { 0112 actionsListView.currentIndex = actionsListView.count - 1 0113 actionsListView.positionViewAtEnd() 0114 } 0115 if (event.key === Qt.Key_Home) { 0116 actionsListView.currentIndex = 0 0117 actionsListView.positionViewAtBeginning() 0118 } 0119 } 0120 } 0121 } 0122 } 0123 }