Warning, /plasma/discover/libdiscover/backends/FlatpakBackend/qml/PermissionsList.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  *   SPDX-FileCopyrightText: 2022 Suhaas Joshi <joshiesuhaas0@gmail.com>
0003  *
0004  *   SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 pragma ComponentBehavior: Bound
0008 
0009 import QtQuick
0010 import QtQuick.Controls as QQC2
0011 import QtQuick.Layouts
0012 import org.kde.discover as Discover
0013 import org.kde.kcmutils as KCMUtils
0014 import org.kde.kirigami as Kirigami
0015 import org.kde.kirigami.delegates as KD
0016 
0017 ColumnLayout {
0018     id: root
0019 
0020     required property Discover.AbstractResource resource
0021 
0022     visible: list.model.rowCount() > 0
0023     spacing: 0
0024 
0025     Kirigami.Heading {
0026         Layout.fillWidth: true
0027         Layout.bottomMargin: Kirigami.Units.largeSpacing
0028         text: i18ndc("libdiscover", "%1 is the name of the application", "Permissions for %1", root.resource.name)
0029         level: 2
0030         type: Kirigami.Heading.Type.Primary
0031         wrapMode: Text.Wrap
0032     }
0033 
0034     Repeater {
0035         id: list
0036         model: root.resource.permissionsModel()
0037 
0038         delegate: QQC2.ItemDelegate {
0039             id: delegate
0040 
0041             required property var model
0042             required property string brief
0043             required property string description
0044 
0045             Layout.fillWidth: true
0046 
0047             text: brief
0048             icon.name: model.icon
0049 
0050             // so that it gets neither hover nor pressed appearance when it's not interactive
0051             hoverEnabled: root.resource.isInstalled
0052             down: root.resource.isInstalled ? undefined : false
0053 
0054             // ToolTip is intentionally omitted, as everything is wrapped and thus visible
0055 
0056             contentItem: KD.IconTitleSubtitle {
0057                 icon: icon.fromControlsIcon(delegate.icon)
0058                 title: delegate.text
0059                 subtitle: delegate.description
0060                 selected: delegate.highlighted || delegate.down
0061                 font: delegate.font
0062                 wrapMode: Text.Wrap
0063             }
0064 
0065             onClicked: {
0066                 if (root.resource.isInstalled) {
0067                     // TODO: Not only open KCM on the app's page, but also focus on relevant permission row
0068                     KCMUtils.KCMLauncher.openSystemSettings("kcm_flatpak", [root.resource.ref]);
0069                 }
0070             }
0071         }
0072     }
0073 
0074     QQC2.Button {
0075         Layout.alignment: Qt.AlignHCenter
0076         Layout.maximumWidth: parent.width
0077         Layout.topMargin: Kirigami.Units.largeSpacing
0078         visible: root.resource.isInstalled
0079         text: i18nd("libdiscover", "Configure permissions…")
0080         icon.name: "configure"
0081         onClicked: {
0082             KCMUtils.KCMLauncher.openSystemSettings("kcm_flatpak", [root.resource.ref]);
0083         }
0084     }
0085 }