From 07512cb2c8ed6e6878ddb29e44219cb5d71eaf59 Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Mon, 13 Jun 2016 16:42:36 -0700 Subject: QML UI: allow entering the cloud PIN on the mobile UI Now the user doesn't need to do this on the desktop app anymore. Signed-off-by: Dirk Hohndel --- mobile-widgets/qml/CloudCredentials.qml | 14 ++++++++++++++ mobile-widgets/qml/main.qml | 2 ++ mobile-widgets/qmlmanager.cpp | 17 ++++++++++------- 3 files changed, 26 insertions(+), 7 deletions(-) (limited to 'mobile-widgets') diff --git a/mobile-widgets/qml/CloudCredentials.qml b/mobile-widgets/qml/CloudCredentials.qml index 1222dbb2b..7f1e0d986 100644 --- a/mobile-widgets/qml/CloudCredentials.qml +++ b/mobile-widgets/qml/CloudCredentials.qml @@ -16,6 +16,7 @@ Item { function saveCredentials() { manager.cloudUserName = login.text manager.cloudPassword = password.text + manager.cloudPin = pin.text manager.saveCloudCredentials() } @@ -76,6 +77,7 @@ Item { Qt.ImhNoAutoUppercase Layout.fillWidth: true } + GridLayout { columns: 2 @@ -90,6 +92,18 @@ Item { text: qsTr("Show password") } } + + Kirigami.Label { + text: qsTr("PIN") + visible: rootItem.showPin + } + StyledTextField { + id: pin + text: "" + Layout.fillWidth: true + visible: rootItem.showPin + } + Item { width: Kirigami.Units.gridUnit; height: width } } } diff --git a/mobile-widgets/qml/main.qml b/mobile-widgets/qml/main.qml index a855cdaf6..99c8dc27b 100644 --- a/mobile-widgets/qml/main.qml +++ b/mobile-widgets/qml/main.qml @@ -23,6 +23,8 @@ Kirigami.ApplicationWindow { property QtObject notification: null property bool showingDiveList: false property alias syncToCloud: manager.syncToCloud + property alias showPin: manager.showPin + onAccessingCloudChanged: { // >= 0 for updating cloud, -1 for hide, < -1 for local storage if (accessingCloud >= 0) { diff --git a/mobile-widgets/qmlmanager.cpp b/mobile-widgets/qmlmanager.cpp index 3e19969b5..d9ab7f2ee 100644 --- a/mobile-widgets/qmlmanager.cpp +++ b/mobile-widgets/qmlmanager.cpp @@ -293,6 +293,9 @@ void QMLManager::saveCloudCredentials() currentGitLocalOnly = prefs.git_local_only; prefs.git_local_only = false; openLocalThenRemote(url); + } else if (prefs.cloud_verification_status = CS_NEED_TO_VERIFY && !cloudPin().isEmpty()) { + // the user entered a PIN? + tryRetrieveDataFromBackend(); } } @@ -306,7 +309,7 @@ void QMLManager::checkCredentialsAndExecute(execute_function_type execute) setStartPageText(tr("Testing cloud credentials")); appendTextToLog("Have credentials, let's see if they are valid"); CloudStorageAuthenticate *csa = new CloudStorageAuthenticate(this); - csa->backend(prefs.cloud_storage_email, prefs.cloud_storage_password); + csa->backend(prefs.cloud_storage_email, prefs.cloud_storage_password, cloudPin()); // let's wait here for the signal to avoid too many more nested functions QTimer myTimer; myTimer.setSingleShot(true); @@ -322,18 +325,18 @@ void QMLManager::checkCredentialsAndExecute(execute_function_type execute) return; } myTimer.stop(); - if (prefs.cloud_verification_status == CS_NEED_TO_VERIFY) { + setCloudPin(""); + if (prefs.cloud_verification_status != CS_VERIFIED) { // here we need to enter the PIN appendTextToLog(QStringLiteral("Need to verify the email address - enter PIN in desktop app")); setStartPageText(RED_FONT + tr("Cannot connect to cloud storage - cloud account not verified") + END_FONT); revertToNoCloudIfNeeded(); - return; - } else if (prefs.cloud_verification_status != CS_VERIFIED) { - appendTextToLog(QString("Cloud account verification failed - status %1").arg(prefs.cloud_verification_status)); - setStartPageText(RED_FONT + tr("Cannot connect to cloud storage - check developer log") + END_FONT); - revertToNoCloudIfNeeded(); + setShowPin(true); return; } + if (showPin()) + setShowPin(false); + // now check the redirect URL to make sure everything is set up on the cloud server connect(manager(), &QNetworkAccessManager::authenticationRequired, this, &QMLManager::provideAuth, Qt::UniqueConnection); QUrl url(CLOUDREDIRECTURL); -- cgit v1.2.3-70-g09d2