Fix opening package details from main update page

This commit is contained in:
Michael Zanetti 2022-03-16 14:29:39 +01:00
parent 3beafeaec6
commit 7c84fba6d5
4 changed files with 139 additions and 104 deletions

View File

@ -275,5 +275,6 @@
<file>ui/components/NymeaTextField.qml</file>
<file>ui/system/TunnelProxyServerConfigurationDialog.qml</file>
<file>ui/delegates/StateDelegate.qml</file>
<file>ui/system/PackageDetailsPage.qml</file>
</qresource>
</RCC>

View File

@ -0,0 +1,135 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2022, nymea GmbH
* Contact: contact@nymea.io
*
* This file is part of nymea.
* This project including source code and documentation is protected by
* copyright law, and remains the property of nymea GmbH. All rights, including
* reproduction, publication, editing and translation, are reserved. The use of
* this project is subject to the terms of a license agreement to be concluded
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
* under https://nymea.io/license
*
* GNU General Public License Usage
* Alternatively, this project may be redistributed and/or modified under the
* terms of the GNU General Public License as published by the Free Software
* Foundation, GNU version 3. This project is distributed in the hope that it
* will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
import QtQuick 2.8
import QtQuick.Controls 2.2
import QtQuick.Controls.Material 2.1
import QtQuick.Layouts 1.3
import "../components"
import Nymea 1.0
SettingsPageBase {
id: packageDetailsPage
title: qsTr("Package information")
property Package pkg: null
GridLayout {
Layout.fillWidth: true
columns: app.landscape ? 2 : 1
RowLayout {
Layout.margins: app.margins
spacing: app.margins
ColorIcon {
Layout.preferredHeight: Style.iconSize * 2
Layout.preferredWidth: Style.iconSize * 2
name: "../images/plugin.svg"
color: Style.accentColor
}
Label {
Layout.fillWidth: true
text: pkg.displayName
font.pixelSize: app.largeFont
elide: Text.ElideRight
}
}
Label {
Layout.fillWidth: true
Layout.leftMargin: app.margins
Layout.rightMargin: app.margins
text: packageDetailsPage.pkg.summary
wrapMode: Text.WordWrap
}
NymeaSwipeDelegate {
Layout.fillWidth: true
text: qsTr("Installed version:")
subText: packageDetailsPage.pkg.installedVersion.length > 0 ? packageDetailsPage.pkg.installedVersion : qsTr("Not installed")
progressive: false
}
NymeaSwipeDelegate {
Layout.fillWidth: true
text: qsTr("Candidate version:")
subText: packageDetailsPage.pkg.candidateVersion
visible: packageDetailsPage.pkg.updateAvailable || packageDetailsPage.pkg.installedVersion.length === 0
progressive: false
}
Button {
Layout.fillWidth: true
Layout.margins: app.margins
visible: packageDetailsPage.pkg.updateAvailable || packageDetailsPage.pkg.installedVersion.length === 0
text: packageDetailsPage.pkg.updateAvailable ? qsTr("Update") : qsTr("Install")
onClicked: {
var dialog = Qt.createComponent(Qt.resolvedUrl("../components/MeaDialog.qml"));
var text = qsTr("This will start a system update. Note that the update might take several minutes and your %1 might not be functioning properly or restart during this time.").arg(Configuration.systemName)
+ "\n\n"
+ qsTr("\nDo you want to proceed?")
var popup = dialog.createObject(app,
{
headerIcon: "../images/system-update.svg",
title: qsTr("Start update"),
text: text,
standardButtons: Dialog.Ok | Dialog.Cancel
});
popup.open();
popup.accepted.connect(function() {
engine.systemController.updatePackages(packageDetailsPage.pkg.id)
})
}
}
Button {
Layout.fillWidth: true
Layout.margins: app.margins
text: qsTr("Remove")
visible: packageDetailsPage.pkg.canRemove
onClicked: {
var dialog = Qt.createComponent(Qt.resolvedUrl("../components/MeaDialog.qml"));
var text = qsTr("This will start a system update. Note that the update might take several minutes and your %1 system might not be functioning properly during this time and restart during the process.\nDo you want to proceed?").arg(Configuration.systemName)
var popup = dialog.createObject(app,
{
headerIcon: "../images/system-update.svg",
title: qsTr("Remove package"),
text: text,
standardButtons: Dialog.Ok | Dialog.Cancel
});
popup.open();
popup.accepted.connect(function() {
engine.systemController.removePackages(packageDetailsPage.pkg.id)
})
}
}
}
UpdateRunningOverlay {
}
}

