diff --git a/nymea-app/resources.qrc b/nymea-app/resources.qrc
index 9a0b7acf..a8ca8f98 100644
--- a/nymea-app/resources.qrc
+++ b/nymea-app/resources.qrc
@@ -275,5 +275,6 @@
ui/components/NymeaTextField.qml
ui/system/TunnelProxyServerConfigurationDialog.qml
ui/delegates/StateDelegate.qml
+ ui/system/PackageDetailsPage.qml
diff --git a/nymea-app/ui/system/PackageDetailsPage.qml b/nymea-app/ui/system/PackageDetailsPage.qml
new file mode 100644
index 00000000..26009323
--- /dev/null
+++ b/nymea-app/ui/system/PackageDetailsPage.qml
@@ -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 .
+*
+* 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 {
+ }
+}
diff --git a/nymea-app/ui/system/PackageListPage.qml b/nymea-app/ui/system/PackageListPage.qml
index 94fd2c1f..cd3fa118 100644
--- a/nymea-app/ui/system/PackageListPage.qml
+++ b/nymea-app/ui/system/PackageListPage.qml
@@ -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
diff --git a/nymea-app/ui/system/SystemUpdatePage.qml b/nymea-app/ui/system/SystemUpdatePage.qml
index 0b3c5727..413e2341 100644
--- a/nymea-app/ui/system/SystemUpdatePage.qml
+++ b/nymea-app/ui/system/SystemUpdatePage.qml
@@ -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)})
}
}
}