Warning, /sdk/licensedigger/autotests/testdata/LGPL-2.0-or-later/AboutPage.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 * Copyright (C) 2018 Aleix Pol Gonzalez <aleixpol@blue-systems.com>
0003 *
0004 * This program is free software; you can redistribute it and/or modify
0005 * it under the terms of the GNU Library/Lesser General Public License
0006 * version 2, or (at your option) any later version, as published by the
0007 * Free Software Foundation
0008 *
0009 * This program is distributed in the hope that it will be useful,
0010 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0012 * GNU General Public License for more details
0013 *
0014 * You should have received a copy of the GNU Library/Lesser General Public
0015 * License along with this program; if not, write to the
0016 * Free Software Foundation, Inc.,
0017 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
0018 */
0019
0020 import QtQuick 2.1
0021 import QtQuick.Controls 2.4 as QQC2
0022 import QtQuick.Layouts 1.3
0023 import org.kde.kirigami 2.5
0024
0025 /**
0026 * An about page that is ready to integrate in a kirigami app
0027 *
0028 * Allows to have a page that will show the copyright notice of the application
0029 * together with the contributors and some information of which platform it's
0030 * running on.
0031 *
0032 * @since 5.52
0033 * @since org.kde.kirigami 2.6
0034 */
0035 ScrollablePage
0036 {
0037 id: page
0038 /**
0039 * An object with the same shape of KAboutData
0040 *
0041 * For example:
0042 * @code
0043 * aboutData: {
0044 "displayName" : "KirigamiApp",
0045 "productName" : "kirigami/app",
0046 "componentName" : "kirigamiapp",
0047 "shortDescription" : "A Kirigami example",
0048 "homepage" : "",
0049 "bugAddress" : "submit@bugs.kde.org",
0050 "version" : "5.14.80",
0051 "otherText" : "",
0052 "authors" : [
0053 {
0054 "name" : "...",
0055 "task" : "",
0056 "emailAddress" : "somebody@kde.org",
0057 "webAddress" : "",
0058 "ocsUsername" : ""
0059 }
0060 ],
0061 "credits" : [],
0062 "translators" : [],
0063 "licenses" : [
0064 {
0065 "name" : "GPL v2",
0066 "text" : "long, boring, license text",
0067 "spdx" : "GPL-2.0"
0068 }
0069 ],
0070 "copyrightStatement" : "© 2010-2018 Plasma Development Team",
0071 "desktopFileName" : "org.kde.kirigamiapp"
0072 }
0073 @endcode
0074 *
0075 * @see KAboutData
0076 */
0077 property var aboutData
0078
0079 title: qsTr("About")
0080
0081 Component {
0082 id: licencePage
0083 ScrollablePage {
0084 property alias text: content.text
0085 QQC2.TextArea {
0086 id: content
0087 readOnly: true
0088 }
0089 }
0090 }
0091
0092 Component {
0093 id: personDelegate
0094
0095 RowLayout {
0096 height: implicitHeight + (Units.smallSpacing * 2)
0097
0098 spacing: Units.smallSpacing * 2
0099 Icon {
0100 width: Units.iconSizes.smallMedium
0101 height: width
0102 source: "user"
0103 }
0104 QQC2.Label {
0105 text: modelData.emailAddress ? qsTr("%1 <%2>").arg(modelData.name).arg(modelData.emailAddress) : modelData.name
0106 }
0107 }
0108 }
0109
0110 FormLayout {
0111 id: form
0112
0113 GridLayout {
0114 columns: 2
0115 Layout.fillWidth: true
0116
0117 Icon {
0118 Layout.rowSpan: 2
0119 Layout.preferredHeight: Units.iconSizes.huge
0120 Layout.preferredWidth: height
0121 Layout.maximumWidth: page.width / 3;
0122 Layout.rightMargin: Units.largeSpacing
0123 source: Settings.applicationWindowIcon || page.aboutData.programLogo || page.aboutData.programIconName || page.aboutData.componentName
0124 }
0125 Heading {
0126 Layout.fillWidth: true
0127 text: page.aboutData.displayName + " " + page.aboutData.version
0128 }
0129 Heading {
0130 Layout.fillWidth: true
0131 level: 2
0132 wrapMode: Text.WordWrap
0133 text: page.aboutData.shortDescription
0134 }
0135 }
0136
0137 Separator {
0138 Layout.fillWidth: true
0139 }
0140
0141 Heading {
0142 FormData.isSection: true
0143 text: qsTr("Copyright")
0144 }
0145 QQC2.Label {
0146 Layout.leftMargin: Units.gridUnit
0147 text: aboutData.otherText
0148 visible: text.length > 0
0149 }
0150 QQC2.Label {
0151 Layout.leftMargin: Units.gridUnit
0152 text: aboutData.copyrightStatement
0153 visible: text.length > 0
0154 }
0155 UrlButton {
0156 Layout.leftMargin: Units.gridUnit
0157 url: aboutData.homepage
0158 visible: url.length > 0
0159 }
0160
0161 Component {
0162 id: licenseLinkButton
0163
0164 RowLayout {
0165 Layout.leftMargin: Units.smallSpacing
0166 QQC2.Label { text: qsTr("License:") }
0167 LinkButton {
0168 text: modelData.name
0169 onClicked: applicationWindow().pageStack.push(licencePage, { text: modelData.text, title: modelData.name } )
0170 }
0171 }
0172 }
0173
0174 Component {
0175 id: licenseTextItem
0176
0177 RowLayout {
0178 Layout.leftMargin: Units.smallSpacing
0179 QQC2.Label { text: qsTr("License: %1").arg(modelData.name) }
0180 }
0181 }
0182
0183 Repeater {
0184 model: aboutData.licenses
0185 delegate: applicationWindow().pageStack ? licenseLinkButton : licenseTextItem
0186 }
0187
0188 Heading {
0189 FormData.isSection: visible
0190 text: qsTr("Libraries in use")
0191 visible: Settings.information
0192 }
0193 Repeater {
0194 model: Settings.information
0195 delegate: QQC2.Label {
0196 Layout.leftMargin: Units.gridUnit
0197 id: libraries
0198 text: modelData
0199 }
0200 }
0201 Heading {
0202 Layout.fillWidth: true
0203 FormData.isSection: visible
0204 text: qsTr("Authors")
0205 visible: aboutData.authors.length > 0
0206 }
0207 Repeater {
0208 model: aboutData.authors
0209 delegate: personDelegate
0210 }
0211 Heading {
0212 height: visible ? implicitHeight : 0
0213 FormData.isSection: visible
0214 text: qsTr("Credits")
0215 visible: repCredits.count > 0
0216 }
0217 Repeater {
0218 id: repCredits
0219 model: aboutData.credits
0220 delegate: personDelegate
0221 }
0222 Heading {
0223 height: visible ? implicitHeight : 0
0224 FormData.isSection: visible
0225 text: qsTr("Translators")
0226 visible: repTranslators.count > 0
0227 }
0228 Repeater {
0229 id: repTranslators
0230 model: aboutData.translators
0231 delegate: personDelegate
0232 }
0233 }
0234 }