blob: fea3ff069332329eba63ce2f22d36e050225c332 [file] [log] [blame]
/*
* Copyright (C) 2020 by Savoir-faire Linux
* Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 program. If not, see <https://www.gnu.org/licenses/>.
*/
import QtQuick 2.14
import QtQuick.Controls 2.14
import QtQuick.Layouts 1.14
import net.jami.Models 1.0
import "../../commoncomponents"
Dialog {
id: aboutPopUp
// When dialog is opened, trigger mainViewWindow overlay which is defined in overlay.model (model : true is necessary).
modal: true
// Content height + margin.
contentHeight: aboutPopUpContentRectColumnLayout.height + 5 * 7
ProjectCreditsScrollView {
id: projectCreditsScrollView
visible: false
}
ChangeLogScrollView {
id: changeLogScrollView
visible: false
}
Rectangle {
id: aboutPopUpContentRect
anchors.fill: parent
ColumnLayout {
id: aboutPopUpContentRectColumnLayout
Image {
id: aboutPopUPJamiLogoImage
Layout.alignment: Qt.AlignCenter
Layout.preferredWidth: aboutPopUpContentRect.width
Layout.preferredHeight: 100
fillMode: Image.PreserveAspectFit
source: "qrc:/images/logo-jami-standard-coul.png"
mipmap: true
}
Label {
id: jamiVersionText
Layout.alignment: Qt.AlignCenter
Layout.preferredWidth: aboutPopUpContentRect.width
Layout.preferredHeight: textMetricsjamiVersionText.boundingRect.height
font.pointSize: JamiTheme.textFontSize - 2
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
text: textMetricsjamiVersionText.text
TextMetrics {
id: textMetricsjamiVersionText
font: jamiVersionText.font
text: qsTr("version") + ": " + ClientWrapper.utilsAdaptor.getVersionStr()
}
}
Label {
id: jamiSlogansText
Layout.alignment: Qt.AlignCenter
Layout.preferredWidth: aboutPopUpContentRect.width
Layout.preferredHeight: textMetricsjamiSlogansText.boundingRect.height
Layout.topMargin: 5
wrapMode: Text.WordWrap
font.pointSize: JamiTheme.textFontSize - 2
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
text: textMetricsjamiSlogansText.text
TextMetrics {
id: textMetricsjamiSlogansText
font: jamiSlogansText.font
text: qsTr("Together")
}
}
Label {
id: jamiDeclarationText
Layout.alignment: Qt.AlignCenter
Layout.preferredWidth: aboutPopUpContentRect.width
Layout.preferredHeight: 40
Layout.topMargin: 5
wrapMode: Text.WordWrap
font.pointSize: JamiTheme.textFontSize - 2
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
// TextMetrics does not work for multi-line.
text: qsTr("The Qt client for Jami.\nJami is a secured and distributed communication software.")
}
Label {
id: jamiDeclarationHyperText
Layout.alignment: Qt.AlignCenter
// Strangely, hoveredLink works badly when width grows too large
Layout.preferredWidth: 50
Layout.preferredHeight: textMetricsjamiDeclarationHyperText.boundingRect.height
Layout.topMargin: 5
Layout.bottomMargin: 5
font.pointSize: JamiTheme.textFontSize - 2
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
text: textMetricsjamiDeclarationHyperText.text
onLinkActivated: Qt.openUrlExternally(link)
TextMetrics {
id: textMetricsjamiDeclarationHyperText
font: jamiDeclarationHyperText.font
text: '<html><style type="text/css"></style><a href="https://jami.net">jami.net</a></html>'
}
MouseArea {
anchors.fill: parent
// We don't want to eat clicks on the Text.
acceptedButtons: Qt.NoButton
cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
}
}
Label {
id: jamiDeclarationYearText
Layout.alignment: Qt.AlignCenter
Layout.preferredWidth: aboutPopUpContentRect.width
Layout.preferredHeight: textMetricsjamiDeclarationYearText.boundingRect.height
Layout.bottomMargin: 5
font.pointSize: JamiTheme.textFontSize - 2
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
text: textMetricsjamiDeclarationYearText.text
TextMetrics {
id: textMetricsjamiDeclarationYearText
font: jamiDeclarationYearText.font
text: "© 2015-2020 Savoir-faire Linux"
}
}
Label {
id: jamiNoneWarrantyHyperText
Layout.alignment: Qt.AlignCenter
Layout.preferredWidth: Math.min(300,
aboutPopUpContentRect.width)
Layout.preferredHeight: textMetricsjamiNoneWarrantyHyperText.boundingRect.height * 2
Layout.bottomMargin: 10
wrapMode: Text.WordWrap
font.pointSize: JamiTheme.textFontSize - 3
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
text: textMetricsjamiNoneWarrantyHyperText.text
onLinkActivated: Qt.openUrlExternally(link)
TextMetrics {
id: textMetricsjamiNoneWarrantyHyperText
font: jamiDeclarationHyperText.font
text: '<html><style type="text/css"></style>This program comes with absolutely no warranty.<br\>See the <a href="http://www.gnu.org/licenses/gpl-3.0.html">GNU General Public License, version 3 or later</a> for details.</html>'
}
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.NoButton
cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
}
}
Rectangle {
id: buttonGroupChangeLogAndCredits
Layout.alignment: Qt.AlignCenter
Layout.preferredWidth: aboutPopUpContentRect.width
Layout.preferredHeight: 30
Layout.bottomMargin: 10
RowLayout {
id: buttonGroupChangeLogAndCreditsRowLayout
anchors.fill: parent
MaterialButton {
id: changeLogButton
text: qsTr("Changelog")
color: projectCreditsScrollView.visible? JamiTheme.buttonTintedGreyInactive : JamiTheme.buttonTintedGrey
hoveredColor: JamiTheme.buttonTintedGreyHovered
pressedColor: JamiTheme.buttonTintedGreyPressed
Layout.preferredWidth: 100
onClicked: {
if (changeLogOrCreditsStack.depth > 1) {
changeLogOrCreditsStack.pop()
}
}
}
MaterialButton {
id: creditsButton
text: qsTr("Credit")
color: projectCreditsScrollView.visible? JamiTheme.buttonTintedGrey : JamiTheme.buttonTintedGreyInactive
hoveredColor: JamiTheme.buttonTintedGreyHovered
pressedColor: JamiTheme.buttonTintedGreyPressed
Layout.preferredWidth: 100
onClicked: {
if (changeLogOrCreditsStack.depth == 1) {
changeLogOrCreditsStack.push(
projectCreditsScrollView)
}
}
}
}
}
StackView {
id: changeLogOrCreditsStack
Layout.alignment: Qt.AlignCenter
Layout.preferredWidth: aboutPopUpContentRect.width
Layout.preferredHeight: 150
Layout.bottomMargin: 5
initialItem: changeLogScrollView
clip: true
}
}
}
background: Rectangle {
border.width: 0
radius: 10
}
}