import QtCore import QtQuick import QtQuick.Layouts import QtQuick.Controls.Basic as Control import QtQuick.Dialogs import Linphone import SettingsCpp 1.0 import UtilsCpp AbstractSettingsLayout { id: mainItem contentComponent: content property alias account: mainItem.model Component { id: content ColumnLayout { width: parent.width spacing: 5 * DefaultStyle.dp RowLayout { Layout.topMargin: 16 * DefaultStyle.dp spacing: 5 * DefaultStyle.dp ColumnLayout { Layout.fillWidth: true spacing: 5 * DefaultStyle.dp ColumnLayout { Layout.preferredWidth: 341 * DefaultStyle.dp Layout.maximumWidth: 341 * DefaultStyle.dp Layout.minimumWidth: 341 * DefaultStyle.dp spacing: 5 * DefaultStyle.dp Text { Layout.fillWidth: true text: qsTr("Détails") font: Typography.h4 wrapMode: Text.WordWrap color: DefaultStyle.main2_600 } Text { text: qsTr("Editer les informations de votre compte.") font: Typography.p1s wrapMode: Text.WordWrap color: DefaultStyle.main2_600 Layout.fillWidth: true } } Item { Layout.fillHeight: true } } ColumnLayout { Layout.fillWidth: true spacing: 20 * DefaultStyle.dp Layout.rightMargin: 44 * DefaultStyle.dp Layout.topMargin: 20 * DefaultStyle.dp Layout.leftMargin: 64 * DefaultStyle.dp Avatar { account: model displayPresence: false Layout.preferredWidth: 100 * DefaultStyle.dp Layout.preferredHeight: 100 * DefaultStyle.dp Layout.alignment: Qt.AlignHCenter } IconLabelButton { visible: model.core.pictureUri.length === 0 Layout.preferredWidth: width Layout.preferredHeight: 17 * DefaultStyle.dp iconSource: AppIcons.camera iconSize: 17 * DefaultStyle.dp text: qsTr("Ajouter une image") onClicked: fileDialog.open() Layout.alignment: Qt.AlignHCenter color: DefaultStyle.main2_600 } RowLayout { visible: model.core.pictureUri.length > 0 Layout.alignment: Qt.AlignHCenter spacing: 5 * DefaultStyle.dp IconLabelButton { Layout.preferredWidth: width Layout.preferredHeight: 17 * DefaultStyle.dp iconSource: AppIcons.pencil iconSize: 17 * DefaultStyle.dp text: qsTr("Modifier l'image") color: DefaultStyle.main2_600 onClicked: fileDialog.open() } IconLabelButton { Layout.preferredWidth: width Layout.preferredHeight: 17 * DefaultStyle.dp iconSource: AppIcons.trashCan iconSize: 17 * DefaultStyle.dp text: qsTr("Supprimer l'image") color: DefaultStyle.main2_600 onClicked: model.core.pictureUri = "" } } FileDialog { id: fileDialog currentFolder: StandardPaths.standardLocations(StandardPaths.PicturesLocation)[0] onAccepted: { var avatarPath = UtilsCpp.createAvatar( selectedFile ) if(avatarPath){ model.core.pictureUri = avatarPath } } } RowLayout { Layout.fillWidth: true spacing: 5 * DefaultStyle.dp Text { Layout.alignment: Qt.AlignLeft text: qsTr("Adresse SIP :") color: DefaultStyle.main2_600 font: Typography.p2l } Text { Layout.alignment: Qt.AlignLeft text: model.core.identityAddress color: DefaultStyle.main2_600 font: Typography.p1 } Item { Layout.fillWidth: true } IconLabelButton { Layout.alignment: Qt.AlignRight Layout.preferredWidth: 20 * DefaultStyle.dp Layout.preferredHeight: 20 * DefaultStyle.dp iconSize: 24 * DefaultStyle.dp iconSource: AppIcons.copy color: DefaultStyle.main2_600 onClicked: UtilsCpp.copyToClipboard(model.core.identityAddress) } } ColumnLayout { spacing: 5 * DefaultStyle.dp Layout.alignment: Qt.AlignLeft Text { text: qsTr("Nom d’affichage") color: DefaultStyle.main2_600 font: Typography.p2l } Text { text: qsTr("Le nom qui sera affiché à vos correspondants lors de vos échanges.") color: DefaultStyle.main2_600 font: Typography.p1 } } TextField { Layout.alignment: Qt.AlignLeft Layout.fillWidth: true Layout.preferredHeight: 49 * DefaultStyle.dp initialText: model.core.displayName backgroundColor: DefaultStyle.grey_100 onEditingFinished: { if (text.length != 0) model.core.displayName = text } toValidate: true } Text { text: qsTr("Indicatif international*") color: DefaultStyle.main2_600 font: Typography.p2l } ComboSetting { Layout.fillWidth: true Layout.topMargin: -15 * DefaultStyle.dp entries: account.core.dialPlans propertyName: "dialPlan" propertyOwner: account.core } SwitchSetting { titleText: account?.core.humaneReadableRegistrationState subTitleText: account?.core.humaneReadableRegistrationStateExplained propertyName: "registerEnabled" propertyOwner: account?.core } RowLayout { id:mainItem spacing : 20 * DefaultStyle.dp ColumnLayout { spacing : 5 * DefaultStyle.dp Text { text: qsTr("Supprimer mon compte") font: Typography.p2l wrapMode: Text.WordWrap color: DefaultStyle.danger_500main Layout.fillWidth: true } Text { text: qsTr("Votre compte sera retiré de ce client linphone, mais vous restez connecté sur vos autres clients") font: Typography.p1 wrapMode: Text.WordWrap color: DefaultStyle.main2_500main Layout.fillWidth: true } } Item { Layout.fillWidth: true } Button { background: Item{} Layout.alignment: Qt.AlignRight Layout.rightMargin: 5 * DefaultStyle.dp Layout.preferredWidth: 24 * DefaultStyle.dp Layout.preferredHeight: 24 * DefaultStyle.dp contentItem: RowLayout { Layout.alignment: Qt.AlignRight EffectImage { imageSource: AppIcons.trashCan width: 24 * DefaultStyle.dp height: 24 * DefaultStyle.dp Layout.preferredWidth: 24 * DefaultStyle.dp Layout.preferredHeight: 24 * DefaultStyle.dp fillMode: Image.PreserveAspectFit colorizationColor: DefaultStyle.danger_500main } } onClicked: { var mainWin = UtilsCpp.getMainWindow() mainWin.showConfirmationLambdaPopup("", qsTr("Supprimer ") + (model.core.displayName.length > 0 ? model.core.displayName : qsTr("le compte")) + " ?", qsTr("Vous pouvez vous reconnecter à tout moment en cliquant sur \"Ajouter un compte\".\nCependant toutes les informations stockées sur ce périphérique seront supprimées."), function (confirmed) { if (confirmed) { account.core.removeAccount() } } ) } } } } } Rectangle { Layout.fillWidth: true Layout.topMargin: 16 * DefaultStyle.dp height: 1 * DefaultStyle.dp color: DefaultStyle.main2_500main } RowLayout { Layout.fillWidth: true Layout.topMargin: 16 * DefaultStyle.dp spacing: 5 * DefaultStyle.dp ColumnLayout { Layout.fillWidth: true spacing: 5 * DefaultStyle.dp ColumnLayout { Layout.preferredWidth: 341 * DefaultStyle.dp Layout.maximumWidth: 341 * DefaultStyle.dp Layout.minimumWidth: 341 * DefaultStyle.dp spacing: 5 * DefaultStyle.dp Text { Layout.fillWidth: true text: qsTr("Vos appareils") font: Typography.h4 wrapMode: Text.WordWrap color: DefaultStyle.main2_600 } Text { text: qsTr("La liste des appareils connectés à votre compte. Vous pouvez retirer les appareils que vous n’utilisez plus.") font: Typography.p1s wrapMode: Text.WordWrap color: DefaultStyle.main2_600 Layout.fillWidth: true } } Item { Layout.fillHeight: true } } RoundedPane { Layout.fillWidth: true Layout.fillHeight: true // Layout.minimumHeight: account.core.devices.length * 133 * DefaultStyle.dp + (account.core.devices.length - 1) * 15 * DefaultStyle.dp + 2 * 21 * DefaultStyle.dp Layout.rightMargin: 30 * DefaultStyle.dp Layout.topMargin: 20 * DefaultStyle.dp Layout.bottomMargin: 4 * DefaultStyle.dp Layout.leftMargin: 44 * DefaultStyle.dp topPadding: 21 * DefaultStyle.dp bottomPadding: 21 * DefaultStyle.dp leftPadding: 17 * DefaultStyle.dp rightPadding: 17 * DefaultStyle.dp background: Rectangle { anchors.fill: parent color: DefaultStyle.grey_100 radius: 15 * DefaultStyle.dp } contentItem: ColumnLayout { spacing: 15 * DefaultStyle.dp Repeater { id: devices model: AccountDeviceProxy { id: accountDeviceProxy account: model } Control.Control{ Layout.fillWidth: true height: 133 * DefaultStyle.dp topPadding: 26 * DefaultStyle.dp bottomPadding: 26 * DefaultStyle.dp rightPadding: 36 * DefaultStyle.dp leftPadding: 33 * DefaultStyle.dp background: Rectangle { anchors.fill: parent color: DefaultStyle.grey_0 radius: 10 * DefaultStyle.dp } contentItem: ColumnLayout { width: parent.width spacing: 20 * DefaultStyle.dp RowLayout { spacing: 5 * DefaultStyle.dp EffectImage { Layout.preferredWidth: 24 * DefaultStyle.dp Layout.preferredHeight: 24 * DefaultStyle.dp fillMode: Image.PreserveAspectFit colorizationColor: DefaultStyle.main2_600 imageSource: modelData.core.userAgent.toLowerCase().includes('ios') | modelData.core.userAgent.toLowerCase().includes('android') ? AppIcons.mobile : AppIcons.desktop } Text { text: modelData.core.deviceName color: DefaultStyle.main2_600 font: Typography.p2 } Item { Layout.fillWidth: true } MediumButton { Layout.alignment: Qt.AlignRight text: qsTr("Supprimer") icon.source: AppIcons.trashCan icon.width: 16 * DefaultStyle.dp icon.height: 16 * DefaultStyle.dp contentImageColor: DefaultStyle.main1_500_main onClicked: { var mainWin = UtilsCpp.getMainWindow() mainWin.showConfirmationLambdaPopup("", qsTr("Supprimer ") + modelData.core.deviceName + " ?", "", function (confirmed) { if (confirmed) { accountDeviceProxy.deleteDevice(modelData) } } ) } } } RowLayout { spacing: 5 * DefaultStyle.dp Text { text: qsTr("Dernière connexion:") color: DefaultStyle.main2_600 font: Typography.p2 } EffectImage { Layout.preferredWidth: 20 * DefaultStyle.dp Layout.preferredHeight: 20 * DefaultStyle.dp imageSource: AppIcons.calendar colorizationColor: DefaultStyle.main2_600 fillMode: Image.PreserveAspectFit } Text { text: UtilsCpp.formatDate(modelData.core.lastUpdateTimestamp,false) color: DefaultStyle.main2_600 font: Typography.p1 } EffectImage { Layout.preferredWidth: 20 * DefaultStyle.dp Layout.preferredHeight: 20 * DefaultStyle.dp imageSource: AppIcons.clock colorizationColor: DefaultStyle.main2_600 fillMode: Image.PreserveAspectFit } Text { text: UtilsCpp.formatTime(modelData.core.lastUpdateTimestamp) color: DefaultStyle.main2_600 font: Typography.p1 } } } } } } } } } } }