diff --git a/internal/frontend/bridge-gui/bridge-gui/Resources.qrc b/internal/frontend/bridge-gui/bridge-gui/Resources.qrc
index 180a9f7c..2eb690cf 100644
--- a/internal/frontend/bridge-gui/bridge-gui/Resources.qrc
+++ b/internal/frontend/bridge-gui/bridge-gui/Resources.qrc
@@ -109,7 +109,9 @@
qml/SetupGuide.qml
qml/SetupWizard/ClientListItem.qml
qml/SetupWizard/LeftPane.qml
+ qml/SetupWizard/ClientConfigOutlookSelector.qml
qml/SetupWizard/ClientConfigSelector.qml
+ qml/SetupWizard/ClientConfigWarning.qml
qml/SetupWizard/SetupWizard.qml
qml/SetupWizard/LoginRightPane.qml
qml/SetupWizard/OnboardingRightPane.qml
diff --git a/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientConfigOutlookSelector.qml b/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientConfigOutlookSelector.qml
new file mode 100644
index 00000000..5843eb5a
--- /dev/null
+++ b/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientConfigOutlookSelector.qml
@@ -0,0 +1,92 @@
+// Copyright (c) 2023 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 .
+import QtQml
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+import QtQuick.Controls.impl
+import Proton
+
+Item {
+ id: root
+
+ property ColorScheme colorScheme: wizard.colorScheme
+ readonly property bool onMacOS: (Backend.goos === "darwin")
+ readonly property bool onWindows: (Backend.goos === "windows")
+ property var wizard
+
+ ColumnLayout {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: parent.top
+ spacing: 0
+
+ Label {
+ Layout.alignment: Qt.AlignHCenter
+ Layout.fillWidth: true
+ colorScheme: root.colorScheme
+ text: qsTr("Pick your version of Outlook")
+ type: Label.LabelType.Heading
+ }
+ Item {
+ Layout.preferredHeight: 72
+ }
+ ClientListItem {
+ Layout.fillWidth: true
+ colorScheme: root.colorScheme
+ iconSource: "/qml/icons/ic-microsoft-outlook.svg"
+ text: "Outlook from Microsoft 365"
+
+ onClicked: {
+ wizard.clientVersion = "365";
+ wizard.showClientWarning();
+ }
+ }
+ ClientListItem {
+ Layout.fillWidth: true
+ colorScheme: root.colorScheme
+ iconSource: "/qml/icons/ic-microsoft-outlook.svg"
+ text: "Outlook 2019"
+
+ onClicked: {
+ wizard.clientVersion = "2019";
+ wizard.showClientWarning();
+ }
+ }
+ ClientListItem {
+ Layout.fillWidth: true
+ colorScheme: root.colorScheme
+ iconSource: "/qml/icons/ic-microsoft-outlook.svg"
+ text: "Outlook 2016"
+
+ onClicked: {
+ wizard.clientVersion = "2016";
+ wizard.showClientWarning();
+ }
+ }
+ Item {
+ Layout.preferredHeight: 72
+ }
+ Button {
+ Layout.fillWidth: true
+ colorScheme: root.colorScheme
+ secondary: true
+ text: qsTr("Cancel")
+
+ onClicked: {
+ root.wizard.closeWizard();
+ }
+ }
+ }
+}
+
diff --git a/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientConfigSelector.qml b/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientConfigSelector.qml
index ce0335c2..1081c75c 100644
--- a/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientConfigSelector.qml
+++ b/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientConfigSelector.qml
@@ -33,6 +33,7 @@ Item {
Label {
Layout.alignment: Qt.AlignHCenter
+ Layout.fillWidth: true
colorScheme: root.colorScheme
text: qsTr("Select your email application")
type: Label.LabelType.Heading
@@ -60,6 +61,7 @@ Item {
onClicked: {
wizard.client = SetupWizard.Client.MicrosoftOutlook;
+ wizard.showOutlookSelector();
}
}
ClientListItem {
diff --git a/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientConfigWarning.qml b/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientConfigWarning.qml
new file mode 100644
index 00000000..039bcc95
--- /dev/null
+++ b/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/ClientConfigWarning.qml
@@ -0,0 +1,110 @@
+// Copyright (c) 2023 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 .
+import QtQml
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+import QtQuick.Controls.impl
+import Proton
+
+// Copyright (c) 2023 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 .
+import QtQml
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+import QtQuick.Controls.impl
+import Proton
+
+Item {
+ id: root
+
+ property ColorScheme colorScheme: wizard.colorScheme
+ property var wizard
+
+ ColumnLayout {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: parent.top
+ spacing: 0
+
+ Label {
+ Layout.fillWidth: true
+ colorScheme: root.colorScheme
+ horizontalAlignment: Text.AlignHCenter
+ text: qsTr("A word of warning")
+ type: Label.LabelType.Heading
+ wrapMode: Text.WordWrap
+ }
+ Item {
+ Layout.preferredHeight: 96
+ }
+ Label {
+ Layout.alignment: Qt.AlignHCenter
+ Layout.fillWidth: true
+ horizontalAlignment: Text.AlignHCenter
+ colorScheme: root.colorScheme
+ text: qsTr("Do not enter your Proton account password in you email application.")
+ type: Label.LabelType.Body_bold
+ wrapMode: Text.WordWrap
+ }
+ Item {
+ Layout.preferredHeight: 96
+ }
+ Label {
+ Layout.alignment: Qt.AlignHCenter
+ Layout.fillWidth: true
+ colorScheme: root.colorScheme
+ horizontalAlignment: Text.AlignHCenter
+ text: qsTr("We have generated a new password for you. It will work only on this computer, and can safely be entered in your email client.")
+ type: Label.LabelType.Body
+ wrapMode: Text.WordWrap
+ }
+ Item {
+ Layout.preferredHeight: 96
+ }
+ Button {
+ Layout.fillWidth: true
+ colorScheme: root.colorScheme
+ text: qsTr("I understand")
+
+ onClicked: {
+ root.wizard.closeWizard();
+ }
+ }
+ Item {
+ Layout.preferredHeight: 32
+ }
+ Button {
+ Layout.fillWidth: true
+ colorScheme: root.colorScheme
+ secondary: true
+ text: qsTr("Cancel")
+
+ onClicked: {
+ root.wizard.closeWizard();
+ }
+ }
+ }
+}
+
diff --git a/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/LeftPane.qml b/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/LeftPane.qml
index 752d4311..df16ad11 100644
--- a/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/LeftPane.qml
+++ b/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/LeftPane.qml
@@ -23,12 +23,6 @@ Item {
property ColorScheme colorScheme
- function showLogin2FA() {
- descriptionLabel.text = qsTr("You have enabled two-factor authentication. Please enter the 6-digit code provided by your authenticator application.");
- linkLabel1.clear();
- linkLabel2.clear();
- showLoginCommon();
- }
function showClientSelector() {
titleLabel.text = qsTr("Configure your email client");
descriptionLabel.text = qsTr("Bridge is now connected to Proton, and has already started downloading your messages. Let’s now connect your email client to Bridge.");
@@ -40,6 +34,18 @@ Item {
Layout.preferredHeight = 72;
Layout.preferredWidth = 72;
}
+ function showLogin() {
+ descriptionLabel.text = qsTr("Let's start by signing in to your Proton account.");
+ linkLabel1.setLink("https://proton.me/mail/pricing", qsTr("Create or upgrade your account"));
+ linkLabel2.clear();
+ showLoginCommon();
+ }
+ function showLogin2FA() {
+ descriptionLabel.text = qsTr("You have enabled two-factor authentication. Please enter the 6-digit code provided by your authenticator application.");
+ linkLabel1.clear();
+ linkLabel2.clear();
+ showLoginCommon();
+ }
function showLoginCommon() {
titleLabel.text = qsTr("Sign in to your Proton Account");
icon.Layout.preferredHeight = 72;
@@ -65,12 +71,18 @@ Item {
icon.sourceSize.height = 148;
icon.sourceSize.width = 265;
}
- function showLogin() {
- descriptionLabel.text = qsTr("Let's start by signing in to your Proton account.");
- linkLabel1.setLink("https://proton.me/mail/pricing", qsTr("Create or upgrade your account"));
+ function showOutlookSelector() {
+ titleLabel.text = qsTr("Configure Outlook");
+ descriptionLabel.text = qsTr("We will now guide you through the process of setting up your Proton account in Outlook.");
+ linkLabel1.setLink("https://proton.me/support/bridge", qsTr("My version of Outlook is not listed"));
linkLabel2.clear();
- showLoginCommon();
+ icon.Layout.preferredHeight = 72;
+ icon.Layout.preferredWidth = 72;
+ icon.source = "/qml/icons/ic-microsoft-outlook.svg";
+ icon.sourceSize.height = 128;
+ icon.sourceSize.width = 128;
}
+
Connections {
function onLogin2FARequested() {
showLogin2FA();
diff --git a/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/SetupWizard.qml b/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/SetupWizard.qml
index 6f4d91ef..d7e70a85 100644
--- a/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/SetupWizard.qml
+++ b/internal/frontend/bridge-gui/bridge-gui/qml/SetupWizard/SetupWizard.qml
@@ -37,6 +37,12 @@ Item {
function closeWizard() {
root.visible = false;
}
+ function showOutlookSelector() {
+ console.error("showOutlookSelector()");
+ root.visible = true;
+ leftContent.showOutlookSelector();
+ rightContent.currentIndex = 3;
+ }
function start() {
root.visible = true;
leftContent.showOnboarding();
@@ -57,6 +63,13 @@ Item {
loginRightPane.reset(true);
}
+ function showClientWarning() {
+ console.error("showClientWarning()");
+ root.visible = true;
+ //leftContent.showWarning();
+ rightContent.currentIndex = 4
+ }
+
Connections {
function onLoginFinished() {
startClientConfig();
@@ -141,6 +154,20 @@ Item {
Layout.fillWidth: true
wizard: root
}
+ // stack index 3
+ ClientConfigOutlookSelector {
+ id: clientConfigOutlookSelector
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ wizard: root
+ }
+ // stack index 4
+ ClientConfigWarning {
+ id: clientConfigWarning
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ wizard: root
+ }
}
LinkLabel {
id: reportProblemLink