Warning, /plasma/discover/discover/qml/AddonsView.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  *   SPDX-FileCopyrightText: 2012-2023 Aleix Pol Gonzalez <aleixpol@blue-systems.com>
0003  *   SPDX-FileCopyrightText: 2020-2022 Nate Graham <nate@kde.org>
0004  *   SPDX-FileCopyrightText: 2023-2024 ivan tkachenko <me@ratijas.tk>
0005  *
0006  *   SPDX-License-Identifier: LGPL-2.0-or-later
0007  */
0008 
0009 pragma ComponentBehavior: Bound
0010 
0011 import QtQuick
0012 import QtQuick.Controls as QQC2
0013 import QtQuick.Layouts
0014 import org.kde.discover as Discover
0015 import org.kde.kirigami as Kirigami
0016 import org.kde.kirigami.delegates as KD
0017 
0018 Kirigami.OverlaySheet {
0019     id: root
0020 
0021     property alias application: addonsModel.application
0022     property bool isInstalling: false
0023 
0024     readonly property alias addonsCount: listview.count
0025     readonly property bool containsAddons: listview.count > 0 || isExtended
0026     readonly property bool isExtended: Discover.ResourcesModel.isExtended(application.appstreamId)
0027 
0028     title: i18n("Addons for %1", application.name)
0029 
0030     onOpened: {
0031         listview.forceActiveFocus(Qt.PopupFocusReason);
0032     }
0033 
0034     ListView {
0035         id: listview
0036 
0037         implicitWidth: Kirigami.Units.gridUnit * 25
0038 
0039         visible: root.containsAddons
0040         enabled: !root.isInstalling
0041 
0042         activeFocusOnTab: true
0043         keyNavigationEnabled: true
0044         keyNavigationWraps: false
0045 
0046         model: Discover.ApplicationAddonsModel {
0047             id: addonsModel
0048         }
0049 
0050         delegate: KD.CheckSubtitleDelegate {
0051             required property int index
0052             required property var model
0053 
0054             width: ListView.view.width
0055 
0056             enabled: !root.isInstalling
0057 
0058             icon.width: 0
0059             text: model.display
0060             subtitle: model.toolTip
0061 
0062             checked: model.checked
0063             highlighted: ListView.isCurrentItem
0064 
0065             onToggled: {
0066                 addonsModel.changeState(model.packageName, checked);
0067                 ListView.view.currentIndex = index;
0068             }
0069         }
0070     }
0071 
0072     footer: RowLayout {
0073         id: footer
0074 
0075         spacing: Kirigami.Units.smallSpacing
0076 
0077         readonly property bool active: addonsModel.hasChanges && !root.isInstalling
0078 
0079         QQC2.Button {
0080             text: i18n("Moreā€¦")
0081             visible: root.application.appstreamId.length > 0 && root.isExtended
0082             onClicked: Navigation.openExtends(root.application.appstreamId, root.application.name)
0083         }
0084 
0085         Item { Layout.fillWidth: true }
0086 
0087         QQC2.Button {
0088             icon.name: "dialog-ok"
0089             text: i18n("Apply Changes")
0090             onClicked: addonsModel.applyChanges()
0091 
0092             enabled: footer.active
0093         }
0094 
0095         QQC2.Button {
0096             icon.name: "document-revert"
0097             text: i18n("Reset")
0098             onClicked: addonsModel.discardChanges()
0099 
0100             enabled: footer.active
0101         }
0102     }
0103 }