Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/desktop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelix Weilbach <felix.weilbach@nextcloud.com>2021-06-22 13:01:18 +0300
committerFelix Weilbach (Rebase PR Action) <felix.weilbach@t-online.de>2021-06-24 18:43:51 +0300
commit8376b99ec55a1b92ccfd40d17384143dfc542328 (patch)
tree14f3aa1634f706396595f33d2b270ed8e5d40bbb /src
parent216a57c74e13b2866476308e46e2995baedc6b23 (diff)
Allow to compile without QWebEngine
Signed-off-by: Felix Weilbach <felix.weilbach@nextcloud.com>
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt6
-rw-r--r--src/gui/CMakeLists.txt18
-rw-r--r--src/gui/creds/webflowcredentials.cpp8
-rw-r--r--src/gui/creds/webflowcredentialsdialog.cpp23
-rw-r--r--src/gui/creds/webflowcredentialsdialog.h4
-rw-r--r--src/gui/wizard/owncloudsetuppage.cpp2
-rw-r--r--src/gui/wizard/owncloudwizard.cpp18
-rw-r--r--src/gui/wizard/owncloudwizard.h2
-rw-r--r--src/gui/wizard/owncloudwizardcommon.h2
-rw-r--r--src/gui/wizard/welcomepage.cpp2
-rw-r--r--src/libsync/networkjobs.cpp9
-rw-r--r--src/libsync/networkjobs.h4
12 files changed, 83 insertions, 15 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 5c19ad9ce..4245333c5 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -6,7 +6,11 @@ include(ECMEnableSanitizers)
set(synclib_NAME ${APPLICATION_EXECUTABLE}sync)
-find_package(Qt5 5.12 COMPONENTS Core Network Xml Concurrent WebEngineWidgets WebEngine REQUIRED)
+find_package(Qt5 5.12 COMPONENTS Core Network Xml Concurrent REQUIRED)
+if(WITH_WEBENGINE)
+ find_package(Qt5 5.12 COMPONENTS WebEngineWidgets WebEngine REQUIRED)
+endif()
+
get_target_property (QT_QMAKE_EXECUTABLE Qt5::qmake IMPORTED_LOCATION)
message(STATUS "Using Qt ${Qt5Core_VERSION} (${QT_QMAKE_EXECUTABLE})")
diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt
index fb87145f8..581863ba7 100644
--- a/src/gui/CMakeLists.txt
+++ b/src/gui/CMakeLists.txt
@@ -129,12 +129,17 @@ set(client_SRCS
wizard/owncloudwizardcommon.cpp
wizard/owncloudwizard.cpp
wizard/owncloudwizardresultpage.cpp
- wizard/webviewpage.cpp
- wizard/webview.cpp
wizard/slideshow.cpp
wizard/welcomepage.cpp
wizard/linklabel.cpp
-)
+ )
+
+if (WITH_WEBENGINE)
+ list(APPEND client_SRCS
+ wizard/webviewpage.cpp
+ wizard/webview.cpp
+ )
+endif()
IF(BUILD_UPDATER)
set(updater_SRCS
@@ -329,9 +334,12 @@ target_link_libraries(nextcloudCore
Qt5::Qml
Qt5::Quick
Qt5::QuickControls2
- Qt5::WebEngineWidgets
${synclib_NAME}
-)
+ )
+
+if(WITH_WEBENGINE)
+ target_link_libraries(nextcloudCore PUBLIC Qt5::WebEngineWidgets)
+endif()
set_target_properties(nextcloudCore
PROPERTIES
diff --git a/src/gui/creds/webflowcredentials.cpp b/src/gui/creds/webflowcredentials.cpp
index 17b8630b5..b40d4f993 100644
--- a/src/gui/creds/webflowcredentials.cpp
+++ b/src/gui/creds/webflowcredentials.cpp
@@ -16,7 +16,9 @@
#include "account.h"
#include "configfile.h"
#include "theme.h"
+#ifdef WITH_WEBENGINE
#include "wizard/webview.h"
+#endif // WITH_WEBENGINE
#include "webflowcredentialsdialog.h"
using namespace QKeychain;
@@ -144,8 +146,12 @@ void WebFlowCredentials::askFromUser() {
// Do a DetermineAuthTypeJob to make sure that the server is still using Flow2
auto job = new DetermineAuthTypeJob(_account->sharedFromThis(), this);
connect(job, &DetermineAuthTypeJob::authType, [this](DetermineAuthTypeJob::AuthType type) {
- // LoginFlowV2 > WebViewFlow > OAuth > Shib > Basic
+ // LoginFlowV2 > WebViewFlow > OAuth > Shib > Basic
+#ifdef WITH_WEBENGINE
bool useFlow2 = (type != DetermineAuthTypeJob::WebViewFlow);
+#else // WITH_WEBENGINE
+ bool useFlow2 = true;
+#endif // WITH_WEBENGINE
_askDialog = new WebFlowCredentialsDialog(_account, useFlow2);
diff --git a/src/gui/creds/webflowcredentialsdialog.cpp b/src/gui/creds/webflowcredentialsdialog.cpp
index 42b4ee22f..159734b64 100644
--- a/src/gui/creds/webflowcredentialsdialog.cpp
+++ b/src/gui/creds/webflowcredentialsdialog.cpp
@@ -8,16 +8,20 @@
#include "owncloudgui.h"
#include "headerbanner.h"
#include "wizard/owncloudwizardcommon.h"
+#ifdef WITH_WEBENGINE
#include "wizard/webview.h"
+#endif // WITH_WEBENGINE
#include "wizard/flow2authwidget.h"
namespace OCC {
WebFlowCredentialsDialog::WebFlowCredentialsDialog(Account *account, bool useFlow2, QWidget *parent)
- : QDialog(parent),
- _useFlow2(useFlow2),
- _flow2AuthWidget(nullptr),
- _webView(nullptr)
+ : QDialog(parent)
+ , _useFlow2(useFlow2)
+ , _flow2AuthWidget(nullptr)
+#ifdef WITH_WEBENGINE
+ , _webView(nullptr)
+#endif // WITH_WEBENGINE
{
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
@@ -49,10 +53,12 @@ WebFlowCredentialsDialog::WebFlowCredentialsDialog(Account *account, bool useFlo
_flow2AuthWidget->startAuth(account);
} else {
+#ifdef WITH_WEBENGINE
_webView = new WebView();
_containerLayout->addWidget(_webView);
connect(_webView, &WebView::urlCatched, this, &WebFlowCredentialsDialog::urlCatched);
+#endif // WITH_WEBENGINE
}
auto app = static_cast<Application *>(qApp);
@@ -73,12 +79,14 @@ WebFlowCredentialsDialog::WebFlowCredentialsDialog(Account *account, bool useFlo
void WebFlowCredentialsDialog::closeEvent(QCloseEvent* e) {
Q_UNUSED(e)
+#ifdef WITH_WEBENGINE
if (_webView) {
// Force calling WebView::~WebView() earlier so that _profile and _page are
// deleted in the correct order.
_webView->deleteLater();
_webView = nullptr;
}
+#endif // WITH_WEBENGINE
if (_flow2AuthWidget) {
_flow2AuthWidget->resetAuth();
@@ -89,9 +97,14 @@ void WebFlowCredentialsDialog::closeEvent(QCloseEvent* e) {
emit onClose();
}
-void WebFlowCredentialsDialog::setUrl(const QUrl &url) {
+void WebFlowCredentialsDialog::setUrl(const QUrl &url)
+{
+#ifdef WITH_WEBENGINE
if (_webView)
_webView->setUrl(url);
+#else // WITH_WEBENGINE
+ Q_UNUSED(url);
+#endif // WITH_WEBENGINE
}
void WebFlowCredentialsDialog::setInfo(const QString &msg) {
diff --git a/src/gui/creds/webflowcredentialsdialog.h b/src/gui/creds/webflowcredentialsdialog.h
index 50ed7088d..35fb6b3bb 100644
--- a/src/gui/creds/webflowcredentialsdialog.h
+++ b/src/gui/creds/webflowcredentialsdialog.h
@@ -13,7 +13,9 @@ class QVBoxLayout;
namespace OCC {
class HeaderBanner;
+#ifdef WITH_WEBENGINE
class WebView;
+#endif // WITH_WEBENGINE
class Flow2AuthWidget;
class WebFlowCredentialsDialog : public QDialog
@@ -50,7 +52,9 @@ private:
bool _useFlow2;
Flow2AuthWidget *_flow2AuthWidget;
+#ifdef WITH_WEBENGINE
WebView *_webView;
+#endif // WITH_WEBENGINE
QLabel *_errorLabel;
QLabel *_infoLabel;
diff --git a/src/gui/wizard/owncloudsetuppage.cpp b/src/gui/wizard/owncloudsetuppage.cpp
index 8d2117e79..0e6e06ca4 100644
--- a/src/gui/wizard/owncloudsetuppage.cpp
+++ b/src/gui/wizard/owncloudsetuppage.cpp
@@ -213,8 +213,10 @@ int OwncloudSetupPage::nextId() const
return WizardCommon::Page_OAuthCreds;
case DetermineAuthTypeJob::LoginFlowV2:
return WizardCommon::Page_Flow2AuthCreds;
+#ifdef WITH_WEBENGINE
case DetermineAuthTypeJob::WebViewFlow:
return WizardCommon::Page_WebView;
+#endif // WITH_WEBENGINE
}
return WizardCommon::Page_HttpCreds;
}
diff --git a/src/gui/wizard/owncloudwizard.cpp b/src/gui/wizard/owncloudwizard.cpp
index 0127b2f16..565abe301 100644
--- a/src/gui/wizard/owncloudwizard.cpp
+++ b/src/gui/wizard/owncloudwizard.cpp
@@ -54,7 +54,11 @@ OwncloudWizard::OwncloudWizard(QWidget *parent)
, _flow2CredsPage(new Flow2AuthCredsPage)
, _advancedSetupPage(new OwncloudAdvancedSetupPage(this))
, _resultPage(new OwncloudWizardResultPage)
+#ifdef WITH_WEBENGINE
, _webViewPage(new WebViewPage(this))
+#else // WITH_WEBENGINE
+ , _webViewPage(nullptr)
+#endif // WITH_WEBENGINE
{
setObjectName("owncloudWizard");
@@ -66,7 +70,9 @@ OwncloudWizard::OwncloudWizard(QWidget *parent)
setPage(WizardCommon::Page_Flow2AuthCreds, _flow2CredsPage);
setPage(WizardCommon::Page_AdvancedSetup, _advancedSetupPage);
setPage(WizardCommon::Page_Result, _resultPage);
+#ifdef WITH_WEBENGINE
setPage(WizardCommon::Page_WebView, _webViewPage);
+#endif // WITH_WEBENGINE
connect(this, &QDialog::finished, this, &OwncloudWizard::basicSetupFinished);
@@ -78,7 +84,9 @@ OwncloudWizard::OwncloudWizard(QWidget *parent)
connect(_httpCredsPage, &OwncloudHttpCredsPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
connect(_browserCredsPage, &OwncloudOAuthCredsPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
connect(_flow2CredsPage, &Flow2AuthCredsPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
+#ifdef WITH_WEBENGINE
connect(_webViewPage, &WebViewPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
+#endif // WITH_WEBENGINE
connect(_advancedSetupPage, &OwncloudAdvancedSetupPage::createLocalAndRemoteFolders,
this, &OwncloudWizard::createLocalAndRemoteFolders);
connect(this, &QWizard::customButtonClicked, this, &OwncloudWizard::skipFolderConfiguration);
@@ -230,9 +238,11 @@ void OwncloudWizard::successfulStep()
_flow2CredsPage->setConnected();
break;
+#ifdef WITH_WEBENGINE
case WizardCommon::Page_WebView:
_webViewPage->setConnected();
break;
+#endif // WITH_WEBENGINE
case WizardCommon::Page_AdvancedSetup:
_advancedSetupPage->directoriesCreated();
@@ -256,8 +266,10 @@ void OwncloudWizard::setAuthType(DetermineAuthTypeJob::AuthType type)
_credentialsPage = _browserCredsPage;
} else if (type == DetermineAuthTypeJob::LoginFlowV2) {
_credentialsPage = _flow2CredsPage;
+#ifdef WITH_WEBENGINE
} else if (type == DetermineAuthTypeJob::WebViewFlow) {
_credentialsPage = _webViewPage;
+#endif // WITH_WEBENGINE
} else { // try Basic auth even for "Unknown"
_credentialsPage = _httpCredsPage;
}
@@ -281,7 +293,11 @@ void OwncloudWizard::slotCurrentPageChanged(int id)
button(QWizard::NextButton)->setHidden(true);
// Need to set it from here, otherwise it has no effect
_welcomePage->setLoginButtonDefault();
- } else if (id == WizardCommon::Page_WebView || id == WizardCommon::Page_Flow2AuthCreds) {
+ } else if (
+#ifdef WITH_WEBENGINE
+ id == WizardCommon::Page_WebView ||
+#endif // WITH_WEBENGINE
+ id == WizardCommon::Page_Flow2AuthCreds) {
setButtonLayout({ QWizard::Stretch, QWizard::BackButton });
} else if (id == WizardCommon::Page_AdvancedSetup) {
setButtonLayout({ QWizard::Stretch, QWizard::CustomButton1, QWizard::BackButton, QWizard::NextButton });
diff --git a/src/gui/wizard/owncloudwizard.h b/src/gui/wizard/owncloudwizard.h
index e8480d3bd..ff253587f 100644
--- a/src/gui/wizard/owncloudwizard.h
+++ b/src/gui/wizard/owncloudwizard.h
@@ -128,7 +128,7 @@ private:
OwncloudAdvancedSetupPage *_advancedSetupPage;
OwncloudWizardResultPage *_resultPage;
AbstractCredentialsWizardPage *_credentialsPage = nullptr;
- WebViewPage *_webViewPage;
+ WebViewPage *_webViewPage = nullptr;
QStringList _setupLog;
diff --git a/src/gui/wizard/owncloudwizardcommon.h b/src/gui/wizard/owncloudwizardcommon.h
index 30b4dfb80..7c6eef5ab 100644
--- a/src/gui/wizard/owncloudwizardcommon.h
+++ b/src/gui/wizard/owncloudwizardcommon.h
@@ -46,7 +46,9 @@ namespace WizardCommon {
Page_HttpCreds,
Page_OAuthCreds,
Page_Flow2AuthCreds,
+#ifdef WITH_WEBENGINE
Page_WebView,
+#endif // WITH_WEBENGINE
Page_AdvancedSetup,
Page_Result
};
diff --git a/src/gui/wizard/welcomepage.cpp b/src/gui/wizard/welcomepage.cpp
index 668c5b02f..fe37ebd64 100644
--- a/src/gui/wizard/welcomepage.cpp
+++ b/src/gui/wizard/welcomepage.cpp
@@ -94,11 +94,13 @@ void WelcomePage::setupLoginButton()
void WelcomePage::setupCreateAccountButton()
{
+#ifdef WITH_WEBENGINE
connect(_ui->createAccountButton, &QPushButton::clicked, this, [this](bool /*checked*/) {
_ocWizard->setRegistration(true);
_nextPage = WizardCommon::Page_WebView;
_ocWizard->next();
});
+#endif // WITH_WEBENGINE
}
void WelcomePage::setupHostYourOwnServerLabel()
diff --git a/src/libsync/networkjobs.cpp b/src/libsync/networkjobs.cpp
index 1330ff518..65b1b5474 100644
--- a/src/libsync/networkjobs.cpp
+++ b/src/libsync/networkjobs.cpp
@@ -30,6 +30,7 @@
#include <QCoreApplication>
#include <QJsonDocument>
#include <QJsonObject>
+#include <qloggingcategory.h>
#ifndef TOKEN_AUTH_ONLY
#include <QPainter>
#include <QPainterPath>
@@ -958,7 +959,11 @@ void DetermineAuthTypeJob::start()
auto flow = gs.toObject().value("desktoplogin");
if (flow != QJsonValue::Undefined) {
if (flow.toInt() == 1) {
+#ifdef WITH_WEBENGINE
_resultOldFlow = WebViewFlow;
+#else // WITH_WEBENGINE
+ qCWarning(lcDetermineAuthTypeJob) << "Server does only support flow1, but this client was compiled without support for flow1";
+#endif // WITH_WEBENGINE
}
}
}
@@ -985,20 +990,24 @@ void DetermineAuthTypeJob::checkAllDone()
auto result = _resultPropfind;
+#ifdef WITH_WEBENGINE
// WebViewFlow > OAuth > Basic
if (_account->serverVersionInt() >= Account::makeServerVersion(12, 0, 0)) {
result = WebViewFlow;
}
+#endif // WITH_WEBENGINE
// LoginFlowV2 > WebViewFlow > OAuth > Basic
if (_account->serverVersionInt() >= Account::makeServerVersion(16, 0, 0)) {
result = LoginFlowV2;
}
+#ifdef WITH_WEBENGINE
// If we determined that we need the webview flow (GS for example) then we switch to that
if (_resultOldFlow == WebViewFlow) {
result = WebViewFlow;
}
+#endif // WITH_WEBENGINE
// If we determined that a simple get gave us an authentication required error
// then the server enforces basic auth and we got no choice but to use this
diff --git a/src/libsync/networkjobs.h b/src/libsync/networkjobs.h
index 1b0e212d4..8e88853bc 100644
--- a/src/libsync/networkjobs.h
+++ b/src/libsync/networkjobs.h
@@ -444,9 +444,11 @@ class OWNCLOUDSYNC_EXPORT DetermineAuthTypeJob : public QObject
public:
enum AuthType {
NoAuthType, // used only before we got a chance to probe the server
+#ifdef WITH_WEBENGINE
+ WebViewFlow,
+#endif // WITH_WEBENGINE
Basic, // also the catch-all fallback for backwards compatibility reasons
OAuth,
- WebViewFlow,
LoginFlowV2
};
Q_ENUM(AuthType)