292 lines
10 KiB
QML
292 lines
10 KiB
QML
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
*
|
|
* Copyright 2013 - 2020, 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.9
|
|
import QtQuick.Controls 2.2
|
|
import QtQuick.Layouts 1.3
|
|
import Nymea 1.0
|
|
|
|
Item {
|
|
id: root
|
|
implicitHeight: aboutColumn.implicitHeight
|
|
|
|
property alias title: titleLabel.text
|
|
property url githubLink
|
|
property var additionalLicenses: null
|
|
|
|
default property alias content: contentGrid.data
|
|
|
|
ColumnLayout {
|
|
id: aboutColumn
|
|
anchors { left: parent.left; right: parent.right; top: parent.top }
|
|
|
|
RowLayout {
|
|
Layout.fillWidth: true
|
|
Layout.margins: app.margins
|
|
spacing: app.margins
|
|
|
|
Image {
|
|
id: logo
|
|
Layout.preferredHeight: Style.iconSize * 2
|
|
Layout.preferredWidth: height
|
|
fillMode: Image.PreserveAspectFit
|
|
source: "qrc:/styles/%1/logo.svg".arg(styleController.currentStyle)
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
property int clickCounter: 0
|
|
onClicked: {
|
|
clickCounter++;
|
|
if (clickCounter >= 10) {
|
|
settings.showHiddenOptions = !settings.showHiddenOptions
|
|
var dialog = Qt.createComponent(Qt.resolvedUrl("../components/NymeaDialog.qml"));
|
|
var text = settings.showHiddenOptions
|
|
? qsTr("Developer options are now enabled. If you have found this by accident, it is most likely not of any use for you. It will just enable some nerdy developer gibberish in the app. Tap the icon another 10 times to disable it again.")
|
|
: qsTr("Developer options are now disabled.")
|
|
var popup = dialog.createObject(app, {headerIcon: "../images/dialog-warning-symbolic.svg", title: qsTr("Howdy cowboy!"), text: text})
|
|
popup.open();
|
|
clickCounter = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Label {
|
|
id: titleLabel
|
|
font.pixelSize: app.largeFont
|
|
}
|
|
}
|
|
|
|
ThinDivider {}
|
|
|
|
GridLayout {
|
|
id: contentGrid
|
|
Layout.fillWidth: true
|
|
columns: Math.max(1, root.width / 300)
|
|
}
|
|
|
|
ThinDivider {}
|
|
|
|
Label {
|
|
Layout.fillWidth: true
|
|
Layout.topMargin: app.margins
|
|
Layout.leftMargin: app.margins
|
|
Layout.rightMargin: app.margins
|
|
wrapMode: Text.WordWrap
|
|
font.bold: true
|
|
text: "Copyright (C) %1 chargebyte GmbH".arg(new Date().getFullYear())
|
|
}
|
|
|
|
Label {
|
|
Layout.fillWidth: true
|
|
Layout.leftMargin: app.margins
|
|
Layout.rightMargin: app.margins
|
|
wrapMode: Text.WordWrap
|
|
text: qsTr("nymea is a registered trademark of chargebyte GmbH.")
|
|
}
|
|
|
|
Label {
|
|
Layout.fillWidth: true
|
|
Layout.leftMargin: app.margins
|
|
Layout.rightMargin: app.margins
|
|
wrapMode: Text.WordWrap
|
|
font.pixelSize: app.smallFont
|
|
text: Configuration.closedSource ? qsTr("Licensed under the terms of the nymea commercial license.") : qsTr("Licensed under the terms of the GNU General Public License, version 3. Please visit the GitHub page for source code and build instructions.")
|
|
}
|
|
|
|
ColumnLayout {
|
|
Layout.fillWidth: true
|
|
|
|
NymeaSwipeDelegate {
|
|
Layout.fillWidth: true
|
|
iconName: "../images/stock_website.svg"
|
|
text: qsTr("Visit the nymea website")
|
|
subText: "https://nymea.io"
|
|
prominentSubText: false
|
|
wrapTexts: false
|
|
onClicked: {
|
|
Qt.openUrlExternally("https://nymea.io")
|
|
}
|
|
}
|
|
|
|
NymeaSwipeDelegate {
|
|
Layout.fillWidth: true
|
|
iconName: "../images/stock_website.svg"
|
|
text: qsTr("Visit GitHub page")
|
|
subText: root.githubLink
|
|
prominentSubText: false
|
|
wrapTexts: false
|
|
onClicked: {
|
|
Qt.openUrlExternally(root.githubLink)
|
|
}
|
|
}
|
|
|
|
NymeaSwipeDelegate {
|
|
Layout.fillWidth: true
|
|
text: qsTr("View privacy policy")
|
|
iconName: "../images/stock_website.svg"
|
|
subText: app.privacyPolicyUrl
|
|
prominentSubText: false
|
|
wrapTexts: false
|
|
onClicked:
|
|
Qt.openUrlExternally(app.privacyPolicyUrl)
|
|
}
|
|
|
|
NymeaSwipeDelegate {
|
|
Layout.fillWidth: true
|
|
text: qsTr("Software license")
|
|
iconName: "../images/stock_website.svg"
|
|
subText: "The nymea sofware license"
|
|
prominentSubText: false
|
|
wrapTexts: false
|
|
onClicked: {
|
|
Qt.openUrlExternally("https://nymea.io/license")
|
|
}
|
|
}
|
|
|
|
NymeaSwipeDelegate {
|
|
Layout.fillWidth: true
|
|
text: qsTr("Additional software licenses")
|
|
iconName: "../images/logs.svg"
|
|
subText: "Additional used software licenses"
|
|
prominentSubText: false
|
|
wrapTexts: false
|
|
visible: root.additionalLicenses && root.additionalLicenses.count > 0
|
|
onClicked: {
|
|
pageStack.push(licensesPageComponent)
|
|
}
|
|
}
|
|
}
|
|
|
|
ThinDivider { }
|
|
|
|
RowLayout {
|
|
Layout.fillWidth: true
|
|
Layout.margins: app.margins
|
|
spacing: app.margins
|
|
|
|
Image {
|
|
Layout.preferredHeight: Style.iconSize * 2
|
|
Layout.preferredWidth: height
|
|
fillMode: Image.PreserveAspectFit
|
|
source: "qrc:/ui/images/Built_with_Qt_RGB_logo_vertical.svg"
|
|
sourceSize.width: Style.iconSize * 2
|
|
sourceSize.height: Style.iconSize * 2
|
|
}
|
|
|
|
Label {
|
|
Layout.fillWidth: true
|
|
text: qsTr("Qt is a registered trademark of The Qt Company Ltd. and its subsidiaries.")
|
|
wrapMode: Text.WordWrap
|
|
}
|
|
}
|
|
NymeaSwipeDelegate {
|
|
Layout.fillWidth: true
|
|
iconName: "../images/stock_website.svg"
|
|
text: qsTr("Visit the Qt website")
|
|
subText: "https://www.qt.io"
|
|
prominentSubText: false
|
|
wrapTexts: false
|
|
onClicked: {
|
|
Qt.openUrlExternally("https://www.qt.io")
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
Component {
|
|
id: licensesPageComponent
|
|
Page {
|
|
id: licensesPage
|
|
header: NymeaHeader {
|
|
text: qsTr("Additional software licenses")
|
|
onBackPressed: pageStack.pop()
|
|
}
|
|
|
|
ColumnLayout {
|
|
anchors { left: parent.left; top: parent.top; right: parent.right }
|
|
|
|
Repeater {
|
|
model: root.additionalLicenses
|
|
|
|
delegate: NymeaSwipeDelegate {
|
|
Layout.fillWidth: true
|
|
text: model.component
|
|
subText: model.infoText
|
|
prominentSubText: false
|
|
visible: model.platforms === "*" || model.platforms.indexOf(Qt.platform.os) >= 0
|
|
onClicked: {
|
|
pageStack.push(licenseTextComponent, {license: model.license})
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: licenseTextComponent
|
|
Page {
|
|
id: licenseTextPage
|
|
header: NymeaHeader {
|
|
text: parent.license
|
|
onBackPressed: pageStack.pop()
|
|
}
|
|
|
|
property string license
|
|
|
|
Flickable {
|
|
anchors.fill: parent
|
|
contentHeight: licenseText.implicitHeight
|
|
clip: true
|
|
ScrollBar.vertical: ScrollBar {}
|
|
TextArea {
|
|
id: licenseText
|
|
wrapMode: Text.WordWrap
|
|
font.pixelSize: app.smallFont
|
|
anchors { left: parent.left; right: parent.right; margins: app.margins }
|
|
readOnly: true
|
|
Component.onCompleted: {
|
|
var xhr = new XMLHttpRequest;
|
|
xhr.open("GET", "../../LICENSE." + licenseTextPage.license);
|
|
xhr.onreadystatechange = function() {
|
|
if (xhr.readyState === XMLHttpRequest.DONE) {
|
|
text = xhr.responseText
|
|
}
|
|
};
|
|
xhr.send();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|