mirror of
https://git.jami.net/savoirfairelinux/jami-client-qt.git
synced 2025-07-24 09:25:33 +02:00
dialog: use popup dialogs to replace the existing Qt.labs.platform ones
Dialog in Qt.labs.platform which is used to be native in Qt 5.15 cannnot be accessed in Qt 6.2 for now, use popup dialogs instead 1. Add tittle 2. DropShadow revisit 3. Dim properly Change-Id: I8804ae0c30e3450c9a800d9a1c3946ff0bf44b46
This commit is contained in:
parent
2c7a0e165b
commit
5b267c9a46
20 changed files with 1190 additions and 1227 deletions
3
qml.qrc
3
qml.qrc
|
@ -21,8 +21,7 @@
|
|||
<file>src/commoncomponents/UsernameLineEdit.qml</file>
|
||||
<file>src/commoncomponents/Scaffold.qml</file>
|
||||
<file>src/commoncomponents/LineEditContextMenu.qml</file>
|
||||
<file>src/commoncomponents/BaseDialog.qml</file>
|
||||
<file>src/commoncomponents/ModalPopup.qml</file>
|
||||
<file>src/commoncomponents/BaseModalDialog.qml</file>
|
||||
<file>src/commoncomponents/SimpleMessageDialog.qml</file>
|
||||
<file>src/commoncomponents/ResponsiveImage.qml</file>
|
||||
<file>src/commoncomponents/PresenceIndicator.qml</file>
|
||||
|
|
|
@ -198,17 +198,6 @@ ApplicationWindow {
|
|||
}
|
||||
}
|
||||
|
||||
Overlay.modal: ColorOverlay {
|
||||
source: root.contentItem
|
||||
color: "transparent"
|
||||
|
||||
// Color animation for overlay when pop up is shown.
|
||||
ColorAnimation on color {
|
||||
to: Qt.rgba(0, 0, 0, 0.33)
|
||||
duration: 500
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
DBusErrorHandler.setActive(true)
|
||||
|
||||
|
|
|
@ -202,17 +202,6 @@ ApplicationWindow {
|
|||
}
|
||||
}
|
||||
|
||||
Overlay.modal: ColorOverlay {
|
||||
source: root.contentItem
|
||||
color: "transparent"
|
||||
|
||||
// Color animation for overlay when pop up is shown.
|
||||
ColorAnimation on color {
|
||||
to: Qt.rgba(0, 0, 0, 0.33)
|
||||
duration: 500
|
||||
}
|
||||
}
|
||||
|
||||
onClosing: root.close()
|
||||
|
||||
onScreenChanged: JamiQmlUtils.mainApplicationScreen = root.screen
|
||||
|
|
|
@ -1,26 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2020 by Savoir-faire Linux
|
||||
* Author: Albert Babí <albert.babi@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
|
||||
import QtQuick.Controls
|
||||
|
||||
Dialog {
|
||||
id: root
|
||||
|
||||
visible: false
|
||||
}
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
import Qt5Compat.GraphicalEffects
|
||||
|
||||
import net.jami.Constants 1.1
|
||||
|
@ -28,6 +29,12 @@ Popup {
|
|||
// convient access to closePolicy
|
||||
property bool autoClose: true
|
||||
property alias backgroundColor: container.color
|
||||
property alias title: titleText.text
|
||||
property var popupContentLoader: containerSubContentLoader
|
||||
property alias popupContentLoadStatus: containerSubContentLoader.status
|
||||
property alias popupContent: containerSubContentLoader.sourceComponent
|
||||
property int popupContentPreferredHeight: 0
|
||||
property int popupContentPreferredWidth: 0
|
||||
|
||||
parent: Overlay.overlay
|
||||
|
||||
|
@ -37,20 +44,64 @@ Popup {
|
|||
|
||||
modal: true
|
||||
|
||||
padding: 0
|
||||
|
||||
// A popup is invisible until opened.
|
||||
visible: false
|
||||
closePolicy: autoClose ?
|
||||
(Popup.CloseOnEscape | Popup.CloseOnPressOutside) :
|
||||
Popup.NoAutoClose
|
||||
|
||||
padding: 0
|
||||
|
||||
background: Rectangle {
|
||||
Rectangle {
|
||||
id: container
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
spacing: 0
|
||||
|
||||
Text {
|
||||
id: titleText
|
||||
|
||||
Layout.alignment: Qt.AlignTop | Qt.AlignLeft
|
||||
Layout.margins: text.length === 0 ? 0 : 10
|
||||
|
||||
Layout.preferredHeight: text.length === 0 ? 0 : contentHeight
|
||||
|
||||
font.pointSize: 12
|
||||
color: JamiTheme.textColor
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: containerSubContentLoader
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
Layout.fillWidth: popupContentPreferredWidth === 0
|
||||
Layout.fillHeight: popupContentPreferredHeight === 0
|
||||
Layout.preferredHeight: popupContentPreferredHeight
|
||||
Layout.preferredWidth: popupContentPreferredWidth
|
||||
}
|
||||
}
|
||||
|
||||
radius: JamiTheme.modalPopupRadius
|
||||
width: root.width
|
||||
height: root.height
|
||||
color: JamiTheme.secondaryBackgroundColor
|
||||
}
|
||||
|
||||
background: Rectangle {
|
||||
color: JamiTheme.transparentColor
|
||||
}
|
||||
|
||||
Overlay.modal: Rectangle {
|
||||
color: JamiTheme.transparentColor
|
||||
|
||||
// Color animation for overlay when pop up is shown.
|
||||
ColorAnimation on color {
|
||||
to: JamiTheme.popupOverlayColor
|
||||
duration: 500
|
||||
}
|
||||
}
|
||||
|
||||
DropShadow {
|
|
@ -23,7 +23,7 @@ import QtQuick.Layouts
|
|||
import net.jami.Constants 1.1
|
||||
import net.jami.Models 1.1
|
||||
|
||||
ModalPopup {
|
||||
BaseModalDialog {
|
||||
id: root
|
||||
|
||||
property bool connectionFailed: false
|
||||
|
@ -31,73 +31,69 @@ ModalPopup {
|
|||
|
||||
autoClose: false
|
||||
|
||||
contentItem: Rectangle {
|
||||
id: contentRect
|
||||
onPopupContentLoadStatusChanged: {
|
||||
if (popupContentLoadStatus === Loader.Ready) {
|
||||
root.height = Qt.binding(function() {
|
||||
return popupContentLoader.item.implicitHeight + 50
|
||||
})
|
||||
root.width = Qt.binding(function() {
|
||||
return popupContentLoader.item.implicitWidth + 50
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
implicitHeight: daemonReconnectPopupColumnLayout.implicitHeight + 50
|
||||
popupContent: ColumnLayout {
|
||||
id: daemonReconnectPopupColumnLayout
|
||||
|
||||
color: JamiTheme.secondaryBackgroundColor
|
||||
spacing: 0
|
||||
|
||||
ColumnLayout {
|
||||
id: daemonReconnectPopupColumnLayout
|
||||
Text {
|
||||
id: daemonReconnectPopupTextLabel
|
||||
|
||||
anchors.fill: parent
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
|
||||
Layout.topMargin: preferredMargin
|
||||
|
||||
spacing: 0
|
||||
text: connectionFailed ? JamiStrings.reconnectionFailed :
|
||||
JamiStrings.reconnectDaemon
|
||||
font.pointSize: JamiTheme.textFontSize + 2
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
color: JamiTheme.textColor
|
||||
}
|
||||
|
||||
Text {
|
||||
id: daemonReconnectPopupTextLabel
|
||||
AnimatedImage {
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||
Layout.preferredHeight: 30
|
||||
Layout.preferredWidth: 30
|
||||
Layout.bottomMargin: preferredMargin
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
|
||||
Layout.topMargin: preferredMargin
|
||||
visible: !connectionFailed
|
||||
|
||||
text: connectionFailed ? JamiStrings.reconnectionFailed :
|
||||
JamiStrings.reconnectDaemon
|
||||
font.pointSize: JamiTheme.textFontSize + 2
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
color: JamiTheme.textColor
|
||||
source: JamiResources.jami_rolling_spinner_gif
|
||||
|
||||
Component.onCompleted: {
|
||||
contentRect.implicitWidth = JamiQmlUtils.getTextBoundingRect(
|
||||
font, text).width + 100
|
||||
}
|
||||
}
|
||||
playing: true
|
||||
paused: false
|
||||
mipmap: true
|
||||
smooth: true
|
||||
fillMode: Image.PreserveAspectFit
|
||||
}
|
||||
|
||||
AnimatedImage {
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||
Layout.preferredHeight: 30
|
||||
Layout.preferredWidth: 30
|
||||
Layout.bottomMargin: preferredMargin
|
||||
MaterialButton {
|
||||
id: btnOk
|
||||
|
||||
visible: !connectionFailed
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||
|
||||
source: JamiResources.jami_rolling_spinner_gif
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2
|
||||
|
||||
playing: true
|
||||
paused: false
|
||||
mipmap: true
|
||||
smooth: true
|
||||
fillMode: Image.PreserveAspectFit
|
||||
}
|
||||
visible: connectionFailed
|
||||
|
||||
MaterialButton {
|
||||
id: btnOk
|
||||
text: JamiStrings.optionOk
|
||||
color: JamiTheme.buttonTintedBlue
|
||||
hoveredColor: JamiTheme.buttonTintedBlueHovered
|
||||
pressedColor: JamiTheme.buttonTintedBluePressed
|
||||
outlined: true
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2
|
||||
|
||||
visible: connectionFailed
|
||||
|
||||
text: qsTr("Ok")
|
||||
color: JamiTheme.buttonTintedBlue
|
||||
hoveredColor: JamiTheme.buttonTintedBlueHovered
|
||||
pressedColor: JamiTheme.buttonTintedBluePressed
|
||||
outlined: true
|
||||
|
||||
onClicked: Qt.quit()
|
||||
}
|
||||
onClicked: Qt.quit()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@ import net.jami.Constants 1.1
|
|||
|
||||
import "../commoncomponents"
|
||||
|
||||
BaseDialog {
|
||||
BaseModalDialog {
|
||||
id: root
|
||||
|
||||
property bool isSIP: {
|
||||
|
@ -42,140 +42,131 @@ BaseDialog {
|
|||
|
||||
title: JamiStrings.deleteAccount
|
||||
|
||||
contentItem: Rectangle {
|
||||
id: deleteAccountContentRect
|
||||
width: JamiTheme.preferredDialogWidth
|
||||
height: JamiTheme.preferredDialogHeight
|
||||
|
||||
implicitWidth: JamiTheme.preferredDialogWidth
|
||||
implicitHeight: JamiTheme.preferredDialogHeight
|
||||
color: JamiTheme.secondaryBackgroundColor
|
||||
popupContent: ColumnLayout {
|
||||
id: deleteAccountContentColumnLayout
|
||||
|
||||
ColumnLayout {
|
||||
anchors.centerIn: parent
|
||||
anchors.fill: parent
|
||||
anchors.margins: JamiTheme.preferredMarginSize
|
||||
Label {
|
||||
id: labelDeletion
|
||||
|
||||
Label {
|
||||
id: labelDeletion
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: deleteAccountContentColumnLayout.width -
|
||||
JamiTheme.preferredMarginSize * 2
|
||||
|
||||
color: JamiTheme.textColor
|
||||
text: JamiStrings.confirmDeleteQuestion
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
font.kerning: true
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
|
||||
Label {
|
||||
id: labelBestId
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: deleteAccountContentColumnLayout.width -
|
||||
JamiTheme.preferredMarginSize * 2
|
||||
|
||||
color: JamiTheme.textColor
|
||||
text: CurrentAccount.bestName
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
font.kerning: true
|
||||
font.bold: true
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
|
||||
Label {
|
||||
id: labelAccountHash
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: deleteAccountContentColumnLayout.width -
|
||||
JamiTheme.preferredMarginSize * 2
|
||||
|
||||
color: JamiTheme.textColor
|
||||
text: CurrentAccount.uri
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
font.kerning: true
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
|
||||
Label {
|
||||
id: labelWarning
|
||||
|
||||
visible: !isSIP
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: deleteAccountContentColumnLayout.width -
|
||||
JamiTheme.preferredMarginSize * 2
|
||||
|
||||
text: JamiStrings.deleteAccountInfos
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
font.kerning: true
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
wrapMode: Text.Wrap
|
||||
|
||||
color: JamiTheme.redColor
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
spacing: 16
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
MaterialButton {
|
||||
id: btnDelete
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: deleteAccountContentRect.width -
|
||||
JamiTheme.preferredMarginSize * 2
|
||||
|
||||
color: JamiTheme.textColor
|
||||
text: JamiStrings.confirmDeleteQuestion
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
font.kerning: true
|
||||
color: JamiTheme.buttonTintedRed
|
||||
hoveredColor: JamiTheme.buttonTintedRedHovered
|
||||
pressedColor: JamiTheme.buttonTintedRedPressed
|
||||
outlined: true
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
text: JamiStrings.optionDelete
|
||||
|
||||
Label {
|
||||
id: labelBestId
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: deleteAccountContentRect.width -
|
||||
JamiTheme.preferredMarginSize * 2
|
||||
|
||||
color: JamiTheme.textColor
|
||||
text: CurrentAccount.bestName
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
font.kerning: true
|
||||
font.bold: true
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
|
||||
Label {
|
||||
id: labelAccountHash
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: deleteAccountContentRect.width -
|
||||
JamiTheme.preferredMarginSize * 2
|
||||
|
||||
color: JamiTheme.textColor
|
||||
text: CurrentAccount.uri
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
font.kerning: true
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
|
||||
Label {
|
||||
id: labelWarning
|
||||
|
||||
visible: !isSIP
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: deleteAccountContentRect.width -
|
||||
JamiTheme.preferredMarginSize * 2
|
||||
|
||||
text: JamiStrings.deleteAccountInfos
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
font.kerning: true
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
wrapMode: Text.Wrap
|
||||
|
||||
color: "red"
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
spacing: 16
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
MaterialButton {
|
||||
id: btnDelete
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
|
||||
color: JamiTheme.buttonTintedRed
|
||||
hoveredColor: JamiTheme.buttonTintedRedHovered
|
||||
pressedColor: JamiTheme.buttonTintedRedPressed
|
||||
outlined: true
|
||||
|
||||
text: qsTr("Delete")
|
||||
|
||||
onClicked: {
|
||||
AccountAdapter.deleteCurrentAccount()
|
||||
accepted()
|
||||
close()
|
||||
}
|
||||
onClicked: {
|
||||
AccountAdapter.deleteCurrentAccount()
|
||||
accepted()
|
||||
close()
|
||||
}
|
||||
}
|
||||
|
||||
MaterialButton {
|
||||
id: btnCancel
|
||||
MaterialButton {
|
||||
id: btnCancel
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
|
||||
color: JamiTheme.buttonTintedBlack
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
color: JamiTheme.buttonTintedBlack
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
|
||||
text: qsTr("Cancel")
|
||||
text: JamiStrings.optionCancel
|
||||
|
||||
onClicked: {
|
||||
close()
|
||||
}
|
||||
}
|
||||
onClicked: close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ import net.jami.Adapters 1.1
|
|||
import net.jami.Constants 1.1
|
||||
|
||||
// PasswordDialog for changing password and exporting account
|
||||
BaseDialog {
|
||||
BaseModalDialog {
|
||||
id: root
|
||||
|
||||
enum PasswordEnteringPurpose {
|
||||
|
@ -40,52 +40,12 @@ BaseDialog {
|
|||
function openDialog(purposeIn, exportPathIn = "") {
|
||||
purpose = purposeIn
|
||||
path = exportPathIn
|
||||
currentPasswordEdit.clear()
|
||||
passwordEdit.clear()
|
||||
confirmPasswordEdit.clear()
|
||||
validatePassword()
|
||||
|
||||
open()
|
||||
}
|
||||
|
||||
function validatePassword() {
|
||||
switch (purpose) {
|
||||
case PasswordDialog.ExportAccount:
|
||||
btnConfirm.enabled = currentPasswordEdit.length > 0
|
||||
break
|
||||
case PasswordDialog.SetPassword:
|
||||
btnConfirm.enabled = passwordEdit.length > 0 &&
|
||||
passwordEdit.text === confirmPasswordEdit.text
|
||||
break
|
||||
default:
|
||||
btnConfirm.enabled = currentPasswordEdit.length > 0 &&
|
||||
passwordEdit.text === confirmPasswordEdit.text
|
||||
}
|
||||
}
|
||||
|
||||
function exportAccountQML() {
|
||||
var success = false
|
||||
if (path.length > 0) {
|
||||
success = AccountAdapter.exportToFile(
|
||||
LRCInstance.currentAccountId,
|
||||
path,
|
||||
currentPasswordEdit.text)
|
||||
}
|
||||
doneSignal(success, purpose)
|
||||
close()
|
||||
}
|
||||
|
||||
function savePasswordQML() {
|
||||
var success = false
|
||||
success = AccountAdapter.savePassword(
|
||||
LRCInstance.currentAccountId,
|
||||
currentPasswordEdit.text,
|
||||
passwordEdit.text)
|
||||
if (success) {
|
||||
AccountAdapter.setArchiveHasPassword(passwordEdit.text.length !== 0)
|
||||
}
|
||||
doneSignal(success, purpose)
|
||||
close()
|
||||
}
|
||||
height: JamiTheme.preferredDialogHeight
|
||||
width: JamiTheme.preferredDialogWidth
|
||||
|
||||
title: {
|
||||
switch(purpose){
|
||||
|
@ -98,131 +58,161 @@ BaseDialog {
|
|||
}
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: timerToOperate
|
||||
popupContent: ColumnLayout {
|
||||
id: popupContentColumnLayout
|
||||
|
||||
interval: 200
|
||||
repeat: false
|
||||
spacing: 0
|
||||
|
||||
onTriggered: {
|
||||
if (purpose === PasswordDialog.ExportAccount) {
|
||||
exportAccountQML()
|
||||
} else {
|
||||
savePasswordQML()
|
||||
function validatePassword() {
|
||||
switch (purpose) {
|
||||
case PasswordDialog.ExportAccount:
|
||||
btnConfirm.enabled = currentPasswordEdit.length > 0
|
||||
break
|
||||
case PasswordDialog.SetPassword:
|
||||
btnConfirm.enabled = passwordEdit.length > 0 &&
|
||||
passwordEdit.text === confirmPasswordEdit.text
|
||||
break
|
||||
default:
|
||||
btnConfirm.enabled = currentPasswordEdit.length > 0 &&
|
||||
passwordEdit.text === confirmPasswordEdit.text
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
contentItem: Rectangle {
|
||||
id: passwordDialogContentRect
|
||||
function exportAccountQML() {
|
||||
var success = false
|
||||
if (path.length > 0) {
|
||||
success = AccountAdapter.exportToFile(
|
||||
LRCInstance.currentAccountId,
|
||||
path,
|
||||
currentPasswordEdit.text)
|
||||
}
|
||||
doneSignal(success, purpose)
|
||||
close()
|
||||
}
|
||||
|
||||
implicitWidth: JamiTheme.preferredDialogWidth
|
||||
implicitHeight: JamiTheme.preferredDialogHeight
|
||||
color: JamiTheme.secondaryBackgroundColor
|
||||
function savePasswordQML() {
|
||||
var success = false
|
||||
success = AccountAdapter.savePassword(
|
||||
LRCInstance.currentAccountId,
|
||||
currentPasswordEdit.text,
|
||||
passwordEdit.text)
|
||||
if (success) {
|
||||
AccountAdapter.setArchiveHasPassword(passwordEdit.text.length !== 0)
|
||||
}
|
||||
doneSignal(success, purpose)
|
||||
close()
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
anchors.centerIn: parent
|
||||
anchors.fill: parent
|
||||
anchors.margins: JamiTheme.preferredMarginSize
|
||||
onVisibleChanged: validatePassword()
|
||||
|
||||
MaterialLineEdit {
|
||||
id: currentPasswordEdit
|
||||
Timer {
|
||||
id: timerToOperate
|
||||
|
||||
interval: 200
|
||||
repeat: false
|
||||
|
||||
onTriggered: {
|
||||
if (purpose === PasswordDialog.ExportAccount) {
|
||||
popupContentColumnLayout.exportAccountQML()
|
||||
} else {
|
||||
popupContentColumnLayout.savePasswordQML()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MaterialLineEdit {
|
||||
id: currentPasswordEdit
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: JamiTheme.preferredFieldWidth
|
||||
Layout.preferredHeight: visible ? 48 : 0
|
||||
|
||||
visible: purpose === PasswordDialog.ChangePassword ||
|
||||
purpose === PasswordDialog.ExportAccount
|
||||
echoMode: TextInput.Password
|
||||
placeholderText: JamiStrings.enterCurrentPassword
|
||||
|
||||
onVisibleChanged: clear()
|
||||
|
||||
onTextChanged: popupContentColumnLayout.validatePassword()
|
||||
}
|
||||
|
||||
MaterialLineEdit {
|
||||
id: passwordEdit
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: JamiTheme.preferredFieldWidth
|
||||
Layout.preferredHeight: visible ? 48 : 0
|
||||
|
||||
visible: purpose === PasswordDialog.ChangePassword ||
|
||||
purpose === PasswordDialog.SetPassword
|
||||
echoMode: TextInput.Password
|
||||
placeholderText: JamiStrings.enterNewPassword
|
||||
|
||||
onVisibleChanged: clear()
|
||||
|
||||
onTextChanged: popupContentColumnLayout.validatePassword()
|
||||
}
|
||||
|
||||
MaterialLineEdit {
|
||||
id: confirmPasswordEdit
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: JamiTheme.preferredFieldWidth
|
||||
Layout.preferredHeight: visible ? 48 : 0
|
||||
|
||||
visible: purpose === PasswordDialog.ChangePassword ||
|
||||
purpose === PasswordDialog.SetPassword
|
||||
echoMode: TextInput.Password
|
||||
placeholderText: JamiStrings.confirmNewPassword
|
||||
|
||||
onVisibleChanged: clear()
|
||||
|
||||
onTextChanged: popupContentColumnLayout.validatePassword()
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
spacing: 16
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
MaterialButton {
|
||||
id: btnConfirm
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: JamiTheme.preferredFieldWidth
|
||||
Layout.preferredHeight: visible ? 48 : 0
|
||||
|
||||
visible: purpose === PasswordDialog.ChangePassword ||
|
||||
purpose === PasswordDialog.ExportAccount
|
||||
echoMode: TextInput.Password
|
||||
placeholderText: JamiStrings.enterCurrentPassword
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
|
||||
onTextChanged: {
|
||||
validatePassword()
|
||||
color: enabled? JamiTheme.buttonTintedBlack : JamiTheme.buttonTintedGrey
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
enabled: purpose === PasswordDialog.SetPassword
|
||||
|
||||
text: (purpose === PasswordDialog.ExportAccount) ? JamiStrings.exportAccount :
|
||||
JamiStrings.change
|
||||
|
||||
onClicked: {
|
||||
btnConfirm.enabled = false
|
||||
timerToOperate.restart()
|
||||
}
|
||||
}
|
||||
|
||||
MaterialLineEdit {
|
||||
id: passwordEdit
|
||||
MaterialButton {
|
||||
id: btnCancel
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: JamiTheme.preferredFieldWidth
|
||||
Layout.preferredHeight: visible ? 48 : 0
|
||||
|
||||
visible: purpose === PasswordDialog.ChangePassword ||
|
||||
purpose === PasswordDialog.SetPassword
|
||||
echoMode: TextInput.Password
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
|
||||
placeholderText: JamiStrings.enterNewPassword
|
||||
color: JamiTheme.buttonTintedBlack
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
|
||||
onTextChanged: {
|
||||
validatePassword()
|
||||
}
|
||||
}
|
||||
text: JamiStrings.optionCancel
|
||||
|
||||
MaterialLineEdit {
|
||||
id: confirmPasswordEdit
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: JamiTheme.preferredFieldWidth
|
||||
Layout.preferredHeight: visible ? 48 : 0
|
||||
|
||||
visible: purpose === PasswordDialog.ChangePassword ||
|
||||
purpose === PasswordDialog.SetPassword
|
||||
echoMode: TextInput.Password
|
||||
|
||||
placeholderText: JamiStrings.confirmNewPassword
|
||||
|
||||
onTextChanged: {
|
||||
validatePassword()
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
spacing: 16
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
MaterialButton {
|
||||
id: btnConfirm
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
|
||||
color: enabled? JamiTheme.buttonTintedBlack : JamiTheme.buttonTintedGrey
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
enabled: purpose === PasswordDialog.SetPassword
|
||||
|
||||
text: (purpose === PasswordDialog.ExportAccount) ? JamiStrings.exportAccount :
|
||||
JamiStrings.change
|
||||
|
||||
onClicked: {
|
||||
btnConfirm.enabled = false
|
||||
timerToOperate.restart()
|
||||
}
|
||||
}
|
||||
|
||||
MaterialButton {
|
||||
id: btnCancel
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
|
||||
color: JamiTheme.buttonTintedBlack
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
|
||||
text: qsTr("Cancel")
|
||||
|
||||
onClicked: {
|
||||
close()
|
||||
}
|
||||
}
|
||||
onClicked: close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ import QtQuick.Layouts
|
|||
import net.jami.Adapters 1.1
|
||||
import net.jami.Constants 1.1
|
||||
|
||||
BaseDialog {
|
||||
BaseModalDialog {
|
||||
id: root
|
||||
|
||||
// TODO: make MaterialButton ButtonStyle
|
||||
|
@ -36,8 +36,8 @@ BaseDialog {
|
|||
property var buttonTitles: []
|
||||
property var buttonCallBacks: []
|
||||
property var buttonStyles: []
|
||||
property alias infoText: infoText.text
|
||||
property alias innerContentData: innerContent.data
|
||||
property string infoText: ""
|
||||
property var innerContentData: []
|
||||
|
||||
function openWithParameters(title, info = "") {
|
||||
root.title = title
|
||||
|
@ -46,94 +46,89 @@ BaseDialog {
|
|||
open()
|
||||
}
|
||||
|
||||
contentItem: Rectangle {
|
||||
id: container
|
||||
width: Math.max(JamiTheme.preferredDialogWidth,
|
||||
buttonTitles.length * (JamiTheme.preferredFieldWidth / 2
|
||||
+ JamiTheme.preferredMarginSize))
|
||||
height: JamiTheme.preferredDialogHeight / 2 - JamiTheme.preferredMarginSize
|
||||
|
||||
implicitWidth: Math.max(JamiTheme.preferredDialogWidth,
|
||||
buttonTitles.length * (JamiTheme.preferredFieldWidth / 2
|
||||
+ JamiTheme.preferredMarginSize))
|
||||
implicitHeight: JamiTheme.preferredDialogHeight / 2 - JamiTheme.preferredMarginSize
|
||||
popupContent: ColumnLayout {
|
||||
Label {
|
||||
id: infoTextLabel
|
||||
|
||||
color: JamiTheme.secondaryBackgroundColor
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.preferredWidth: JamiTheme.preferredDialogWidth - JamiTheme.preferredMarginSize
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
text: infoText
|
||||
font.pointSize: JamiTheme.menuFontSize - 2
|
||||
wrapMode: Text.WordWrap
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
color: JamiTheme.textColor
|
||||
}
|
||||
|
||||
Label {
|
||||
id: infoText
|
||||
Item {
|
||||
id: innerContent
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.preferredWidth: JamiTheme.preferredDialogWidth - JamiTheme.preferredMarginSize
|
||||
Layout.topMargin: JamiTheme.preferredMarginSize
|
||||
Layout.topMargin: JamiTheme.preferredMarginSize / 2
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
|
||||
font.pointSize: JamiTheme.menuFontSize - 2
|
||||
wrapMode: Text.WordWrap
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
color: JamiTheme.textColor
|
||||
}
|
||||
data: innerContentData
|
||||
}
|
||||
|
||||
Item {
|
||||
id: innerContent
|
||||
Layout.topMargin: JamiTheme.preferredMarginSize / 2
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
RowLayout {
|
||||
spacing: JamiTheme.preferredMarginSize
|
||||
|
||||
RowLayout {
|
||||
spacing: JamiTheme.preferredMarginSize
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||
Layout.bottomMargin: JamiTheme.preferredMarginSize
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||
Layout.bottomMargin: JamiTheme.preferredMarginSize
|
||||
Repeater {
|
||||
model: buttonTitles.length
|
||||
MaterialButton {
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
|
||||
Repeater {
|
||||
model: buttonTitles.length
|
||||
MaterialButton {
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
|
||||
color: {
|
||||
switch(buttonStyles[modelData]) {
|
||||
case SimpleMessageDialog.ButtonStyle.TintedBlue:
|
||||
return JamiTheme.buttonTintedBlue
|
||||
case SimpleMessageDialog.ButtonStyle.TintedBlack:
|
||||
return JamiTheme.buttonTintedBlack
|
||||
case SimpleMessageDialog.ButtonStyle.TintedRed:
|
||||
return JamiTheme.buttonTintedRed
|
||||
}
|
||||
color: {
|
||||
switch(buttonStyles[modelData]) {
|
||||
case SimpleMessageDialog.ButtonStyle.TintedBlue:
|
||||
return JamiTheme.buttonTintedBlue
|
||||
case SimpleMessageDialog.ButtonStyle.TintedBlack:
|
||||
return JamiTheme.buttonTintedBlack
|
||||
case SimpleMessageDialog.ButtonStyle.TintedRed:
|
||||
return JamiTheme.buttonTintedRed
|
||||
}
|
||||
hoveredColor: {
|
||||
switch(buttonStyles[modelData]) {
|
||||
case SimpleMessageDialog.ButtonStyle.TintedBlue:
|
||||
return JamiTheme.buttonTintedBlueHovered
|
||||
case SimpleMessageDialog.ButtonStyle.TintedBlack:
|
||||
return JamiTheme.buttonTintedBlackHovered
|
||||
case SimpleMessageDialog.ButtonStyle.TintedRed:
|
||||
return JamiTheme.buttonTintedRedHovered
|
||||
}
|
||||
}
|
||||
hoveredColor: {
|
||||
switch(buttonStyles[modelData]) {
|
||||
case SimpleMessageDialog.ButtonStyle.TintedBlue:
|
||||
return JamiTheme.buttonTintedBlueHovered
|
||||
case SimpleMessageDialog.ButtonStyle.TintedBlack:
|
||||
return JamiTheme.buttonTintedBlackHovered
|
||||
case SimpleMessageDialog.ButtonStyle.TintedRed:
|
||||
return JamiTheme.buttonTintedRedHovered
|
||||
}
|
||||
pressedColor: {
|
||||
switch(buttonStyles[modelData]) {
|
||||
case SimpleMessageDialog.ButtonStyle.TintedBlue:
|
||||
return JamiTheme.buttonTintedBluePressed
|
||||
case SimpleMessageDialog.ButtonStyle.TintedBlack:
|
||||
return JamiTheme.buttonTintedBlackPressed
|
||||
case SimpleMessageDialog.ButtonStyle.TintedRed:
|
||||
return JamiTheme.buttonTintedRedPressed
|
||||
}
|
||||
}
|
||||
pressedColor: {
|
||||
switch(buttonStyles[modelData]) {
|
||||
case SimpleMessageDialog.ButtonStyle.TintedBlue:
|
||||
return JamiTheme.buttonTintedBluePressed
|
||||
case SimpleMessageDialog.ButtonStyle.TintedBlack:
|
||||
return JamiTheme.buttonTintedBlackPressed
|
||||
case SimpleMessageDialog.ButtonStyle.TintedRed:
|
||||
return JamiTheme.buttonTintedRedPressed
|
||||
}
|
||||
outlined: true
|
||||
}
|
||||
outlined: true
|
||||
|
||||
text: buttonTitles[modelData]
|
||||
text: buttonTitles[modelData]
|
||||
|
||||
onClicked: {
|
||||
if (buttonCallBacks[modelData])
|
||||
buttonCallBacks[modelData]()
|
||||
close()
|
||||
}
|
||||
onClicked: {
|
||||
if (buttonCallBacks[modelData])
|
||||
buttonCallBacks[modelData]()
|
||||
close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -544,6 +544,7 @@ Item {
|
|||
property string optionCancel: qsTr("Cancel")
|
||||
property string optionUpgrade: qsTr("Upgrade")
|
||||
property string optionLater: qsTr("Later")
|
||||
property string optionDelete: qsTr("Delete")
|
||||
|
||||
// Conference moderation
|
||||
property string setModerator: qsTr("Set moderator")
|
||||
|
|
|
@ -54,6 +54,8 @@ Item {
|
|||
property color editBackgroundColor: darkTheme ? "#373737" : lightGrey_
|
||||
property color textColor: primaryForegroundColor
|
||||
property color tabbarBorderColor: darkTheme ? blackColor : "#e3e3e3"
|
||||
property color popupOverlayColor: darkTheme ? Qt.rgba(255, 255, 255, 0.22) :
|
||||
Qt.rgba(0, 0, 0, 0.33)
|
||||
|
||||
// Side panel
|
||||
property color presenceGreen: "#4cd964"
|
||||
|
@ -206,6 +208,7 @@ Item {
|
|||
property int smartListTransitionDuration: 120
|
||||
|
||||
// Sizes
|
||||
property real qrCodeImageSize: 256
|
||||
property real splitViewHandlePreferredWidth: 4
|
||||
property real indicatorFontSize: 6
|
||||
property real tinyFontSize: 7
|
||||
|
|
|
@ -26,221 +26,219 @@ import net.jami.Constants 1.1
|
|||
|
||||
import "../../commoncomponents"
|
||||
|
||||
ModalPopup {
|
||||
BaseModalDialog {
|
||||
id: root
|
||||
|
||||
property alias preferredHeight: aboutPopUpContentRectColumnLayout.implicitHeight
|
||||
property int preferredHeight: 0
|
||||
|
||||
contentItem: Rectangle {
|
||||
id: contentRect
|
||||
width: 400
|
||||
|
||||
implicitWidth: 400
|
||||
color: JamiTheme.backgroundColor
|
||||
onPopupContentLoadStatusChanged: {
|
||||
if (popupContentLoadStatus === Loader.Ready)
|
||||
preferredHeight = Qt.binding(function() {
|
||||
return popupContentLoader.item.contentHeight
|
||||
})
|
||||
}
|
||||
|
||||
JamiFlickable {
|
||||
id: aboutPopUpScrollView
|
||||
popupContent: JamiFlickable {
|
||||
id: aboutPopUpScrollView
|
||||
|
||||
anchors.fill: parent
|
||||
contentHeight: aboutPopUpContentRectColumnLayout.implicitHeight
|
||||
|
||||
contentHeight: aboutPopUpContentRectColumnLayout.implicitHeight
|
||||
ColumnLayout {
|
||||
id: aboutPopUpContentRectColumnLayout
|
||||
|
||||
ColumnLayout {
|
||||
id: aboutPopUpContentRectColumnLayout
|
||||
width: Math.max(root.width, implicitWidth)
|
||||
height: Math.max(aboutPopUpScrollView.height, implicitHeight)
|
||||
|
||||
width: Math.max(root.width, implicitWidth)
|
||||
height: Math.max(aboutPopUpScrollView.height, implicitHeight)
|
||||
ResponsiveImage {
|
||||
id: aboutPopUPJamiLogoImage
|
||||
|
||||
ResponsiveImage {
|
||||
id: aboutPopUPJamiLogoImage
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.topMargin: JamiTheme.preferredMarginSize
|
||||
Layout.preferredWidth: 250
|
||||
Layout.preferredHeight: 88
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.topMargin: JamiTheme.preferredMarginSize
|
||||
Layout.preferredWidth: 250
|
||||
Layout.preferredHeight: 88
|
||||
source: JamiTheme.darkTheme ?
|
||||
JamiResources.logo_jami_standard_coul_white_svg :
|
||||
JamiResources.logo_jami_standard_coul_svg
|
||||
}
|
||||
|
||||
source: JamiTheme.darkTheme ?
|
||||
JamiResources.logo_jami_standard_coul_white_svg :
|
||||
JamiResources.logo_jami_standard_coul_svg
|
||||
MaterialLineEdit {
|
||||
id: jamiVersionText
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.preferredWidth: aboutPopUpScrollView.width
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
|
||||
padding: 0
|
||||
readOnly: true
|
||||
selectByMouse: true
|
||||
|
||||
text: JamiStrings.version + ": " + UtilsAdapter.getVersionStr()
|
||||
color: JamiTheme.textColor
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
||||
Label {
|
||||
id: jamiSlogansText
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.preferredWidth: aboutPopUpScrollView.width
|
||||
Layout.preferredHeight: textMetricsjamiSlogansText.boundingRect.height
|
||||
Layout.topMargin: 5
|
||||
|
||||
wrapMode: Text.WordWrap
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
text: textMetricsjamiSlogansText.text
|
||||
color: JamiTheme.textColor
|
||||
|
||||
TextMetrics {
|
||||
id: textMetricsjamiSlogansText
|
||||
font: jamiSlogansText.font
|
||||
text: JamiStrings.slogan
|
||||
}
|
||||
}
|
||||
|
||||
Label {
|
||||
id: jamiDeclarationText
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.preferredWidth: aboutPopUpScrollView.width
|
||||
Layout.preferredHeight: 40
|
||||
Layout.topMargin: 5
|
||||
|
||||
wrapMode: Text.WordWrap
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
color: JamiTheme.textColor
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
// TextMetrics does not work for multi-line.
|
||||
text: JamiStrings.declaration
|
||||
}
|
||||
|
||||
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
|
||||
color: JamiTheme.textColor
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
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>'
|
||||
}
|
||||
|
||||
MaterialLineEdit {
|
||||
id: jamiVersionText
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.preferredWidth: contentRect.width
|
||||
// We don't want to eat clicks on the Text.
|
||||
acceptedButtons: Qt.NoButton
|
||||
cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
|
||||
}
|
||||
}
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
Label {
|
||||
id: jamiDeclarationYearText
|
||||
|
||||
padding: 0
|
||||
readOnly: true
|
||||
selectByMouse: true
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.preferredWidth: aboutPopUpScrollView.width
|
||||
Layout.preferredHeight: textMetricsjamiDeclarationYearText.boundingRect.height
|
||||
Layout.bottomMargin: 5
|
||||
|
||||
text: JamiStrings.version + ": " + UtilsAdapter.getVersionStr()
|
||||
color: JamiTheme.textColor
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
color: JamiTheme.textColor
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
text: textMetricsjamiDeclarationYearText.text
|
||||
|
||||
TextMetrics {
|
||||
id: textMetricsjamiDeclarationYearText
|
||||
font: jamiDeclarationYearText.font
|
||||
text: JamiStrings.companyDeclarationYear
|
||||
}
|
||||
}
|
||||
|
||||
Label {
|
||||
id: jamiNoneWarrantyHyperText
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.preferredWidth: 300
|
||||
Layout.preferredHeight: textMetricsjamiNoneWarrantyHyperText.boundingRect.height * 2
|
||||
Layout.bottomMargin: 10
|
||||
|
||||
wrapMode: Text.WordWrap
|
||||
font.pointSize: JamiTheme.tinyFontSize
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
color: JamiTheme.textColor
|
||||
|
||||
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>'
|
||||
}
|
||||
|
||||
Label {
|
||||
id: jamiSlogansText
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.preferredWidth: contentRect.width
|
||||
Layout.preferredHeight: textMetricsjamiSlogansText.boundingRect.height
|
||||
Layout.topMargin: 5
|
||||
|
||||
wrapMode: Text.WordWrap
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
text: textMetricsjamiSlogansText.text
|
||||
color: JamiTheme.textColor
|
||||
|
||||
TextMetrics {
|
||||
id: textMetricsjamiSlogansText
|
||||
font: jamiSlogansText.font
|
||||
text: JamiStrings.slogan
|
||||
}
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
acceptedButtons: Qt.NoButton
|
||||
cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
|
||||
}
|
||||
}
|
||||
|
||||
Label {
|
||||
id: jamiDeclarationText
|
||||
ProjectCreditsScrollView {
|
||||
id: projectCreditsScrollView
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.preferredWidth: contentRect.width
|
||||
Layout.preferredHeight: 40
|
||||
Layout.topMargin: 5
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.preferredWidth: aboutPopUpScrollView.width - JamiTheme.preferredMarginSize * 2
|
||||
Layout.preferredHeight: 128
|
||||
Layout.margins: JamiTheme.preferredMarginSize
|
||||
}
|
||||
|
||||
wrapMode: Text.WordWrap
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
color: JamiTheme.textColor
|
||||
MaterialButton {
|
||||
id: btnClose
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.bottomMargin: JamiTheme.preferredMarginSize
|
||||
|
||||
// TextMetrics does not work for multi-line.
|
||||
text: JamiStrings.declaration
|
||||
}
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
|
||||
Label {
|
||||
id: jamiDeclarationHyperText
|
||||
text: JamiStrings.close
|
||||
color: enabled ? JamiTheme.buttonTintedBlack : JamiTheme.buttonTintedGrey
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
|
||||
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
|
||||
color: JamiTheme.textColor
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
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: contentRect.width
|
||||
Layout.preferredHeight: textMetricsjamiDeclarationYearText.boundingRect.height
|
||||
Layout.bottomMargin: 5
|
||||
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
color: JamiTheme.textColor
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
text: textMetricsjamiDeclarationYearText.text
|
||||
|
||||
TextMetrics {
|
||||
id: textMetricsjamiDeclarationYearText
|
||||
font: jamiDeclarationYearText.font
|
||||
text: JamiStrings.companyDeclarationYear
|
||||
}
|
||||
}
|
||||
|
||||
Label {
|
||||
id: jamiNoneWarrantyHyperText
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.preferredWidth: 300
|
||||
Layout.preferredHeight: textMetricsjamiNoneWarrantyHyperText.boundingRect.height * 2
|
||||
Layout.bottomMargin: 10
|
||||
|
||||
wrapMode: Text.WordWrap
|
||||
font.pointSize: JamiTheme.tinyFontSize
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
color: JamiTheme.textColor
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
ProjectCreditsScrollView {
|
||||
id: projectCreditsScrollView
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.preferredWidth: contentRect.width - JamiTheme.preferredMarginSize * 2
|
||||
Layout.preferredHeight: 128
|
||||
Layout.margins: JamiTheme.preferredMarginSize
|
||||
}
|
||||
|
||||
MaterialButton {
|
||||
id: btnClose
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.bottomMargin: JamiTheme.preferredMarginSize
|
||||
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
|
||||
text: qsTr("Close")
|
||||
color: enabled ? JamiTheme.buttonTintedBlack : JamiTheme.buttonTintedGrey
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
|
||||
onClicked: {
|
||||
close()
|
||||
}
|
||||
}
|
||||
onClicked: close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ import net.jami.Constants 1.1
|
|||
|
||||
import "../../commoncomponents"
|
||||
|
||||
BaseDialog {
|
||||
BaseModalDialog {
|
||||
id: root
|
||||
|
||||
property string convId
|
||||
|
@ -35,13 +35,14 @@ BaseDialog {
|
|||
|
||||
property int preferredImgSize: 80
|
||||
|
||||
contentItem: Rectangle {
|
||||
width: 480
|
||||
height: 480
|
||||
|
||||
popupContent: Rectangle {
|
||||
id: userProfileContentRect
|
||||
|
||||
implicitWidth: 480
|
||||
implicitHeight: 400
|
||||
|
||||
color: JamiTheme.backgroundColor
|
||||
radius: JamiTheme.modalPopupRadius
|
||||
|
||||
GridLayout {
|
||||
id: userProfileDialogLayout
|
||||
|
@ -143,7 +144,7 @@ BaseDialog {
|
|||
id: textMetricsContactDisplayNameText
|
||||
font: contactDisplayName.font
|
||||
text: registeredNameText
|
||||
elideWidth: userProfileContentRect.width-200
|
||||
elideWidth: userProfileContentRect.width - 200
|
||||
elide: Qt.ElideMiddle
|
||||
}
|
||||
}
|
||||
|
@ -236,9 +237,7 @@ BaseDialog {
|
|||
|
||||
text: JamiStrings.close
|
||||
|
||||
onClicked: {
|
||||
close()
|
||||
}
|
||||
onClicked: close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,33 +19,28 @@
|
|||
import QtQuick
|
||||
|
||||
import net.jami.Adapters 1.1
|
||||
import net.jami.Constants 1.1
|
||||
|
||||
import "../../commoncomponents"
|
||||
|
||||
ModalPopup {
|
||||
BaseModalDialog {
|
||||
id: root
|
||||
|
||||
modal: true
|
||||
|
||||
//Content height + margin.
|
||||
property int size: userQrImage.height + 30
|
||||
property int size: JamiTheme.qrCodeImageSize + 30
|
||||
|
||||
width: size
|
||||
height: size
|
||||
|
||||
Item {
|
||||
anchors.fill: parent
|
||||
backgroundColor: JamiTheme.whiteColor
|
||||
|
||||
Image {
|
||||
id: userQrImage
|
||||
popupContentPreferredHeight: JamiTheme.qrCodeImageSize
|
||||
popupContentPreferredWidth: JamiTheme.qrCodeImageSize
|
||||
popupContent: Image {
|
||||
id: userQrImage
|
||||
|
||||
anchors.centerIn: parent
|
||||
|
||||
width: 256
|
||||
height: 256
|
||||
smooth: false
|
||||
|
||||
fillMode: Image.PreserveAspectFit
|
||||
source: "image://qrImage/account_" + CurrentAccount.id
|
||||
}
|
||||
smooth: false
|
||||
fillMode: Image.PreserveAspectFit
|
||||
source: "image://qrImage/account_" + CurrentAccount.id
|
||||
}
|
||||
}
|
||||
|
|
|
@ -101,7 +101,7 @@ Rectangle {
|
|||
PasswordDialog {
|
||||
id: passwordDialog
|
||||
|
||||
onDoneSignal: {
|
||||
onDoneSignal: function (success, currentPurpose) {
|
||||
var title = success ? qsTr("Success") : qsTr("Error")
|
||||
|
||||
var info
|
||||
|
|
|
@ -27,329 +27,326 @@ import net.jami.Constants 1.1
|
|||
|
||||
import "../../commoncomponents"
|
||||
|
||||
BaseDialog {
|
||||
BaseModalDialog {
|
||||
id: root
|
||||
|
||||
signal accepted
|
||||
|
||||
function openLinkDeviceDialog() {
|
||||
infoLabel.text = JamiStrings.pinTimerInfos
|
||||
passwordEdit.clear()
|
||||
|
||||
open()
|
||||
|
||||
if(AccountAdapter.hasPassword()) {
|
||||
stackedWidget.currentIndex = enterPasswordPage.pageIndex
|
||||
passwordEdit.forceActiveFocus()
|
||||
} else {
|
||||
setGeneratingPage()
|
||||
}
|
||||
}
|
||||
|
||||
function setGeneratingPage() {
|
||||
if(passwordEdit.length === 0 && AccountAdapter.hasPassword()){
|
||||
setExportPage(NameDirectory.ExportOnRingStatus.WRONG_PASSWORD, "")
|
||||
return
|
||||
}
|
||||
|
||||
stackedWidget.currentIndex = exportingSpinnerPage.pageIndex
|
||||
spinnerMovie.playing = true
|
||||
|
||||
timerForExport.restart()
|
||||
}
|
||||
|
||||
function setExportPage(status, pin) {
|
||||
if (status === NameDirectory.ExportOnRingStatus.SUCCESS) {
|
||||
infoLabel.success = true
|
||||
infoLabelsRowLayout.visible = true
|
||||
infoLabel.text = JamiStrings.pinTimerInfos
|
||||
exportedPIN.text = pin
|
||||
} else {
|
||||
infoLabel.success = false
|
||||
infoLabelsRowLayout.visible = false
|
||||
|
||||
switch(status) {
|
||||
case NameDirectory.ExportOnRingStatus.WRONG_PASSWORD:
|
||||
infoLabel.text = JamiStrings.incorrectPassword
|
||||
break
|
||||
case NameDirectory.ExportOnRingStatus.NETWORK_ERROR:
|
||||
infoLabel.text = JamiStrings.linkDeviceNetWorkError
|
||||
break
|
||||
case NameDirectory.ExportOnRingStatus.INVALID:
|
||||
infoLabel.text = JamiStrings.somethingWentWrong
|
||||
break
|
||||
}
|
||||
}
|
||||
stackedWidget.currentIndex = exportingInfoPage.pageIndex
|
||||
}
|
||||
|
||||
title: JamiStrings.addDevice
|
||||
|
||||
Timer{
|
||||
id: timerForExport
|
||||
width: JamiTheme.preferredDialogWidth
|
||||
height: JamiTheme.preferredDialogHeight
|
||||
|
||||
repeat: false
|
||||
interval: 200
|
||||
popupContent: StackLayout {
|
||||
id: stackedWidget
|
||||
|
||||
onTriggered: {
|
||||
AccountAdapter.model.exportOnRing(LRCInstance.currentAccountId,
|
||||
passwordEdit.text)
|
||||
function setGeneratingPage() {
|
||||
if(passwordEdit.length === 0 && AccountAdapter.hasPassword()){
|
||||
setExportPage(NameDirectory.ExportOnRingStatus.WRONG_PASSWORD, "")
|
||||
return
|
||||
}
|
||||
|
||||
stackedWidget.currentIndex = exportingSpinnerPage.pageIndex
|
||||
spinnerMovie.playing = true
|
||||
|
||||
timerForExport.restart()
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: NameDirectory
|
||||
function setExportPage(status, pin) {
|
||||
if (status === NameDirectory.ExportOnRingStatus.SUCCESS) {
|
||||
infoLabel.success = true
|
||||
infoLabelsRowLayout.visible = true
|
||||
infoLabel.text = JamiStrings.pinTimerInfos
|
||||
exportedPIN.text = pin
|
||||
} else {
|
||||
infoLabel.success = false
|
||||
infoLabelsRowLayout.visible = false
|
||||
|
||||
function onExportOnRingEnded(status, pin) {
|
||||
setExportPage(status, pin)
|
||||
switch(status) {
|
||||
case NameDirectory.ExportOnRingStatus.WRONG_PASSWORD:
|
||||
infoLabel.text = JamiStrings.incorrectPassword
|
||||
break
|
||||
case NameDirectory.ExportOnRingStatus.NETWORK_ERROR:
|
||||
infoLabel.text = JamiStrings.linkDeviceNetWorkError
|
||||
break
|
||||
case NameDirectory.ExportOnRingStatus.INVALID:
|
||||
infoLabel.text = JamiStrings.somethingWentWrong
|
||||
break
|
||||
}
|
||||
}
|
||||
stackedWidget.currentIndex = exportingInfoPage.pageIndex
|
||||
}
|
||||
}
|
||||
|
||||
contentItem: Rectangle {
|
||||
id: linkDeviceContentRect
|
||||
Timer{
|
||||
id: timerForExport
|
||||
|
||||
color: JamiTheme.secondaryBackgroundColor
|
||||
implicitWidth: JamiTheme.preferredDialogWidth
|
||||
implicitHeight: JamiTheme.preferredDialogHeight
|
||||
repeat: false
|
||||
interval: 200
|
||||
|
||||
StackLayout {
|
||||
id: stackedWidget
|
||||
onTriggered: {
|
||||
AccountAdapter.model.exportOnRing(LRCInstance.currentAccountId,
|
||||
passwordEdit.text)
|
||||
}
|
||||
}
|
||||
|
||||
anchors.centerIn: parent
|
||||
anchors.fill: parent
|
||||
anchors.margins: JamiTheme.preferredMarginSize
|
||||
Connections {
|
||||
target: NameDirectory
|
||||
|
||||
// Index = 0
|
||||
Item {
|
||||
id: enterPasswordPage
|
||||
function onExportOnRingEnded(status, pin) {
|
||||
stackedWidget.setExportPage(status, pin)
|
||||
}
|
||||
}
|
||||
|
||||
readonly property int pageIndex: 0
|
||||
onVisibleChanged: {
|
||||
if (visible) {
|
||||
infoLabel.text = JamiStrings.pinTimerInfos
|
||||
passwordEdit.clear()
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
if(AccountAdapter.hasPassword()) {
|
||||
stackedWidget.currentIndex = enterPasswordPage.pageIndex
|
||||
passwordEdit.forceActiveFocus()
|
||||
} else {
|
||||
setGeneratingPage()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Index = 0
|
||||
Item {
|
||||
id: enterPasswordPage
|
||||
|
||||
readonly property int pageIndex: 0
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
spacing: 16
|
||||
|
||||
Label {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
text: JamiStrings.enterAccountPassword
|
||||
color: JamiTheme.textColor
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
font.kerning: true
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
||||
MaterialLineEdit {
|
||||
id: passwordEdit
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.preferredWidth: JamiTheme.preferredFieldWidth
|
||||
Layout.preferredHeight: 48
|
||||
|
||||
echoMode: TextInput.Password
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
placeholderText: JamiStrings.enterCurrentPassword
|
||||
|
||||
onTextChanged: {
|
||||
btnConfirm.enabled = text.length > 0
|
||||
}
|
||||
|
||||
onAccepted: btnConfirm.clicked()
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.fillWidth: true
|
||||
spacing: 16
|
||||
|
||||
Label {
|
||||
MaterialButton {
|
||||
id: btnConfirm
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
text: JamiStrings.enterAccountPassword
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
|
||||
color: enabled? JamiTheme.buttonTintedBlack : JamiTheme.buttonTintedGrey
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
enabled: false
|
||||
|
||||
text: JamiStrings.exportAccount
|
||||
|
||||
onClicked: stackedWidget.setGeneratingPage()
|
||||
}
|
||||
|
||||
MaterialButton {
|
||||
id: btnCancel
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
|
||||
color: JamiTheme.buttonTintedBlack
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
enabled: true
|
||||
|
||||
text: JamiStrings.optionCancel
|
||||
|
||||
onClicked: close()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Index = 1
|
||||
Item {
|
||||
id: exportingSpinnerPage
|
||||
|
||||
readonly property int pageIndex: 1
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
spacing: 16
|
||||
|
||||
Label {
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
text: JamiStrings.backupAccount
|
||||
color: JamiTheme.textColor
|
||||
font.pointSize: JamiTheme.headerFontSize
|
||||
font.kerning: true
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
||||
AnimatedImage {
|
||||
id: spinnerMovie
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
Layout.preferredWidth: 30
|
||||
Layout.preferredHeight: 30
|
||||
|
||||
source: JamiResources.jami_rolling_spinner_gif
|
||||
playing: visible
|
||||
fillMode: Image.PreserveAspectFit
|
||||
mipmap: true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Index = 2
|
||||
Item {
|
||||
id: exportingInfoPage
|
||||
|
||||
readonly property int pageIndex: 2
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
spacing: 16
|
||||
|
||||
Item {
|
||||
id: infoLabelsRowLayout
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.margins: JamiTheme.preferredMarginSize
|
||||
Layout.preferredWidth: yourPinLabel.contentWidth +
|
||||
exportedPIN.contentWidth + 5
|
||||
Label {
|
||||
id: yourPinLabel
|
||||
|
||||
anchors.left: infoLabelsRowLayout.left
|
||||
anchors.verticalCenter: infoLabelsRowLayout.verticalCenter
|
||||
|
||||
text: JamiStrings.yourPinIs
|
||||
color: JamiTheme.textColor
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
font.pointSize: JamiTheme.headerFontSize
|
||||
font.kerning: true
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
||||
MaterialLineEdit {
|
||||
id: passwordEdit
|
||||
id: exportedPIN
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.preferredWidth: JamiTheme.preferredFieldWidth
|
||||
Layout.preferredHeight: 48
|
||||
anchors.left: yourPinLabel.right
|
||||
anchors.leftMargin: 5
|
||||
anchors.verticalCenter: infoLabelsRowLayout.verticalCenter
|
||||
|
||||
echoMode: TextInput.Password
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
padding: 0
|
||||
|
||||
placeholderText: JamiStrings.enterCurrentPassword
|
||||
text: JamiStrings.pin
|
||||
wrapMode: Text.NoWrap
|
||||
|
||||
onTextChanged: {
|
||||
btnConfirm.enabled = text.length > 0
|
||||
}
|
||||
|
||||
onAccepted: btnConfirm.clicked()
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.fillWidth: true
|
||||
spacing: 16
|
||||
|
||||
MaterialButton {
|
||||
id: btnConfirm
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
|
||||
color: enabled? JamiTheme.buttonTintedBlack : JamiTheme.buttonTintedGrey
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
enabled: false
|
||||
|
||||
text: JamiStrings.exportAccount
|
||||
|
||||
onClicked: setGeneratingPage()
|
||||
}
|
||||
|
||||
MaterialButton {
|
||||
id: btnCancel
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
|
||||
color: JamiTheme.buttonTintedBlack
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
enabled: true
|
||||
|
||||
text: JamiStrings.optionCancel
|
||||
|
||||
onClicked: close()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Index = 1
|
||||
Item {
|
||||
id: exportingSpinnerPage
|
||||
|
||||
readonly property int pageIndex: 1
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
spacing: 16
|
||||
|
||||
Label {
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
text: JamiStrings.backupAccount
|
||||
color: JamiTheme.textColor
|
||||
selectByMouse: true
|
||||
readOnly: true
|
||||
font.pointSize: JamiTheme.headerFontSize
|
||||
font.kerning: true
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
||||
AnimatedImage {
|
||||
id: spinnerMovie
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
Layout.preferredWidth: 30
|
||||
Layout.preferredHeight: 30
|
||||
|
||||
source: JamiResources.jami_rolling_spinner_gif
|
||||
playing: visible
|
||||
fillMode: Image.PreserveAspectFit
|
||||
mipmap: true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Index = 2
|
||||
Item {
|
||||
id: exportingInfoPage
|
||||
|
||||
readonly property int pageIndex: 2
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
spacing: 16
|
||||
|
||||
RowLayout {
|
||||
id: infoLabelsRowLayout
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.fillWidth: true
|
||||
Layout.margins: JamiTheme.preferredMarginSize
|
||||
|
||||
spacing: 16
|
||||
|
||||
Label {
|
||||
id: yourPinLabel
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
text: JamiStrings.yourPinIs
|
||||
color: JamiTheme.textColor
|
||||
font.pointSize: JamiTheme.headerFontSize
|
||||
font.kerning: true
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
||||
MaterialLineEdit {
|
||||
id: exportedPIN
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: fieldLayoutWidth
|
||||
|
||||
text: JamiStrings.pin
|
||||
color: JamiTheme.textColor
|
||||
selectByMouse: true
|
||||
readOnly: true
|
||||
font.pointSize: JamiTheme.headerFontSize
|
||||
font.kerning: true
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
}
|
||||
|
||||
Label {
|
||||
id: infoLabel
|
||||
|
||||
property bool success: false
|
||||
property int borderWidth : success? 1 : 0
|
||||
property int borderRadius : success? 15 : 0
|
||||
property string backgroundColor : success? "whitesmoke" : "transparent"
|
||||
property string borderColor : success? "lightgray" : "transparent"
|
||||
|
||||
Layout.maximumWidth: linkDeviceContentRect.width -
|
||||
JamiTheme.preferredMarginSize * 2
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
color: success ? JamiTheme.successLabelColor : JamiTheme.redColor
|
||||
padding: success ? 8 : 0
|
||||
|
||||
wrapMode: Text.Wrap
|
||||
text: JamiStrings.pinTimerInfos
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
font.kerning: true
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
background: Rectangle {
|
||||
id: infoLabelBackground
|
||||
|
||||
border.width: infoLabel.borderWidth
|
||||
border.color: infoLabel.borderColor
|
||||
radius: infoLabel.borderRadius
|
||||
color: JamiTheme.secondaryBackgroundColor
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MaterialButton {
|
||||
id: btnCloseExportDialog
|
||||
Label {
|
||||
id: infoLabel
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||
property bool success: false
|
||||
property int borderWidth : success? 1 : 0
|
||||
property int borderRadius : success? 15 : 0
|
||||
property string backgroundColor : success? "whitesmoke" : "transparent"
|
||||
property string borderColor : success? "lightgray" : "transparent"
|
||||
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
Layout.maximumWidth: stackedWidget.width -
|
||||
JamiTheme.preferredMarginSize * 2
|
||||
|
||||
color: enabled ? JamiTheme.buttonTintedBlack : JamiTheme.buttonTintedGrey
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
enabled: true
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
text: JamiStrings.close
|
||||
color: success ? JamiTheme.successLabelColor : JamiTheme.redColor
|
||||
padding: success ? 8 : 0
|
||||
|
||||
onClicked: {
|
||||
if (infoLabel.success)
|
||||
accepted()
|
||||
close()
|
||||
}
|
||||
wrapMode: Text.Wrap
|
||||
text: JamiStrings.pinTimerInfos
|
||||
font.pointSize: success ? JamiTheme.textFontSize :
|
||||
JamiTheme.textFontSize + 3
|
||||
font.kerning: true
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
background: Rectangle {
|
||||
id: infoLabelBackground
|
||||
|
||||
border.width: infoLabel.borderWidth
|
||||
border.color: infoLabel.borderColor
|
||||
radius: infoLabel.borderRadius
|
||||
color: JamiTheme.secondaryBackgroundColor
|
||||
}
|
||||
}
|
||||
|
||||
MaterialButton {
|
||||
id: btnCloseExportDialog
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||
Layout.bottomMargin: JamiTheme.preferredMarginSize
|
||||
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
|
||||
color: enabled ? JamiTheme.buttonTintedBlack : JamiTheme.buttonTintedGrey
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
enabled: true
|
||||
|
||||
text: JamiStrings.close
|
||||
|
||||
onClicked: {
|
||||
if (infoLabel.success)
|
||||
accepted()
|
||||
close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,7 +48,9 @@ ColumnLayout {
|
|||
RevokeDevicePasswordDialog{
|
||||
id: revokeDevicePasswordDialog
|
||||
|
||||
onRevokeDeviceWithPassword: deviceItemListModel.sourceModel.revokeDevice(idOfDevice, password)
|
||||
onRevokeDeviceWithPassword: function(idOfDevice, password) {
|
||||
deviceItemListModel.sourceModel.revokeDevice(idOfDevice, password)
|
||||
}
|
||||
}
|
||||
|
||||
SimpleMessageDialog {
|
||||
|
@ -121,6 +123,6 @@ ColumnLayout {
|
|||
|
||||
text: JamiStrings.linkAnotherDevice
|
||||
|
||||
onClicked: linkDeviceDialog.openLinkDeviceDialog()
|
||||
onClicked: linkDeviceDialog.open()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ import net.jami.Constants 1.1
|
|||
|
||||
import "../../commoncomponents"
|
||||
|
||||
BaseDialog {
|
||||
BaseModalDialog {
|
||||
id: root
|
||||
|
||||
property string registerdName : ""
|
||||
|
@ -36,224 +36,139 @@ BaseDialog {
|
|||
|
||||
function openNameRegistrationDialog(registerNameIn) {
|
||||
registerdName = registerNameIn
|
||||
lblRegistrationError.text = JamiStrings.somethingWentWrong
|
||||
passwordEdit.clear()
|
||||
|
||||
open()
|
||||
|
||||
if(AccountAdapter.hasPassword()){
|
||||
stackedWidget.currentIndex = nameRegisterEnterPasswordPage.pageIndex
|
||||
passwordEdit.forceActiveFocus()
|
||||
} else {
|
||||
startRegistration()
|
||||
}
|
||||
}
|
||||
|
||||
function startRegistration() {
|
||||
stackedWidget.currentIndex = nameRegisterSpinnerPage.pageIndex
|
||||
spinnerMovie.visible = true
|
||||
|
||||
timerForStartRegistration.restart()
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: timerForStartRegistration
|
||||
|
||||
interval: 100
|
||||
repeat: false
|
||||
|
||||
onTriggered: {
|
||||
AccountAdapter.model.registerName(LRCInstance.currentAccountId,
|
||||
passwordEdit.text, registerdName)
|
||||
}
|
||||
}
|
||||
|
||||
Connections{
|
||||
target: NameDirectory
|
||||
|
||||
function onNameRegistrationEnded(status, name) {
|
||||
switch(status) {
|
||||
case NameDirectory.RegisterNameStatus.SUCCESS:
|
||||
accepted()
|
||||
close()
|
||||
return
|
||||
case NameDirectory.RegisterNameStatus.WRONG_PASSWORD:
|
||||
lblRegistrationError.text = JamiStrings.incorrectPassword
|
||||
break
|
||||
case NameDirectory.RegisterNameStatus.NETWORK_ERROR:
|
||||
lblRegistrationError.text = JamiStrings.networkError
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
|
||||
stackedWidget.currentIndex = nameRegisterErrorPage.pageIndex
|
||||
}
|
||||
}
|
||||
width: JamiTheme.preferredDialogWidth
|
||||
height: JamiTheme.preferredDialogHeight
|
||||
|
||||
title: JamiStrings.setUsername
|
||||
|
||||
contentItem: Rectangle {
|
||||
id: nameRegistrationContentRect
|
||||
popupContent: StackLayout {
|
||||
id: stackedWidget
|
||||
|
||||
implicitWidth: JamiTheme.preferredDialogWidth
|
||||
implicitHeight: JamiTheme.preferredDialogHeight
|
||||
function startRegistration() {
|
||||
stackedWidget.currentIndex = nameRegisterSpinnerPage.pageIndex
|
||||
spinnerMovie.visible = true
|
||||
|
||||
color: JamiTheme.primaryBackgroundColor
|
||||
timerForStartRegistration.restart()
|
||||
}
|
||||
|
||||
StackLayout {
|
||||
id: stackedWidget
|
||||
Timer {
|
||||
id: timerForStartRegistration
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: JamiTheme.preferredMarginSize
|
||||
interval: 100
|
||||
repeat: false
|
||||
|
||||
// Index = 0
|
||||
Item {
|
||||
id: nameRegisterEnterPasswordPage
|
||||
onTriggered: {
|
||||
AccountAdapter.model.registerName(LRCInstance.currentAccountId,
|
||||
passwordEdit.text, registerdName)
|
||||
}
|
||||
}
|
||||
|
||||
readonly property int pageIndex: 0
|
||||
Connections{
|
||||
target: NameDirectory
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
function onNameRegistrationEnded(status, name) {
|
||||
switch(status) {
|
||||
case NameDirectory.RegisterNameStatus.SUCCESS:
|
||||
accepted()
|
||||
close()
|
||||
return
|
||||
case NameDirectory.RegisterNameStatus.WRONG_PASSWORD:
|
||||
lblRegistrationError.text = JamiStrings.incorrectPassword
|
||||
break
|
||||
case NameDirectory.RegisterNameStatus.NETWORK_ERROR:
|
||||
lblRegistrationError.text = JamiStrings.networkError
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
|
||||
stackedWidget.currentIndex = nameRegisterErrorPage.pageIndex
|
||||
}
|
||||
}
|
||||
|
||||
onVisibleChanged: {
|
||||
if (visible) {
|
||||
lblRegistrationError.text = JamiStrings.somethingWentWrong
|
||||
passwordEdit.clear()
|
||||
|
||||
if (AccountAdapter.hasPassword()){
|
||||
stackedWidget.currentIndex = nameRegisterEnterPasswordPage.pageIndex
|
||||
passwordEdit.forceActiveFocus()
|
||||
} else {
|
||||
startRegistration()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Index = 0
|
||||
Item {
|
||||
id: nameRegisterEnterPasswordPage
|
||||
|
||||
readonly property int pageIndex: 0
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
spacing: 16
|
||||
|
||||
Label {
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
text: JamiStrings.enterAccountPassword
|
||||
color: JamiTheme.textColor
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
font.kerning: true
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
||||
MaterialLineEdit {
|
||||
id: passwordEdit
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.preferredWidth: JamiTheme.preferredFieldWidth
|
||||
Layout.preferredHeight: 48
|
||||
|
||||
echoMode: TextInput.Password
|
||||
placeholderText: JamiStrings.password
|
||||
|
||||
onTextChanged: btnRegister.enabled = (text.length > 0)
|
||||
|
||||
onAccepted: btnRegister.clicked()
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
spacing: 16
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.fillWidth: true
|
||||
|
||||
Label {
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
MaterialButton {
|
||||
id: btnRegister
|
||||
|
||||
text: JamiStrings.enterAccountPassword
|
||||
color: JamiTheme.textColor
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
font.kerning: true
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
||||
MaterialLineEdit {
|
||||
id: passwordEdit
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.preferredWidth: JamiTheme.preferredFieldWidth
|
||||
Layout.preferredHeight: 48
|
||||
|
||||
echoMode: TextInput.Password
|
||||
placeholderText: JamiStrings.password
|
||||
|
||||
onTextChanged: btnRegister.enabled = (text.length > 0)
|
||||
|
||||
onAccepted: btnRegister.clicked()
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
spacing: 16
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.fillWidth: true
|
||||
|
||||
MaterialButton {
|
||||
id: btnRegister
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
color: enabled? JamiTheme.buttonTintedBlack : JamiTheme.buttonTintedGrey
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
enabled: false
|
||||
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
text: JamiStrings.register
|
||||
|
||||
color: enabled? JamiTheme.buttonTintedBlack : JamiTheme.buttonTintedGrey
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
enabled: false
|
||||
|
||||
text: JamiStrings.register
|
||||
|
||||
onClicked: startRegistration()
|
||||
}
|
||||
|
||||
MaterialButton {
|
||||
id: btnCancel
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
|
||||
color: JamiTheme.buttonTintedBlack
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
|
||||
text: JamiStrings.optionCancel
|
||||
|
||||
onClicked: close()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Index = 1
|
||||
Item {
|
||||
id: nameRegisterSpinnerPage
|
||||
|
||||
readonly property int pageIndex: 1
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
spacing: 16
|
||||
|
||||
Label {
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
text: JamiStrings.registeringName
|
||||
color: JamiTheme.textColor
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
font.kerning: true
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
||||
AnimatedImage {
|
||||
id: spinnerMovie
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
Layout.preferredWidth: 30
|
||||
Layout.preferredHeight: 30
|
||||
|
||||
source: JamiResources.jami_rolling_spinner_gif
|
||||
playing: visible
|
||||
fillMode: Image.PreserveAspectFit
|
||||
mipmap: true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Index = 2
|
||||
Item {
|
||||
id: nameRegisterErrorPage
|
||||
|
||||
readonly property int pageIndex: 2
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
spacing: 16
|
||||
|
||||
Label {
|
||||
id: lblRegistrationError
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
text: JamiStrings.somethingWentWrong
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
font.kerning: true
|
||||
color: JamiTheme.redColor
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
onClicked: stackedWidget.startRegistration()
|
||||
}
|
||||
|
||||
MaterialButton {
|
||||
id: btnClose
|
||||
id: btnCancel
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
|
@ -263,12 +178,94 @@ BaseDialog {
|
|||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
|
||||
text: JamiStrings.close
|
||||
text: JamiStrings.optionCancel
|
||||
|
||||
onClicked: close()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Index = 1
|
||||
Item {
|
||||
id: nameRegisterSpinnerPage
|
||||
|
||||
readonly property int pageIndex: 1
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
spacing: 16
|
||||
|
||||
Label {
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
text: JamiStrings.registeringName
|
||||
color: JamiTheme.textColor
|
||||
font.pointSize: JamiTheme.textFontSize + 3
|
||||
font.kerning: true
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
||||
AnimatedImage {
|
||||
id: spinnerMovie
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
Layout.preferredWidth: 30
|
||||
Layout.preferredHeight: 30
|
||||
|
||||
source: JamiResources.jami_rolling_spinner_gif
|
||||
playing: visible
|
||||
fillMode: Image.PreserveAspectFit
|
||||
mipmap: true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Index = 2
|
||||
Item {
|
||||
id: nameRegisterErrorPage
|
||||
|
||||
readonly property int pageIndex: 2
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
spacing: 16
|
||||
|
||||
Label {
|
||||
id: lblRegistrationError
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
text: JamiStrings.somethingWentWrong
|
||||
font.pointSize: JamiTheme.textFontSize + 3
|
||||
font.kerning: true
|
||||
color: JamiTheme.redColor
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
||||
MaterialButton {
|
||||
id: btnClose
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||
Layout.bottomMargin: JamiTheme.preferredMarginSize
|
||||
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
|
||||
color: JamiTheme.buttonTintedBlack
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
|
||||
text: JamiStrings.close
|
||||
|
||||
onClicked: close()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ import net.jami.Constants 1.1
|
|||
|
||||
import "../../commoncomponents"
|
||||
|
||||
BaseDialog {
|
||||
BaseModalDialog {
|
||||
id: root
|
||||
|
||||
property string deviceId : ""
|
||||
|
@ -34,105 +34,100 @@ BaseDialog {
|
|||
|
||||
function openRevokeDeviceDialog(deviceIdIn) {
|
||||
deviceId = deviceIdIn
|
||||
passwordEdit.clear()
|
||||
|
||||
open()
|
||||
}
|
||||
|
||||
title: qsTr("Remove device")
|
||||
width: JamiTheme.preferredDialogWidth
|
||||
height: JamiTheme.preferredDialogHeight
|
||||
|
||||
contentItem: Rectangle {
|
||||
id: revokeDeviceContentRect
|
||||
title: JamiStrings.removeDevice
|
||||
|
||||
color: JamiTheme.secondaryBackgroundColor
|
||||
implicitWidth: JamiTheme.preferredDialogWidth
|
||||
implicitHeight: JamiTheme.preferredDialogHeight
|
||||
popupContent: ColumnLayout {
|
||||
id: revokeDeviceContentColumnLayout
|
||||
|
||||
ColumnLayout {
|
||||
anchors.centerIn: parent
|
||||
anchors.fill: parent
|
||||
anchors.margins: JamiTheme.preferredMarginSize
|
||||
spacing: 16
|
||||
spacing: 16
|
||||
|
||||
Label {
|
||||
id: labelDeletion
|
||||
Label {
|
||||
id: labelDeletion
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: revokeDeviceContentRect.width - JamiTheme.preferredMarginSize * 2
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: revokeDeviceContentColumnLayout.width -
|
||||
JamiTheme.preferredMarginSize * 2
|
||||
|
||||
color: JamiTheme.textColor
|
||||
text: JamiStrings.confirmRemoval
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
font.kerning: true
|
||||
wrapMode: Text.Wrap
|
||||
text: JamiStrings.confirmRemoval
|
||||
color: JamiTheme.textColor
|
||||
font.pointSize: JamiTheme.textFontSize
|
||||
font.kerning: true
|
||||
wrapMode: Text.Wrap
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
||||
MaterialLineEdit {
|
||||
id: passwordEdit
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: JamiTheme.preferredFieldWidth
|
||||
Layout.preferredHeight: visible ? 48 : 0
|
||||
|
||||
echoMode: TextInput.Password
|
||||
placeholderText: JamiStrings.enterCurrentPassword
|
||||
|
||||
onTextChanged: {
|
||||
btnRemove.enabled = text.length > 0
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
spacing: 16
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
Layout.fillWidth: true
|
||||
|
||||
MaterialButton {
|
||||
id: btnRemove
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
|
||||
color: enabled? JamiTheme.buttonTintedBlack : JamiTheme.buttonTintedGrey
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
enabled: false
|
||||
|
||||
text: qsTr("Remove")
|
||||
|
||||
onClicked: {
|
||||
revokeDeviceWithPassword(deviceId, passwordEdit.text)
|
||||
close()
|
||||
}
|
||||
}
|
||||
|
||||
MaterialButton {
|
||||
id: btnCancel
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
|
||||
color: JamiTheme.buttonTintedBlack
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
enabled: true
|
||||
|
||||
text: qsTr("Cancel")
|
||||
|
||||
onClicked: {
|
||||
close()
|
||||
}
|
||||
}
|
||||
}
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
||||
MaterialLineEdit {
|
||||
id: passwordEdit
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: JamiTheme.preferredFieldWidth
|
||||
Layout.preferredHeight: visible ? 48 : 0
|
||||
|
||||
echoMode: TextInput.Password
|
||||
placeholderText: JamiStrings.enterCurrentPassword
|
||||
|
||||
onVisibleChanged: passwordEdit.clear()
|
||||
|
||||
onTextChanged: {
|
||||
btnRemove.enabled = text.length > 0
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
spacing: 16
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
Layout.fillWidth: true
|
||||
|
||||
MaterialButton {
|
||||
id: btnRemove
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
|
||||
color: enabled? JamiTheme.buttonTintedBlack : JamiTheme.buttonTintedGrey
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
enabled: false
|
||||
|
||||
text: qsTr("Remove")
|
||||
|
||||
onClicked: {
|
||||
revokeDeviceWithPassword(deviceId, passwordEdit.text)
|
||||
close()
|
||||
}
|
||||
}
|
||||
|
||||
MaterialButton {
|
||||
id: btnCancel
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
preferredWidth: JamiTheme.preferredFieldWidth / 2 - 8
|
||||
preferredHeight: JamiTheme.preferredFieldHeight
|
||||
|
||||
color: JamiTheme.buttonTintedBlack
|
||||
hoveredColor: JamiTheme.buttonTintedBlackHovered
|
||||
pressedColor: JamiTheme.buttonTintedBlackPressed
|
||||
outlined: true
|
||||
enabled: true
|
||||
|
||||
text: JamiStrings.optionCancel
|
||||
|
||||
onClicked: close()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -59,8 +59,8 @@ Rectangle {
|
|||
buttonTitles: [JamiStrings.optionOk]
|
||||
buttonStyles: [SimpleMessageDialog.ButtonStyle.TintedBlue]
|
||||
|
||||
onVisibleChanged: {
|
||||
if (title === JamiStrings.success && !visible)
|
||||
onClosed: {
|
||||
if (title === JamiStrings.success)
|
||||
WizardViewStepModel.nextStep()
|
||||
}
|
||||
}
|
||||
|
@ -71,7 +71,9 @@ Rectangle {
|
|||
visible: false
|
||||
purpose: PasswordDialog.ExportAccount
|
||||
|
||||
onDoneSignal: showBackupStatusDialog(success)
|
||||
onDoneSignal: function (success) {
|
||||
showBackupStatusDialog(success)
|
||||
}
|
||||
}
|
||||
|
||||
// JamiFileDialog for exporting account
|
||||
|
|
Loading…
Add table
Reference in a new issue