Warning, /frameworks/knewstuff/src/qtquick/qml/private/entrygriddelegates/ThumbDelegate.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2019 Dan Leinir Turthra Jensen <admin@leinir.dk>
0003
0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006
0007 import QtQuick 2.11
0008 import QtQuick.Controls 2.11 as QtControls
0009 import QtQuick.Layouts 1.11 as QtLayouts
0010 import Qt5Compat.GraphicalEffects 6.0 as QtEffects
0011
0012 import org.kde.kcmutils as KCM
0013 import org.kde.kirigami 2.7 as Kirigami
0014
0015 import org.kde.newstuff as NewStuff
0016
0017 import ".." as Private
0018
0019 KCM.GridDelegate {
0020 id: component
0021 property string useLabel
0022 property string uninstallLabel
0023 text: model.name
0024 property var entry: model.entry
0025 actions: [
0026 Kirigami.Action {
0027 text: component.useLabel
0028 icon.name: "dialog-ok-apply"
0029 onTriggered: { newStuffModel.engine.adoptEntry(entry); }
0030 enabled: (entry.status == NewStuff.Entry.Installed || entry.status == NewStuff.Entry.Updateable) && newStuffEngine.hasAdoptionCommand
0031 visible: enabled
0032 },
0033 Kirigami.Action {
0034 text: model.downloadLinks.length === 1 ? i18ndc("knewstuff6", "Request installation of this item, available when there is exactly one downloadable item", "Install") : i18ndc("knewstuff6", "Show installation options, where there is more than one downloadable item", "Install…");
0035 icon.name: "install"
0036 onTriggered: {
0037 if (model.downloadLinks.length === 1) {
0038 newStuffModel.engine.install(entry, NewStuff.Entry.FirstLinkId);
0039 } else {
0040 downloadItemsSheet.downloadLinks = model.downloadLinks;
0041 downloadItemsSheet.entry = entry;
0042 downloadItemsSheet.open();
0043 }
0044 }
0045 enabled: entry.status == NewStuff.Entry.Downloadable || entry.status == NewStuff.Entry.Deleted
0046 visible: enabled
0047 },
0048 Kirigami.Action {
0049 text: i18ndc("knewstuff6", "Request updating of this item", "Update");
0050 icon.name: "update-none"
0051 onTriggered: { newStuffModel.engine.install(entry, NewStuff.ItemsModel.AutoDetectLinkId); }
0052 enabled: entry.status == NewStuff.Entry.Updateable
0053 visible: enabled
0054 },
0055 Kirigami.Action {
0056 text: component.uninstallLabel
0057 icon.name: "edit-delete"
0058 onTriggered: { newStuffModel.engine.uninstall(entry); }
0059 enabled: entry.status == NewStuff.Entry.Installed || entry.status == NewStuff.Entry.Updateable
0060 visible: enabled
0061 }
0062 ]
0063 thumbnailAvailable: model.previewsSmall.length > 0
0064 thumbnail: Image {
0065 anchors {
0066 fill: parent;
0067 margins: Kirigami.Units.smallSpacing;
0068 }
0069 asynchronous: true;
0070 fillMode: Image.PreserveAspectFit;
0071 source: thumbnailAvailable ? model.previewsSmall[0] : "";
0072 Kirigami.Icon {
0073 id: updateAvailableBadge;
0074 opacity: (entry.status == NewStuff.Entry.Updateable) ? 1 : 0;
0075 Behavior on opacity { NumberAnimation { duration: Kirigami.Units.shortDuration; } }
0076 anchors {
0077 top: parent.top;
0078 right: parent.right;
0079 margins: -Kirigami.Units.smallSpacing;
0080 }
0081 height: Kirigami.Units.iconSizes.smallMedium;
0082 width: height;
0083 source: "package-installed-outdated";
0084 }
0085 Kirigami.Icon {
0086 id: installedBadge;
0087 opacity: (entry.status == NewStuff.Entry.Installed) ? 1 : 0;
0088 Behavior on opacity { NumberAnimation { duration: Kirigami.Units.shortDuration; } }
0089 anchors {
0090 top: parent.top;
0091 right: parent.right;
0092 margins: -Kirigami.Units.smallSpacing;
0093 }
0094 height: Kirigami.Units.iconSizes.smallMedium;
0095 width: height;
0096 source: "package-installed-updated";
0097 }
0098 FeedbackOverlay {
0099 anchors.fill: parent
0100 newStuffModel: component.GridView.view.model
0101 }
0102 MouseArea {
0103 anchors.fill: parent;
0104 cursorShape: Qt.PointingHandCursor;
0105 onClicked: pageStack.push(detailsPage, {
0106 newStuffModel: component.GridView.view.model,
0107 entry: entry,
0108 });
0109
0110 }
0111 }
0112 }