forked from Silverfish/proton-bridge
feat(BRIDGE-15): certificate install is now also done during Outlook setup on macOS.
This commit is contained in:
@ -117,6 +117,7 @@
|
|||||||
<file>qml/Resources/Help/WhyProfileWarning.html</file>
|
<file>qml/Resources/Help/WhyProfileWarning.html</file>
|
||||||
<file>qml/SettingsItem.qml</file>
|
<file>qml/SettingsItem.qml</file>
|
||||||
<file>qml/SettingsView.qml</file>
|
<file>qml/SettingsView.qml</file>
|
||||||
|
<file>qml/SetupWizard/ClientConfigCertInstall.qml</file>
|
||||||
<file>qml/SetupWizard/ClientListItem.qml</file>
|
<file>qml/SetupWizard/ClientListItem.qml</file>
|
||||||
<file>qml/SetupWizard/LeftPane.qml</file>
|
<file>qml/SetupWizard/LeftPane.qml</file>
|
||||||
<file>qml/SetupWizard/ClientConfigAppleMail.qml</file>
|
<file>qml/SetupWizard/ClientConfigAppleMail.qml</file>
|
||||||
|
|||||||
@ -17,192 +17,15 @@ import QtQuick.Controls
|
|||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: root
|
id: root
|
||||||
enum Screen {
|
|
||||||
CertificateInstall,
|
|
||||||
ProfileInstall
|
|
||||||
}
|
|
||||||
|
|
||||||
property var wizard
|
property var wizard
|
||||||
|
|
||||||
signal appleMailAutoconfigCertificateInstallPageShown
|
|
||||||
signal appleMailAutoconfigProfileInstallPageShow
|
|
||||||
|
|
||||||
function showAutoconfig() {
|
|
||||||
if (Backend.isTLSCertificateInstalled()) {
|
|
||||||
showProfileInstall();
|
|
||||||
} else {
|
|
||||||
showCertificateInstall();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function showCertificateInstall() {
|
|
||||||
certificateInstall.reset();
|
|
||||||
stack.currentIndex = ClientConfigAppleMail.Screen.CertificateInstall;
|
|
||||||
appleMailAutoconfigCertificateInstallPageShown();
|
|
||||||
}
|
|
||||||
function showProfileInstall() {
|
|
||||||
profileInstall.reset();
|
|
||||||
stack.currentIndex = ClientConfigAppleMail.Screen.ProfileInstall;
|
|
||||||
appleMailAutoconfigProfileInstallPageShow();
|
|
||||||
}
|
|
||||||
|
|
||||||
StackLayout {
|
|
||||||
id: stack
|
|
||||||
anchors.fill: parent
|
|
||||||
|
|
||||||
// stack index 0
|
|
||||||
Item {
|
|
||||||
id: certificateInstall
|
|
||||||
|
|
||||||
property string errorString: ""
|
|
||||||
property bool showBugReportLink: false
|
|
||||||
property bool waitingForCert: false
|
|
||||||
|
|
||||||
function clearError() {
|
|
||||||
errorString = "";
|
|
||||||
showBugReportLink = false;
|
|
||||||
}
|
|
||||||
function reset() {
|
|
||||||
waitingForCert = false;
|
|
||||||
clearError();
|
|
||||||
}
|
|
||||||
|
|
||||||
Layout.fillHeight: true
|
|
||||||
Layout.fillWidth: true
|
|
||||||
|
|
||||||
ColumnLayout {
|
|
||||||
anchors.left: parent.left
|
|
||||||
anchors.right: parent.right
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
|
||||||
spacing: ProtonStyle.wizard_spacing_large
|
|
||||||
|
|
||||||
Connections {
|
|
||||||
function onCertificateInstallCanceled() {
|
|
||||||
certificateInstall.waitingForCert = false;
|
|
||||||
certificateInstall.errorString = qsTr("Apple Mail cannot be configured if you do not install the certificate. Please retry.");
|
|
||||||
certificateInstall.showBugReportLink = false;
|
|
||||||
}
|
|
||||||
function onCertificateInstallFailed() {
|
|
||||||
certificateInstall.waitingForCert = false;
|
|
||||||
certificateInstall.errorString = qsTr("An error occurred while installing the certificate.");
|
|
||||||
certificateInstall.showBugReportLink = true;
|
|
||||||
}
|
|
||||||
function onCertificateInstallSuccess() {
|
|
||||||
certificateInstall.reset();
|
|
||||||
root.showAutoconfig();
|
|
||||||
}
|
|
||||||
|
|
||||||
target: Backend
|
|
||||||
}
|
|
||||||
ColumnLayout {
|
|
||||||
Layout.fillWidth: true
|
|
||||||
spacing: ProtonStyle.wizard_spacing_medium
|
|
||||||
|
|
||||||
Label {
|
|
||||||
Layout.alignment: Qt.AlignHCenter
|
|
||||||
Layout.fillWidth: true
|
|
||||||
colorScheme: wizard.colorScheme
|
|
||||||
horizontalAlignment: Text.AlignHCenter
|
|
||||||
text: qsTr("Install the bridge certificate")
|
|
||||||
type: Label.LabelType.Title
|
|
||||||
wrapMode: Text.WordWrap
|
|
||||||
}
|
|
||||||
Label {
|
|
||||||
Layout.alignment: Qt.AlignHCenter
|
|
||||||
Layout.fillWidth: true
|
|
||||||
color: colorScheme.text_weak
|
|
||||||
colorScheme: wizard.colorScheme
|
|
||||||
horizontalAlignment: Text.AlignHCenter
|
|
||||||
text: qsTr("After clicking on the button below, a system pop-up will ask you for your credentials, please enter your macOS user credentials (not your Proton account’s) and validate.")
|
|
||||||
type: Label.LabelType.Body
|
|
||||||
wrapMode: Text.WordWrap
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Image {
|
|
||||||
Layout.alignment: Qt.AlignHCenter
|
|
||||||
height: 182
|
|
||||||
opacity: certificateInstall.waitingForCert ? 0.3 : 1.0
|
|
||||||
source: "/qml/icons/img-macos-cert-screenshot.png"
|
|
||||||
width: 140
|
|
||||||
}
|
|
||||||
ColumnLayout {
|
|
||||||
Layout.fillWidth: true
|
|
||||||
spacing: ProtonStyle.wizard_spacing_medium
|
|
||||||
|
|
||||||
Button {
|
|
||||||
Layout.fillWidth: true
|
|
||||||
colorScheme: wizard.colorScheme
|
|
||||||
enabled: !certificateInstall.waitingForCert
|
|
||||||
loading: certificateInstall.waitingForCert
|
|
||||||
text: qsTr("Install the certificate")
|
|
||||||
|
|
||||||
onClicked: {
|
|
||||||
certificateInstall.clearError();
|
|
||||||
certificateInstall.waitingForCert = true;
|
|
||||||
Backend.installTLSCertificate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Button {
|
|
||||||
Layout.fillWidth: true
|
|
||||||
colorScheme: wizard.colorScheme
|
|
||||||
enabled: !certificateInstall.waitingForCert
|
|
||||||
secondary: true
|
|
||||||
text: qsTr("Cancel")
|
|
||||||
|
|
||||||
onClicked: {
|
|
||||||
wizard.closeWizard();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ColumnLayout {
|
|
||||||
Layout.fillWidth: true
|
|
||||||
spacing: ProtonStyle.wizard_spacing_small
|
|
||||||
|
|
||||||
RowLayout {
|
|
||||||
Layout.fillWidth: true
|
|
||||||
spacing: ProtonStyle.wizard_spacing_extra_small
|
|
||||||
|
|
||||||
ColorImage {
|
|
||||||
color: wizard.colorScheme.signal_danger
|
|
||||||
height: errorLabel.lineHeight
|
|
||||||
source: "/qml/icons/ic-exclamation-circle-filled.svg"
|
|
||||||
sourceSize.height: errorLabel.lineHeight
|
|
||||||
visible: certificateInstall.errorString.length > 0
|
|
||||||
}
|
|
||||||
Label {
|
|
||||||
id: errorLabel
|
|
||||||
Layout.fillWidth: true
|
|
||||||
color: wizard.colorScheme.signal_danger
|
|
||||||
colorScheme: wizard.colorScheme
|
|
||||||
horizontalAlignment: Text.AlignHCenter
|
|
||||||
text: certificateInstall.errorString
|
|
||||||
type: Label.LabelType.Body_semibold
|
|
||||||
wrapMode: Text.WordWrap
|
|
||||||
}
|
|
||||||
}
|
|
||||||
LinkLabel {
|
|
||||||
Layout.alignment: Qt.AlignHCenter
|
|
||||||
callback: wizard.showBugReport
|
|
||||||
colorScheme: wizard.colorScheme
|
|
||||||
link: "#"
|
|
||||||
text: qsTr("Report the problem")
|
|
||||||
visible: certificateInstall.showBugReportLink
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// stack index 1
|
|
||||||
Item {
|
|
||||||
id: profileInstall
|
|
||||||
|
|
||||||
property bool profilePaneLaunched: false
|
property bool profilePaneLaunched: false
|
||||||
|
|
||||||
function reset() {
|
function reset() {
|
||||||
profilePaneLaunched = false;
|
profilePaneLaunched = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Layout.fillHeight: true
|
|
||||||
Layout.fillWidth: true
|
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
@ -246,14 +69,14 @@ Item {
|
|||||||
Button {
|
Button {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
colorScheme: wizard.colorScheme
|
colorScheme: wizard.colorScheme
|
||||||
text: profileInstall.profilePaneLaunched ? qsTr("I have installed the profile") : qsTr("Install the profile")
|
text: profilePaneLaunched ? qsTr("I have installed the profile") : qsTr("Install the profile")
|
||||||
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
if (profileInstall.profilePaneLaunched) {
|
if (profilePaneLaunched) {
|
||||||
wizard.showClientConfigEnd();
|
wizard.showClientConfigEnd();
|
||||||
} else {
|
} else {
|
||||||
wizard.user.configureAppleMail(wizard.address);
|
wizard.user.configureAppleMail(wizard.address);
|
||||||
profileInstall.profilePaneLaunched = true;
|
profilePaneLaunched = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -269,6 +92,4 @@ Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,153 @@
|
|||||||
|
// Copyright (c) 2024 Proton AG
|
||||||
|
// This file is part of Proton Mail Bridge.
|
||||||
|
// Proton Mail Bridge 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.
|
||||||
|
// Proton Mail Bridge 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 Proton Mail Bridge. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import QtQml
|
||||||
|
import QtQuick
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import QtQuick.Controls
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
property string errorString: ""
|
||||||
|
property bool showBugReportLink: false
|
||||||
|
property bool waitingForCert: false
|
||||||
|
property var wizard
|
||||||
|
|
||||||
|
function clearError() {
|
||||||
|
errorString = "";
|
||||||
|
showBugReportLink = false;
|
||||||
|
}
|
||||||
|
function reset() {
|
||||||
|
waitingForCert = false;
|
||||||
|
clearError();
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
spacing: ProtonStyle.wizard_spacing_large
|
||||||
|
|
||||||
|
Connections {
|
||||||
|
function onCertificateInstallCanceled() {
|
||||||
|
root.waitingForCert = false;
|
||||||
|
root.errorString = qsTr("%1 cannot be configured if you do not install the certificate. Please retry.").arg(wizard.clientName());
|
||||||
|
root.showBugReportLink = false;
|
||||||
|
}
|
||||||
|
function onCertificateInstallFailed() {
|
||||||
|
root.waitingForCert = false;
|
||||||
|
root.errorString = qsTr("An error occurred while installing the certificate.");
|
||||||
|
root.showBugReportLink = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
target: Backend
|
||||||
|
}
|
||||||
|
ColumnLayout {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
spacing: ProtonStyle.wizard_spacing_medium
|
||||||
|
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignHCenter
|
||||||
|
Layout.fillWidth: true
|
||||||
|
colorScheme: wizard.colorScheme
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
text: qsTr("Install the bridge certificate")
|
||||||
|
type: Label.LabelType.Title
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignHCenter
|
||||||
|
Layout.fillWidth: true
|
||||||
|
color: colorScheme.text_weak
|
||||||
|
colorScheme: wizard.colorScheme
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
text: qsTr("After clicking on the button below, a system pop-up will ask you for your credentials, please enter your macOS user credentials (not your Proton account’s) and validate.")
|
||||||
|
type: Label.LabelType.Body
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Image {
|
||||||
|
Layout.alignment: Qt.AlignHCenter
|
||||||
|
height: 182
|
||||||
|
opacity: root.waitingForCert ? 0.3 : 1.0
|
||||||
|
source: "/qml/icons/img-macos-cert-screenshot.png"
|
||||||
|
width: 140
|
||||||
|
}
|
||||||
|
ColumnLayout {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
spacing: ProtonStyle.wizard_spacing_medium
|
||||||
|
|
||||||
|
Button {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
colorScheme: wizard.colorScheme
|
||||||
|
enabled: !root.waitingForCert
|
||||||
|
loading: root.waitingForCert
|
||||||
|
text: qsTr("Install the certificate")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
root.clearError();
|
||||||
|
root.waitingForCert = true;
|
||||||
|
Backend.installTLSCertificate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Button {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
colorScheme: wizard.colorScheme
|
||||||
|
enabled: !root.waitingForCert
|
||||||
|
secondary: true
|
||||||
|
text: qsTr("Cancel")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
wizard.closeWizard();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ColumnLayout {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
spacing: ProtonStyle.wizard_spacing_small
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
spacing: ProtonStyle.wizard_spacing_extra_small
|
||||||
|
|
||||||
|
ColorImage {
|
||||||
|
color: wizard.colorScheme.signal_danger
|
||||||
|
height: errorLabel.lineHeight
|
||||||
|
source: "/qml/icons/ic-exclamation-circle-filled.svg"
|
||||||
|
sourceSize.height: errorLabel.lineHeight
|
||||||
|
visible: root.errorString.length > 0
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
id: errorLabel
|
||||||
|
Layout.fillWidth: true
|
||||||
|
color: wizard.colorScheme.signal_danger
|
||||||
|
colorScheme: wizard.colorScheme
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
text: root.errorString
|
||||||
|
type: Label.LabelType.Body_semibold
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
}
|
||||||
|
}
|
||||||
|
LinkLabel {
|
||||||
|
Layout.alignment: Qt.AlignHCenter
|
||||||
|
callback: wizard.showBugReport
|
||||||
|
colorScheme: wizard.colorScheme
|
||||||
|
link: "#"
|
||||||
|
text: qsTr("Report the problem")
|
||||||
|
visible: root.showBugReportLink
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -47,6 +47,10 @@ Item {
|
|||||||
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
wizard.client = SetupWizard.Client.AppleMail;
|
wizard.client = SetupWizard.Client.AppleMail;
|
||||||
|
if (!Backend.isTLSCertificateInstalled()) {
|
||||||
|
wizard.showCertInstall();
|
||||||
|
return
|
||||||
|
}
|
||||||
wizard.showAppleMailAutoConfig();
|
wizard.showAppleMailAutoConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -59,6 +63,10 @@ Item {
|
|||||||
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
wizard.client = SetupWizard.Client.MicrosoftOutlook;
|
wizard.client = SetupWizard.Client.MicrosoftOutlook;
|
||||||
|
if (root.onMacOS && !Backend.isTLSCertificateInstalled()) {
|
||||||
|
wizard.showCertInstall();
|
||||||
|
return
|
||||||
|
}
|
||||||
wizard.showClientParams();
|
wizard.showClientParams();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,13 +34,23 @@ Item {
|
|||||||
|
|
||||||
signal startSetup()
|
signal startSetup()
|
||||||
|
|
||||||
function showAppleMailAutoconfigCertificateInstall() {
|
function showCertificateInstall() {
|
||||||
showAppleMailAutoconfigCommon();
|
showClientConfigCommon();
|
||||||
|
if (wizard.client === SetupWizard.Client.AppleMail) {
|
||||||
descriptionLabel.text = qsTr("Apple Mail configuration is mostly automated, but in order to work, Bridge needs to install a certificate in your keychain.");
|
descriptionLabel.text = qsTr("Apple Mail configuration is mostly automated, but in order to work, Bridge needs to install a certificate in your keychain.");
|
||||||
linkLabel1.setCallback(function() { Backend.openExternalLink("https://proton.me/support/apple-mail-certificate"); }, qsTr("Why is this certificate needed?"), true);
|
linkLabel1.setCallback(function () {
|
||||||
|
Backend.openExternalLink("https://proton.me/support/apple-mail-certificate");
|
||||||
|
}, qsTr("Why is this certificate needed?"), true);
|
||||||
|
} else {
|
||||||
|
descriptionLabel.text = qsTr("In order for Outlook to work, Bridge needs to install a certificate in your keychain.");
|
||||||
|
linkLabel1.setCallback(function () {
|
||||||
|
Backend.openExternalLink("https://proton.me/support/apple-mail-certificate");
|
||||||
|
}, qsTr("Why is this certificate needed?"), true);
|
||||||
|
}
|
||||||
linkLabel2.clear();
|
linkLabel2.clear();
|
||||||
}
|
}
|
||||||
function showAppleMailAutoconfigCommon() {
|
|
||||||
|
function showClientConfigCommon() {
|
||||||
titleLabel.text = "";
|
titleLabel.text = "";
|
||||||
linkLabel1.clear();
|
linkLabel1.clear();
|
||||||
linkLabel2.clear();
|
linkLabel2.clear();
|
||||||
@ -49,7 +59,7 @@ Item {
|
|||||||
iconWidth = 80;
|
iconWidth = 80;
|
||||||
}
|
}
|
||||||
function showAppleMailAutoconfigProfileInstall() {
|
function showAppleMailAutoconfigProfileInstall() {
|
||||||
showAppleMailAutoconfigCommon();
|
showClientConfigCommon();
|
||||||
descriptionLabel.text = qsTr("The final step before you can start using Apple Mail is to install the Bridge server profile in the system preferences.\n\nAdding a server profile is necessary to ensure that your Mac can receive and send Proton Mails.");
|
descriptionLabel.text = qsTr("The final step before you can start using Apple Mail is to install the Bridge server profile in the system preferences.\n\nAdding a server profile is necessary to ensure that your Mac can receive and send Proton Mails.");
|
||||||
linkLabel1.setCallback(function() { Backend.openExternalLink("https://proton.me/support/macos-certificate-warning"); }, qsTr("Why is there a yellow warning sign?"), true);
|
linkLabel1.setCallback(function() { Backend.openExternalLink("https://proton.me/support/macos-certificate-warning"); }, qsTr("Why is there a yellow warning sign?"), true);
|
||||||
linkLabel2.setCallback(wizard.showClientParams, qsTr("Configure Apple Mail manually"), false);
|
linkLabel2.setCallback(wizard.showClientParams, qsTr("Configure Apple Mail manually"), false);
|
||||||
|
|||||||
@ -27,6 +27,7 @@ Item {
|
|||||||
Onboarding,
|
Onboarding,
|
||||||
Login,
|
Login,
|
||||||
ClientConfigSelector,
|
ClientConfigSelector,
|
||||||
|
ClientConfigCertInstall,
|
||||||
ClientConfigAppleMail
|
ClientConfigAppleMail
|
||||||
}
|
}
|
||||||
enum RootStack {
|
enum RootStack {
|
||||||
@ -96,7 +97,7 @@ Item {
|
|||||||
backAction = _showClientConfig;
|
backAction = _showClientConfig;
|
||||||
rootStackLayout.currentIndex = SetupWizard.RootStack.TwoPanesView;
|
rootStackLayout.currentIndex = SetupWizard.RootStack.TwoPanesView;
|
||||||
rightContent.currentIndex = SetupWizard.ContentStack.ClientConfigAppleMail;
|
rightContent.currentIndex = SetupWizard.ContentStack.ClientConfigAppleMail;
|
||||||
clientConfigAppleMail.showAutoconfig(); // This will trigger signals that will display the appropriate left content.
|
leftContent.showAppleMailAutoconfigProfileInstall();
|
||||||
}
|
}
|
||||||
function showBugReport() {
|
function showBugReport() {
|
||||||
closeWizard();
|
closeWizard();
|
||||||
@ -118,6 +119,15 @@ Item {
|
|||||||
backAction = _showClientConfig;
|
backAction = _showClientConfig;
|
||||||
rootStackLayout.currentIndex = SetupWizard.RootStack.ClientConfigParameters;
|
rootStackLayout.currentIndex = SetupWizard.RootStack.ClientConfigParameters;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function showCertInstall() {
|
||||||
|
backAction = _showClientConfig;
|
||||||
|
clientConfigCertInstall.reset();
|
||||||
|
rootStackLayout.currentIndex = SetupWizard.RootStack.TwoPanesView;
|
||||||
|
leftContent.showCertificateInstall()
|
||||||
|
rightContent.currentIndex = SetupWizard.ContentStack.ClientConfigCertInstall;
|
||||||
|
}
|
||||||
|
|
||||||
function showLogin(username = "") {
|
function showLogin(username = "") {
|
||||||
backAction = null;
|
backAction = null;
|
||||||
rootStackLayout.currentIndex = SetupWizard.RootStack.TwoPanesView;
|
rootStackLayout.currentIndex = SetupWizard.RootStack.TwoPanesView;
|
||||||
@ -146,7 +156,13 @@ Item {
|
|||||||
let address = user ? user.addresses[0] : "";
|
let address = user ? user.addresses[0] : "";
|
||||||
showClientConfig(user, address, true);
|
showClientConfig(user, address, true);
|
||||||
}
|
}
|
||||||
|
function onCertificateInstallSuccess() {
|
||||||
|
if (client === SetupWizard.Client.MicrosoftOutlook) {
|
||||||
|
showClientParams()
|
||||||
|
} else {
|
||||||
|
showAppleMailAutoConfig()
|
||||||
|
}
|
||||||
|
}
|
||||||
target: Backend
|
target: Backend
|
||||||
}
|
}
|
||||||
StackLayout {
|
StackLayout {
|
||||||
@ -176,17 +192,6 @@ Item {
|
|||||||
width: ProtonStyle.wizard_pane_width
|
width: ProtonStyle.wizard_pane_width
|
||||||
wizard: root
|
wizard: root
|
||||||
|
|
||||||
Connections {
|
|
||||||
function onAppleMailAutoconfigCertificateInstallPageShown() {
|
|
||||||
leftContent.showAppleMailAutoconfigCertificateInstall();
|
|
||||||
}
|
|
||||||
function onAppleMailAutoconfigProfileInstallPageShow() {
|
|
||||||
leftContent.showAppleMailAutoconfigProfileInstall();
|
|
||||||
}
|
|
||||||
|
|
||||||
target: clientConfigAppleMail
|
|
||||||
}
|
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
function onLogin2FARequested() {
|
function onLogin2FARequested() {
|
||||||
leftContent.showLogin2FA();
|
leftContent.showLogin2FA();
|
||||||
@ -247,6 +252,13 @@ Item {
|
|||||||
id: clientConfigSelector
|
id: clientConfigSelector
|
||||||
wizard: root
|
wizard: root
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// rightContent stack index 2
|
||||||
|
ClientConfigCertInstall {
|
||||||
|
id: clientConfigCertInstall
|
||||||
|
wizard: root
|
||||||
|
}
|
||||||
|
|
||||||
// rightContent stack index 3
|
// rightContent stack index 3
|
||||||
ClientConfigAppleMail {
|
ClientConfigAppleMail {
|
||||||
id: clientConfigAppleMail
|
id: clientConfigAppleMail
|
||||||
|
|||||||
Reference in New Issue
Block a user