Skip to content

Commit f66c5d4

Browse files
committed
Merge #407 [stable-4.0] [master] 2003-Network_Settings_Dialog
2 parents db23b2d + 4d5ec35 commit f66c5d4

File tree

8 files changed

+212
-18
lines changed

8 files changed

+212
-18
lines changed

src/gui/accountsettings.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -213,12 +213,12 @@ const auto tabWidget = _ui->tabWidget;
213213
tabWidget->setCurrentIndex(0);
214214
#endif
215215

216-
const auto connectionSettingsTab = _ui->connectionSettingsTab;
217-
const auto connectionSettingsLayout = new QVBoxLayout(connectionSettingsTab);
218-
const auto networkSettings = new NetworkSettings(_accountState->account(), connectionSettingsTab);
219-
connectionSettingsLayout->setContentsMargins(0, 0, 0, 0);
220-
connectionSettingsLayout->addWidget(networkSettings);
221-
connectionSettingsTab->setLayout(connectionSettingsLayout);
216+
// const auto connectionSettingsTab = _ui->connectionSettingsTab;
217+
// const auto connectionSettingsLayout = new QVBoxLayout(connectionSettingsTab);
218+
// const auto networkSettings = new NetworkSettings(_accountState->account(), connectionSettingsTab);
219+
// connectionSettingsLayout->setContentsMargins(0, 0, 0, 0);
220+
// connectionSettingsLayout->addWidget(networkSettings);
221+
// connectionSettingsTab->setLayout(connectionSettingsLayout);
222222

