9 import QtQuick.Layouts 1.11 as QtLayouts
17 height: Math.max(
Kirigami.Units.iconSizes.huge +
Kirigami.Units.smallSpacing * 2, nameText.height + descriptionText.height +
Kirigami.Units.smallSpacing * 5);
18 property QtObject listModel;
22 text:
i18ndc(
"knewstuff5",
"Request installation of this item",
"Install");
24 onTriggered: { listModel.installItem(model.index, NewStuff.ItemsModel.FirstLinkId); }
25 enabled: model.status == NewStuff.ItemsModel.DownloadableStatus || model.status == NewStuff.ItemsModel.DeletedStatus;
29 text:
i18ndc(
"knewstuff5",
"Request updating of this item",
"Update");
31 onTriggered: { listModel.updateItem(model.index); }
32 enabled: model.status == NewStuff.ItemsModel.UpdateableStatus;
36 text:
i18ndc(
"knewstuff5",
"Request uninstallation of this item",
"Uninstall");
37 iconName:
"list-remove" 38 onTriggered: { listModel.uninstallItem(model.index); }
39 enabled: model.status == NewStuff.ItemsModel.InstalledStatus || model.status == NewStuff.ItemsModel.UpdateableStatus
46 QtLayouts.Layout.preferredHeight: listItem.height -
Kirigami.Units.smallSpacing * 2;
47 QtLayouts.Layout.minimumWidth:
Kirigami.Units.iconSizes.huge;
48 QtLayouts.Layout.maximumWidth:
Kirigami.Units.iconSizes.huge;
53 margins:
Kirigami.Units.smallSpacing;
54 leftMargin: -
Kirigami.Units.smallSpacing;
57 fillMode: Image.PreserveAspectFit;
58 source: model.previewsSmall.length > 0 ? model.previewsSmall[0] :
"";
60 id: updateAvailableBadge;
61 opacity: (model.status == NewStuff.ItemsModel.UpdateableStatus) ? 1 : 0;
62 Behavior on opacity { NumberAnimation { duration:
Kirigami.Units.shortDuration; } }
64 bottom: parent.bottom;
66 margins: -
Kirigami.Units.smallSpacing;
68 height:
Kirigami.Units.iconSizes.smallMedium;
70 source:
"vcs-update-required";
74 opacity: (model.status == NewStuff.ItemsModel.InstalledStatus) ? 1 : 0;
75 Behavior on opacity { NumberAnimation { duration:
Kirigami.Units.shortDuration; } }
77 bottom: parent.bottom;
79 margins: -
Kirigami.Units.smallSpacing;
81 height:
Kirigami.Units.iconSizes.smallMedium;
88 opacity: installIndicator.opacity > 0 ? 0.7 : 0
89 Behavior on opacity { NumberAnimation { duration:
Kirigami.Units.shortDuration; } }
92 QtControls.BusyIndicator {
94 anchors.centerIn: parent;
95 opacity: (model.status == NewStuff.ItemsModel.InstallingStatus || model.status == NewStuff.ItemsModel.UpdatingStatus) ? 1 : 0;
96 Behavior on opacity { NumberAnimation { duration:
Kirigami.Units.shortDuration; } }
100 horizontalCenter: parent.horizontalCenter;
101 bottom: parent.bottom;
102 margins:
Kirigami.Units.smallSpacing;
104 text: (model.status == NewStuff.ItemsModel.InstallingStatus) ?
"Installing" : ((model.status == NewStuff.ItemsModel.UpdatingStatus) ?
"Updating" :
"");
109 QtLayouts.ColumnLayout {
110 QtLayouts.Layout.fillWidth:
true 111 QtLayouts.Layout.fillHeight:
true 114 QtLayouts.Layout.fillWidth:
true 117 opacity: 1 - installIndicator.opacity
121 QtLayouts.Layout.fillWidth:
true 122 text: model.summary.split(
"\n")[0];
123 elide: Text.ElideRight
126 opacity: 1 - installIndicator.opacity
129 QtLayouts.Layout.fillWidth:
true 130 QtLayouts.Layout.fillHeight:
true
QString i18ndc(const char *domain, const char *context, const char *text, const TYPE &arg...)
QTextStream & right(QTextStream &s)