diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index d389df77d7..a52e7d85fc 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -49,6 +49,7 @@ set(client_UI_SRCS wizard/termsofservicecheckwidget.ui wizard/webview.ui wizard/welcomepage.ui + wizard/proxysettings.ui ) qt_add_resources(client_UI_SRCS ../../resources.qrc ${CMAKE_SOURCE_DIR}/theme.qrc) @@ -254,6 +255,8 @@ set(client_SRCS wizard/welcomepage.cpp wizard/linklabel.h wizard/linklabel.cpp + wizard/wizardproxysettings.h + wizard/wizardproxysettings.cpp ) if (NOT DISABLE_ACCOUNT_MIGRATION) diff --git a/src/gui/wizard/owncloudsetupnocredspage.ui b/src/gui/wizard/owncloudsetupnocredspage.ui index d12a9e1438..5777cff4e0 100644 --- a/src/gui/wizard/owncloudsetupnocredspage.ui +++ b/src/gui/wizard/owncloudsetupnocredspage.ui @@ -36,10 +36,10 @@ - Qt::Vertical + Qt::Orientation::Vertical - QSizePolicy::Expanding + QSizePolicy::Policy::Expanding @@ -57,7 +57,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -77,7 +77,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -92,10 +92,10 @@ - Qt::Vertical + Qt::Orientation::Vertical - QSizePolicy::Minimum + QSizePolicy::Policy::Minimum @@ -129,7 +129,7 @@ 0 - QLayout::SetDefaultConstraint + QLayout::SizeConstraint::SetDefaultConstraint @@ -139,10 +139,10 @@ - Qt::Vertical + Qt::Orientation::Vertical - QSizePolicy::Minimum + QSizePolicy::Policy::Minimum @@ -160,7 +160,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -175,7 +175,6 @@ 12 - 75 true @@ -187,7 +186,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -210,10 +209,10 @@ - Qt::Horizontal + Qt::Orientation::Horizontal - QSizePolicy::Expanding + QSizePolicy::Policy::Expanding @@ -262,7 +261,7 @@ This is the link to your %1 web interface when you open it in the browser. - Qt::AlignCenter + Qt::AlignmentFlag::AlignCenter true @@ -274,10 +273,10 @@ - Qt::Horizontal + Qt::Orientation::Horizontal - QSizePolicy::Expanding + QSizePolicy::Policy::Expanding @@ -301,7 +300,7 @@ Error Label - Qt::RichText + Qt::TextFormat::RichText true @@ -311,13 +310,50 @@ + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + Proxy Settings + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + - Qt::Vertical + Qt::Orientation::Vertical - QSizePolicy::MinimumExpanding + QSizePolicy::Policy::MinimumExpanding @@ -337,10 +373,10 @@ - Qt::Vertical + Qt::Orientation::Vertical - QSizePolicy::MinimumExpanding + QSizePolicy::Policy::MinimumExpanding diff --git a/src/gui/wizard/owncloudsetuppage.cpp b/src/gui/wizard/owncloudsetuppage.cpp index 156deaf0f3..2e64d59f69 100644 --- a/src/gui/wizard/owncloudsetuppage.cpp +++ b/src/gui/wizard/owncloudsetuppage.cpp @@ -80,6 +80,9 @@ OwncloudSetupPage::OwncloudSetupPage(QWidget *parent) addCertDial = new AddCertificateDialog(this); connect(addCertDial, &QDialog::accepted, this, &OwncloudSetupPage::slotCertificateAccepted); + + connect(_ui.proxySettingsButton, &QPushButton::clicked, + this, &OwncloudSetupPage::slotSetProxySettings); } void OwncloudSetupPage::setLogo() @@ -170,6 +173,12 @@ void OwncloudSetupPage::slotUrlEditFinished() } } +void OwncloudSetupPage::slotSetProxySettings() +{ + _proxySettingsDialog = new WizardProxySettings{this}; + _proxySettingsDialog->show(); +} + bool OwncloudSetupPage::isComplete() const { return (!_ui.leUrl->text().isEmpty() || !_ui.comboBox->currentData().toString().isEmpty()) && !_checking; diff --git a/src/gui/wizard/owncloudsetuppage.h b/src/gui/wizard/owncloudsetuppage.h index cd898c901b..fc72d6a792 100644 --- a/src/gui/wizard/owncloudsetuppage.h +++ b/src/gui/wizard/owncloudsetuppage.h @@ -14,6 +14,7 @@ #include "../addcertificatedialog.h" #include "wizard/owncloudconnectionmethoddialog.h" +#include "wizard/wizardproxysettings.h" #include "ui_owncloudsetupnocredspage.h" @@ -59,6 +60,8 @@ protected slots: void slotUrlChanged(const QString &); void slotUrlEditFinished(); + void slotSetProxySettings(); + void setupCustomization(); signals: @@ -81,6 +84,8 @@ private: OwncloudWizard *_ocWizard; AddCertificateDialog *addCertDial = nullptr; + WizardProxySettings *_proxySettingsDialog = nullptr; + // Grab the forceLoginV2-setting from the wizard bool useFlow2 = _ocWizard->useFlow2(); }; diff --git a/src/gui/wizard/proxysettings.ui b/src/gui/wizard/proxysettings.ui new file mode 100644 index 0000000000..ffee2ef215 --- /dev/null +++ b/src/gui/wizard/proxysettings.ui @@ -0,0 +1,264 @@ + + + ProxySettings + + + + 0 + 0 + 481 + 296 + + + + Form + + + + + + true + + + + 0 + 0 + + + + Proxy Settings + + + + + + No proxy + + + true + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + Use system proxy + + + + + + + + + true + + + + 0 + 0 + + + + + 0 + + + + + + + true + + + + 0 + 0 + + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Host + + + + + + + + 1 + 0 + + + + + + + + + + + : + + + + + + + + 0 + 0 + + + + 1 + + + 65535 + + + 8080 + + + + + + + + + false + + + Proxy server requires authentication + + + + + + + true + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + false + + + + 1 + 0 + + + + + + + + + + + false + + + + 1 + 0 + + + + + + + QLineEdit::EchoMode::Password + + + + + + + + + + Note: proxy settings have no effects for accounts on localhost + + + + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + + + Manually specify proxy + + + + + + + + + + + diff --git a/src/gui/wizard/proxysettings.ui.license b/src/gui/wizard/proxysettings.ui.license new file mode 100644 index 0000000000..7be3270ab4 --- /dev/null +++ b/src/gui/wizard/proxysettings.ui.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors +SPDX-License-Identifier: GPL-2.0-or-later diff --git a/src/gui/wizard/wizardproxysettings.cpp b/src/gui/wizard/wizardproxysettings.cpp new file mode 100644 index 0000000000..8d61d3028f --- /dev/null +++ b/src/gui/wizard/wizardproxysettings.cpp @@ -0,0 +1,13 @@ +/* + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "wizardproxysettings.h" + +WizardProxySettings::WizardProxySettings(QWidget *parent) + : QDialog(parent) +{ + _ui.setupUi(this); + setWindowModality(Qt::WindowModal); +} diff --git a/src/gui/wizard/wizardproxysettings.h b/src/gui/wizard/wizardproxysettings.h new file mode 100644 index 0000000000..2cb93998dd --- /dev/null +++ b/src/gui/wizard/wizardproxysettings.h @@ -0,0 +1,21 @@ +/* + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#pragma once + +#include + +#include "ui_proxysettings.h" + +class WizardProxySettings : public QDialog +{ + Q_OBJECT +public: + explicit WizardProxySettings(QWidget *parent = nullptr); + +private: + Ui_ProxySettings _ui{}; + +};