View File

@ -1,6 +1,6 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2020, nymea GmbH
* Copyright 2013 - 2022, nymea GmbH
* Contact: contact@nymea.io
*
* This file is part of nymea.
@ -91,7 +91,7 @@ SettingsPageBase {
? "green"
: model.installedVersion.length > 0 ? "blue" : Style.iconColor
onClicked: {
pageStack.push(packageDetailsComponent, {pkg: filterModel.get(index)})
pageStack.push(Qt.resolvedUrl("PackageDetailsPage.qml"), {pkg: filterModel.get(index)})
}
}
@ -108,107 +108,6 @@ SettingsPageBase {
UpdateRunningOverlay {
}
}
Component {
id: packageDetailsComponent
SettingsPageBase {
id: packageDetailsPage
title: qsTr("Package information")
property Package pkg: null
GridLayout {
Layout.fillWidth: true
columns: app.landscape ? 2 : 1
RowLayout {
Layout.margins: app.margins
spacing: app.margins
ColorIcon {
Layout.preferredHeight: Style.iconSize * 2
Layout.preferredWidth: Style.iconSize * 2
name: "../images/plugin.svg"
color: Style.accentColor
}
Label {
Layout.fillWidth: true
text: pkg.displayName
font.pixelSize: app.largeFont
elide: Text.ElideRight
}
}
Label {
Layout.fillWidth: true
Layout.leftMargin: app.margins
Layout.rightMargin: app.margins
text: packageDetailsPage.pkg.summary
wrapMode: Text.WordWrap
}
NymeaSwipeDelegate {
Layout.fillWidth: true
text: qsTr("Installed version:")
subText: packageDetailsPage.pkg.installedVersion.length > 0 ? packageDetailsPage.pkg.installedVersion : qsTr("Not installed")
progressive: false
}
NymeaSwipeDelegate {
Layout.fillWidth: true
text: qsTr("Candidate version:")
subText: packageDetailsPage.pkg.candidateVersion
visible: packageDetailsPage.pkg.updateAvailable || packageDetailsPage.pkg.installedVersion.length === 0
progressive: false
}
Button {
Layout.fillWidth: true
Layout.margins: app.margins
visible: packageDetailsPage.pkg.updateAvailable || packageDetailsPage.pkg.installedVersion.length === 0
text: packageDetailsPage.pkg.updateAvailable ? qsTr("Update") : qsTr("Install")
onClicked: {
var dialog = Qt.createComponent(Qt.resolvedUrl("../components/MeaDialog.qml"));
var text = qsTr("This will start a system update. Note that the update might take several minutes and your %1 might not be functioning properly or restart during this time.").arg(Configuration.systemName)
+ "\n\n"
+ qsTr("\nDo you want to proceed?")
var popup = dialog.createObject(app,
{
headerIcon: "../images/system-update.svg",
title: qsTr("Start update"),
text: text,
standardButtons: Dialog.Ok | Dialog.Cancel
});
popup.open();
popup.accepted.connect(function() {
engine.systemController.updatePackages(packageDetailsPage.pkg.id)
})
}
}
Button {
Layout.fillWidth: true
Layout.margins: app.margins
text: qsTr("Remove")
visible: packageDetailsPage.pkg.canRemove
onClicked: {
var dialog = Qt.createComponent(Qt.resolvedUrl("../components/MeaDialog.qml"));
var text = qsTr("This will start a system update. Note that the update might take several minutes and your %1 system might not be functioning properly during this time and restart during the process.\nDo you want to proceed?").arg(Configuration.systemName)
var popup = dialog.createObject(app,
{
headerIcon: "../images/system-update.svg",
title: qsTr("Remove package"),
text: text,
standardButtons: Dialog.Ok | Dialog.Cancel
});
popup.open();
popup.accepted.connect(function() {
engine.systemController.removePackages(packageDetailsPage.pkg.id)
})
}
}
}
UpdateRunningOverlay {
}
}
}
Component {
id: errorDialogComponent

View File

@ -197,7 +197,7 @@ Page {
? "green"
: model.installedVersion.length > 0 ? "blue" : Style.iconColor
onClicked: {
pageStack.push(packageDetailsComponent, {pkg: updatesModel.get(index)})
pageStack.push(Qt.resolvedUrl("PackageDetailsPage.qml"), {pkg: updatesModel.get(index)})
}
}
}