223223
if (const auto connectionSettingsTabIndex = tabWidget->indexOf(connectionSettingsTab); connectionSettingsTabIndex >= 0) {
224224
tabWidget->removeTab(connectionSettingsTabIndex);

src/gui/accountsettings.ui

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -314,11 +314,6 @@
314314
<string>Virtual file sync</string>
315315
</attribute>
316316
</widget>
317-
<widget class="QWidget" name="connectionSettingsTab">
318-
<attribute name="title">
319-
<string>Connection settings</string>
320-
</attribute>
321-
</widget>
322317
</widget>
323318
</item>
324319
</layout>

src/gui/networksettings.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ class NetworkSettings : public QWidget
3131
~NetworkSettings() override;
3232
[[nodiscard]] QSize sizeHint() const override;
3333

34+
Ui::NetworkSettings *getUi() const
35+
{
36+
return _ui;
37+
}
38+
3439
private slots:
3540
void saveProxySettings();
3641
void saveBWLimitSettings();

src/gui/networksettings.ui

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@
337337
<string>Limit to 3/4 of estimated bandwidth</string>
338338
</property>
339339
<property name="text">
340-
<string>Limit automatically</string>
340+
<string>Limit to 3/4 of estimated bandwidth</string>
341341
</property>
342342
</widget>
343343
</item>
@@ -460,7 +460,7 @@
460460
<string>Limit to 3/4 of estimated bandwidth</string>
461461
</property>
462462
<property name="text">
463-
<string>Limit automatically</string>
463+
<string>Limit to 3/4 of estimated bandwidth</string>
464464
</property>
465465
</widget>
466466
</item>
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
/*
2+
* Copyright (C) by Eugen Fischer
3+
*
4+
* This program is free software; you can redistribute it and/or modify
5+
* it under the terms of the GNU General Public License as published by
6+
* the Free Software Foundation; either version 2 of the License, or
7+
* (at your option) any later version.
8+
*
9+
* This program is distributed in the hope that it will be useful, but
10+
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11+
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12+
* for more details.
13+
*/
14+
15+
#include "nmcgui/nmcnetworksettings.h"
16+
#include "networksettings.h"
17+
#include "ui_networksettings.h"
18+
19+
#include <QLabel>
20+
#include <QSpacerItem>
21+
#include <QGridLayout>
22+
#include <QSizePolicy>
23+
#include <QCoreApplication>
24+
25+
namespace OCC {
26+
27+
NMCNetworkSettings::NMCNetworkSettings(const AccountPtr &account, QWidget *parent)
28+
: NetworkSettings(account, parent)
29+
{
30+
setLayout();
31+
}
32+
33+
void NMCNetworkSettings::setLayout()
34+
{
35+
auto *ui = getUi();
36+
37+
//
38+
// Proxy Settings
39+
//
40+
ui->proxyGroupBox->setTitle({});
41+
ui->proxyGroupBox->layout()->removeWidget(ui->manualProxyRadioButton);
42+
ui->proxyGroupBox->layout()->removeWidget(ui->noProxyRadioButton);
43+
ui->proxyGroupBox->layout()->removeWidget(ui->systemProxyRadioButton);
44+
45+
delete ui->horizontalLayout_7;
46+
delete ui->horizontalSpacer_2;
47+
48+
ui->proxyGroupBox->layout()->setContentsMargins(16, 16, 16, 16);
49+
ui->proxyGroupBox->setStyleSheet("border-radius: 4px;");
50+
51+
auto *proxyLayout = qobject_cast<QGridLayout *>(ui->proxyGroupBox->layout());
52+
auto *proxyLabel = new QLabel(QCoreApplication::translate("", "PROXY_SETTINGS"));
53+
proxyLabel->setStyleSheet("font-size: 12px; font-weight: bold;");
54+
55+
proxyLayout->addWidget(proxyLabel, 0, 0);
56+
proxyLayout->addItem(new QSpacerItem(1, 8, QSizePolicy::Fixed, QSizePolicy::Fixed), 1, 0);
57+
proxyLayout->addWidget(ui->noProxyRadioButton, 2, 0);
58+
proxyLayout->addWidget(ui->systemProxyRadioButton, 3, 0);
59+
proxyLayout->addWidget(ui->manualProxyRadioButton, 4, 0);
60+
61+
ui->horizontalSpacer->changeSize(0, 0, QSizePolicy::Fixed, QSizePolicy::Fixed);
62+
ui->proxyGroupBox->setStyleSheet(ui->proxyGroupBox->styleSheet());
63+
64+
//
65+
// Download Bandwidth
66+
//
67+
ui->verticalSpacer_2->changeSize(0, 0, QSizePolicy::Fixed, QSizePolicy::Fixed);
68+
ui->downloadBox->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
69+
ui->horizontalLayout_3->setSpacing(8);
70+
ui->downloadBox->setTitle({});
71+
72+
ui->downloadBox->layout()->removeWidget(ui->noDownloadLimitRadioButton);
73+
ui->downloadBox->layout()->removeWidget(ui->autoDownloadLimitRadioButton);
74+
ui->downloadBox->layout()->removeWidget(ui->downloadLimitRadioButton);
75+
76+
delete ui->horizontalLayout_3;
77+
78+
ui->downloadBox->layout()->setContentsMargins(16, 16, 16, 16);
79+
ui->downloadBox->setStyleSheet("border-radius: 4px;");
80+
81+
auto *downLayout = qobject_cast<QGridLayout *>(ui->downloadBox->layout());
82+
auto *downLabel = new QLabel(QCoreApplication::translate("", "DOWNLOAD_BANDWIDTH"));
83+
downLabel->setStyleSheet("font-size: 12px; font-weight: bold;");
84+
85+
downLayout->addWidget(downLabel, 0, 0);
86+
downLayout->addItem(new QSpacerItem(1, 8, QSizePolicy::Fixed, QSizePolicy::Fixed), 1, 0);
87+
downLayout->addWidget(ui->noDownloadLimitRadioButton, 2, 0);
88+
downLayout->addWidget(ui->autoDownloadLimitRadioButton, 3, 0);
89+
downLayout->addWidget(ui->downloadLimitRadioButton, 4, 0);
90+
91+
ui->downloadLimitRadioButton->setFixedHeight(ui->downloadSpinBox->height());
92+
ui->downloadBox->setStyleSheet(ui->downloadBox->styleSheet());
93+
94+
//
95+
// Upload Bandwidth
96+
//
97+
ui->verticalSpacer_3->changeSize(0, 0, QSizePolicy::Fixed, QSizePolicy::Fixed);
98+
ui->uploadBox->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
99+
ui->horizontalLayout_4->setSpacing(8);
100+
ui->uploadBox->setTitle({});
101+
102+
ui->uploadBox->layout()->removeWidget(ui->noUploadLimitRadioButton);
103+
ui->uploadBox->layout()->removeWidget(ui->autoUploadLimitRadioButton);
104+
ui->uploadBox->layout()->removeWidget(ui->uploadLimitRadioButton);
105+
106+
delete ui->horizontalLayout_4;
107+
108+
ui->uploadBox->layout()->setContentsMargins(16, 16, 16, 16);
109+
ui->uploadBox->setStyleSheet("border-radius: 4px;");
110+
111+
auto *upLayout = qobject_cast<QGridLayout *>(ui->uploadBox->layout());
112+
auto *upLabel = new QLabel(QCoreApplication::translate("", "UPLOAD_BANDWIDTH"));
113+
upLabel->setStyleSheet("font-size: 12px; font-weight: bold;");
114+
115+
upLayout->addWidget(upLabel, 0, 0);
116+
upLayout->addItem(new QSpacerItem(1, 8, QSizePolicy::Fixed, QSizePolicy::Fixed), 1, 0);
117+
upLayout->addWidget(ui->noUploadLimitRadioButton, 2, 0);
118+
upLayout->addWidget(ui->autoUploadLimitRadioButton, 3, 0);
119+
upLayout->addWidget(ui->uploadLimitRadioButton, 4, 0);
120+
121+
ui->uploadLimitRadioButton->setFixedHeight(ui->uploadSpinBox->height());
122+
ui->uploadBox->setStyleSheet(ui->uploadBox->styleSheet());
123+
}
124+
125+
} // namespace OCC
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/*
2+
* Copyright (C) by Daniel Molkentin <danimo@owncloud.com>
3+
*
4+
* This program is free software; you can redistribute it and/or modify
5+
* it under the terms of the GNU General Public License as published by
6+
* the Free Software Foundation; either version 2 of the License, or
7+
* (at your option) any later version.
8+
*
9+
* This program is distributed in the hope that it will be useful, but
10+
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11+
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12+
* for more details.
13+
*/
14+
15+
#ifndef MIRALL_NETWORKSETTINGSMAGENTA_H
16+
#define MIRALL_NETWORKSETTINGSMAGENTA_H
17+
18+
#include "networksettings.h"
19+
20+
QT_BEGIN_NAMESPACE
21+
class QWidget;
22+
QT_END_NAMESPACE
23+
24+
namespace OCC {
25+
26+
/**
27+
* @class NMCNetworkSettings
28+
* @ingroup gui
29+
* @brief Derived class for network settings specific to NMC (Magenta) in the ownCloud client.
30+
*/
31+
class NMCNetworkSettings : public NetworkSettings
32+
{
33+
Q_OBJECT
34+
35+
public:
36+
/**
37+
* @brief Constructor
38+
* @param account Account pointer used to configure settings
39+
* @param parent Parent widget
40+
*/
41+
explicit NMCNetworkSettings(const AccountPtr &account = {}, QWidget *parent = nullptr);
42+
43+
/**
44+
* @brief Destructor
45+
*/
46+
~NMCNetworkSettings() override = default;
47+
48+
private:
49+
/**
50+
* @brief Initializes and sets the custom layout
51+
*/
52+
void setLayout();
53+
};
54+
55+
} // namespace OCC
56+
57+
#endif // MIRALL_NETWORKSETTINGSMAGENTA_H

src/gui/settingsdialog.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "generalsettings.h"
1414
#include "nmcgui/nmcgeneralsettings.h"
1515
#include "networksettings.h"
16+
#include "nmcgui/nmcnetworksettings.h"
1617
#include "accountsettings.h"
1718
#include "configfile.h"
1819
#include "progressdispatcher.h"
@@ -76,10 +77,11 @@ QString shortDisplayNameForSettings(OCC::Account *account, int width)
7677

7778
namespace OCC {
7879

79-
SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent)
80+
SettingsDialog::SettingsDialog(AccountState *accountState, ownCloudGui *gui, QWidget *parent)
8081
: QDialog(parent)
81-
, _ui(new Ui::SettingsDialog)
82+
, _accountState(accountState)
8283
, _gui(gui)
84+
, _ui(new Ui::SettingsDialog)
8385
{
8486
ConfigFile cfg;
8587

@@ -137,7 +139,14 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent)
137139
connect(AccountManager::instance(), &AccountManager::capabilitiesChanged, generalSettings, &GeneralSettings::loadUpdateChannelsList);
138140
#endif
139141

142+
QAction *networkAction = createColorAwareAction(QLatin1String(":/client/theme/network.svg"), tr("Network"));
143+
_actionGroup->addAction(networkAction);
144+
_toolBar->addAction(networkAction);
145+
auto *networkSettings = new NetworkSettings(_accountState->account());
146+
_ui->stack->addWidget(networkSettings);
147+
140148
_actionGroupWidgets.insert(generalAction, generalSettings);
149+
_actionGroupWidgets.insert(networkAction, networkSettings);
141150

142151
const auto accountsList = AccountManager::instance()->accounts();
143152
for (const auto &account : accountsList) {

src/gui/settingsdialog.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,12 @@ class SettingsDialog : public QDialog
3838
{
3939
Q_OBJECT
4040
Q_PROPERTY(QWidget* currentPage READ currentPage NOTIFY currentPageChanged)
41+
Q_PROPERTY(AccountState* accountState MEMBER _accountState)
4142

4243
public:
43-
explicit SettingsDialog(ownCloudGui *gui, QWidget *parent = nullptr);
44+
explicit SettingsDialog(AccountState *accountState, ownCloudGui *gui, QWidget *parent = nullptr);
45+
explicit SettingsDialog(ownCloudGui *gui, QWidget *parent = nullptr)
46+
: SettingsDialog(nullptr, gui, parent) {}
4447
~SettingsDialog() override;
4548

4649
QWidget* currentPage();
@@ -78,6 +81,8 @@ private slots:
7881
QAction *createColorAwareAction(const QString &iconName, const QString &fileName);
7982
QAction *createActionWithIcon(const QIcon &icon, const QString &text, const QString &iconPath = QString());
8083

84+
AccountState *_accountState;
85+
ownCloudGui *_gui;
8186
Ui::SettingsDialog *const _ui;
8287

8388
QActionGroup *_actionGroup;
@@ -89,8 +94,6 @@ private slots:
8994
QHash<Account *, QAction *> _actionForAccount;
9095

9196
QToolBar *_toolBar;
92-
93-
ownCloudGui *_gui;
9497
};
9598
}
9699

0 commit comments

Comments
 (0)