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