Warning, /plasma/print-manager/src/kcm/ui/Drivers.qml is written in an unsupported language. File is not indexed.
0001 /** 0002 SPDX-FileCopyrightText: 2023 Mike Noe <noeerover@gmail.com> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 import QtQuick 0007 import QtQuick.Layouts 0008 import QtQuick.Controls as QQC2 0009 import org.kde.plasma.components as PComp 0010 import org.kde.kirigami as Kirigami 0011 import org.kde.plasma.extras as PlasmaExtras 0012 0013 ColumnLayout { 0014 id: root 0015 spacing: Kirigami.Units.largeSpacing 0016 0017 Layout.fillWidth: true 0018 Layout.fillHeight: true 0019 0020 readonly property alias busy: kcmConn.loading 0021 0022 signal selected(var driver) 0023 0024 function load(devid, makeModel, uri) { 0025 kcmConn.loading = true 0026 kcm.clearRecommendedDrivers() 0027 kcm.getRecommendedDrivers(devid, makeModel, uri) 0028 } 0029 0030 Component.onDestruction: kcm.clearRecommendedDrivers() 0031 0032 Connections { 0033 id: kcmConn 0034 target: kcm 0035 0036 property bool loading: false 0037 0038 function onRecommendedDriversLoaded() { 0039 kcmConn.loading = false 0040 let found = kcm.recommendedDrivers.findIndex(d => {return d.match === "exact"}) 0041 if (found >= 0) { 0042 recmlist.itemAtIndex(found).clicked() 0043 } 0044 } 0045 } 0046 0047 QQC2.Button { 0048 id: recmAction 0049 Layout.alignment: Qt.AlignHCenter 0050 enabled: recmlist.count > 0 0051 icon.name: "dialog-ok-symbolic" 0052 text: i18nc("@action:button", "Select Recommended Driver") 0053 onClicked: { 0054 root.selected(kcm.recommendedDrivers[recmlist.currentIndex]) 0055 } 0056 0057 QQC2.ToolTip { 0058 text: i18nc("@info:tooltip", "Recommended drivers are based on printer make/model and connection type") 0059 } 0060 } 0061 0062 QQC2.ScrollView { 0063 Layout.alignment: Qt.AlignHCenter 0064 Layout.fillWidth: true 0065 Layout.fillHeight: true 0066 0067 contentItem: ListView { 0068 id: recmlist 0069 highlight: PlasmaExtras.Highlight {} 0070 highlightMoveDuration: 0 0071 highlightResizeDuration: 0 0072 0073 PComp.BusyIndicator { 0074 running: kcmConn.loading 0075 anchors.centerIn: parent 0076 implicitWidth: Kirigami.Units.gridUnit * 6 0077 implicitHeight: Kirigami.Units.gridUnit * 6 0078 } 0079 0080 activeFocusOnTab: true 0081 keyNavigationWraps: true 0082 0083 KeyNavigation.backtab: root.parent 0084 Keys.onUpPressed: event => { 0085 if (currentIndex === 0) { 0086 currentIndex = -1; 0087 } 0088 event.accepted = false; 0089 } 0090 0091 model: kcm.recommendedDrivers 0092 0093 delegate: Kirigami.SubtitleDelegate { 0094 width: ListView.view.width 0095 text: modelData["ppd-name"] 0096 subtitle: modelData.match 0097 icon.name: modelData.match.startsWith("exact") 0098 ? "favorites-symbolic" 0099 : "dialog-question-symbolic" 0100 0101 onClicked: { 0102 ListView.view.currentIndex = index 0103 } 0104 } 0105 } 0106 } 0107 0108 }