Warning, /plasma/plasma-desktop/kcms/runners/plasmasearch/ui/main.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2022 Alexander Lohnau <alexander.lohnau@gmx.de>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 import QtQuick 2.15
0008 import QtQuick.Controls 2.15 as QQC2
0009 import QtQuick.Layouts 1.1
0010 
0011 import org.kde.config
0012 import org.kde.kirigami as Kirigami
0013 import org.kde.kcmutils as KCMUtils
0014 import org.kde.newstuff 1.91 as NewStuff
0015 
0016 KCMUtils.ScrollViewKCM {
0017     id: root
0018 
0019     implicitWidth: Kirigami.Units.gridUnit * 32
0020     implicitHeight: Kirigami.Units.gridUnit * 18
0021 
0022     actions: [
0023         Kirigami.Action {
0024             icon.name: "configure"
0025             text: i18n("Configure KRunner…")
0026             onTriggered: kcm.showKRunnerKCM()
0027         },
0028         NewStuff.Action {
0029             text: i18n("Get New Plugins…")
0030             visible: KAuthorized.authorize(KAuthorized.GHNS)
0031             configFile: "krunner.knsrc"
0032             onEntryEvent: (entry, event) => {
0033                 if (event === NewStuff.Engine.StatusChangedEvent) {
0034                     kcm.reloadPlugin()
0035                 }
0036             }
0037         }
0038     ]
0039 
0040     header: ColumnLayout {
0041         spacing: Kirigami.Units.smallSpacing
0042 
0043         QQC2.Label {
0044             text: i18n("Enable or disable plugins (used in KRunner, Application Launcher, and the Overview effect). Mark plugins as favorites and arrange them in order you want to see them.")
0045             textFormat: Text.PlainText
0046             wrapMode: Text.WordWrap
0047             Layout.fillWidth: true
0048         }
0049 
0050         Kirigami.SearchField {
0051             id: searchField
0052             Layout.fillWidth: true
0053         }
0054     }
0055 
0056     view: KCMUtils.PluginSelector {
0057         id: pluginSelector
0058         sourceModel: kcm.model
0059         query: searchField.text
0060         delegate: Item { // Needed to avoid visual glitches in ListItemDragHandle
0061             id: delegateItem
0062             width: pluginSelector.width
0063             implicitHeight: pluginDelegate.implicitHeight
0064             // PluginDelegate must either be a direct delegate, or have a model explicitly set
0065             // "model: model" would just be a binding loop, so we store the model in a property of the
0066             // direct delegate Item and access it from PluginDelegate
0067             property var modelObject: model
0068             property bool isFavorite: model.category === kcm.favoriteCategory
0069             KCMUtils.PluginDelegate {
0070                 id: pluginDelegate
0071                 model: delegateItem.modelObject
0072                 width: pluginSelector.width
0073                 property var drag: Kirigami.ListItemDragHandle {
0074                     property int dropNewIndex
0075                     listItem: pluginDelegate
0076                     listView: pluginSelector
0077                         // Moving the rows now would cause a model reset and we could not drag an entry multiple rows up/down
0078                     onMoveRequested: (oldIndex, newIndex) => (dropNewIndex = newIndex)
0079                     onDropped: () => kcm.movePlugin(model.metaData, dropNewIndex)
0080                 }
0081                 Component.onCompleted: {
0082                     if (isFavorite) {
0083                         leading = drag
0084                     }
0085                 }
0086                 additionalActions: [
0087                     Kirigami.Action {
0088                         displayHint: Kirigami.DisplayHint.IconOnly
0089                         text: isFavorite ? i18n("Remove from favorites") : i18n("Add to favorites")
0090                         icon.name: isFavorite ? "starred-symbolic": "non-starred-symbolic"
0091                         onTriggered: isFavorite ? kcm.removeFromFavorites(model.metaData) : kcm.addToFavorites(model.metaData)
0092                     }
0093                 ]
0094                 onConfigTriggered: kcm.showKCM(model.config, [], model.metaData)
0095                 highlighted: false
0096             }
0097         }
0098     }
0099 }