Proxy: save configuration

pull/55/head
reionwong 5 years ago
parent 8e27723569
commit 27ea85b763

@ -60,6 +60,7 @@ set(SRCS
src/vpn/nm-l2tp-service.h src/vpn/nm-l2tp-service.h
src/vpn/nm-openvpn-service.h src/vpn/nm-openvpn-service.h
src/vpn/nm-pptp-service.h src/vpn/nm-pptp-service.h
src/networkproxy.cpp
# src/update/updatemodel.cpp # src/update/updatemodel.cpp
) )

@ -18,6 +18,7 @@
#include "password.h" #include "password.h"
#include "powermanager.h" #include "powermanager.h"
#include "touchpad.h" #include "touchpad.h"
#include "networkproxy.h"
#include "cursor/cursorthememodel.h" #include "cursor/cursorthememodel.h"
#include "cursor/mouse.h" #include "cursor/mouse.h"
@ -80,6 +81,7 @@ Application::Application(int &argc, char **argv)
qmlRegisterType<TimeZoneMap>(uri, 1, 0, "TimeZoneMap"); qmlRegisterType<TimeZoneMap>(uri, 1, 0, "TimeZoneMap");
qmlRegisterType<Touchpad>(uri, 1, 0, "Touchpad"); qmlRegisterType<Touchpad>(uri, 1, 0, "Touchpad");
qmlRegisterType<BluetoothManager>(uri, 1, 0, "BluetoothManager"); qmlRegisterType<BluetoothManager>(uri, 1, 0, "BluetoothManager");
qmlRegisterType<NetworkProxy>(uri, 1, 0, "NetworkProxy");
qmlRegisterSingletonType<Password>(uri, 1, 0, "Password", passwordSingleton); qmlRegisterSingletonType<Password>(uri, 1, 0, "Password", passwordSingleton);

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="16" height="16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <svg version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<metadata> <metadata>
<rdf:RDF> <rdf:RDF>
<cc:Work rdf:about=""> <cc:Work rdf:about="">
@ -9,6 +9,10 @@
</cc:Work> </cc:Work>
</rdf:RDF> </rdf:RDF>
</metadata> </metadata>
<path d="m13 0.75v1.25h-7s-2 0-2 2v7h-1v-1.25l-3 2.75 3 2.75v-1.25h7s2 0 2-2v-7h1v1.25l3-2.75-3-2.75zm-7 2.25h4c0.554 0 1 0.446 1 1v8c0 0.554-0.446 1-1 1h-4c-0.554 0-1-0.446-1-1v-8c0-0.554 0.446-1 1-1z" fill="#fff"/> <defs>
<rect x="7" y="4" width="2" height="2" rx="0" fill="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.0016"/> <style id="current-color-scheme" type="text/css">.ColorScheme-Text {
color:#FFFFFF;
}</style>
</defs>
<path class="ColorScheme-Text" d="m12 1a11 11 0 0 0-10.643 8.25h1.4233a9.625 9.625 0 0 1 9.2195-6.875 9.625 9.625 0 0 1 8.6743 5.5h-4.9629v1.375h6.875v-6.875h-1.375v3.6523a11 11 0 0 0-9.2114-5.0273zm-10.586 13.75v6.875h1.375v-3.6523a11 11 0 0 0 9.2114 5.0273 11 11 0 0 0 10.643-8.25h-1.4233a9.625 9.625 0 0 1-9.2195 6.875 9.625 9.625 0 0 1-8.6743-5.5h4.9629v-1.375h-5.5027z" fill="currentColor"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 830 B

After

Width:  |  Height:  |  Size: 1004 B

@ -0,0 +1,142 @@
#include "networkproxy.h"
NetworkProxy::NetworkProxy(QObject *parent)
: QObject(parent)
, m_settings("cutefishos", "network")
{
m_flag = m_settings.value("ProxyFlag", 0).toInt();
m_useSameProxy = m_settings.value("UseSameProxy", false).toBool();
m_scriptProxy = m_settings.value("ProxyScriptProxy", "").toString();
m_httpProxy = m_settings.value("HttpProxy", "").toString();
m_ftpProxy = m_settings.value("FtpProxy", "").toString();
m_socksProxy = m_settings.value("SocksProxy", "").toString();
m_httpProxyPort = m_settings.value("HttpProxyPort", "").toString();
m_ftpProxyPort = m_settings.value("FtpProxyPort", "").toString();
m_socksProxyPort = m_settings.value("SocksProxyPort", "").toString();
}
int NetworkProxy::flag() const
{
return m_flag;
}
void NetworkProxy::setFlag(int flag)
{
if (m_flag != flag) {
m_flag = flag;
m_settings.setValue("ProxyFlag", flag);
emit flagChanged();
}
}
bool NetworkProxy::useSameProxy() const
{
return m_useSameProxy;
}
void NetworkProxy::setUseSameProxy(bool enabled)
{
if (m_useSameProxy != enabled) {
m_useSameProxy = enabled;
m_settings.setValue("UseSameProxy", enabled);
emit useSameProxyChanged();
}
}
QString NetworkProxy::scriptProxy() const
{
return m_scriptProxy;
}
void NetworkProxy::setScriptProxy(const QString &path)
{
if (m_scriptProxy != path) {
m_scriptProxy = path;
m_settings.setValue("ProxyScriptProxy", path);
emit scriptProxyChanged();
}
}
QString NetworkProxy::httpProxy() const
{
return m_httpProxy;
}
void NetworkProxy::setHttpProxy(const QString &path)
{
if (m_httpProxy != path) {
m_httpProxy = path;
m_settings.setValue("HttpProxy", path);
emit httpProxyChanged();
}
}
QString NetworkProxy::ftpProxy() const
{
return m_ftpProxy;
}
void NetworkProxy::setFtpProxy(const QString &path)
{
if (m_ftpProxy != path) {
m_ftpProxy = path;
m_settings.setValue("FtpProxy", path);
emit ftpProxyChanged();
}
}
QString NetworkProxy::socksProxy() const
{
return m_socksProxy;
}
void NetworkProxy::setSocksProxy(const QString &path)
{
if (m_socksProxy != path) {
m_socksProxy = path;
m_settings.setValue("SocksProxy", path);
emit socksProxyChanged();
}
}
QString NetworkProxy::httpProxyPort() const
{
return m_httpProxyPort;
}
void NetworkProxy::setHttpProxyPort(const QString &port)
{
if (m_httpProxyPort != port) {
m_httpProxyPort = port;
m_settings.setValue("HttpProxyPort", port);
emit httpProxyPortChanged();
}
}
QString NetworkProxy::ftpProxyPort() const
{
return m_ftpProxyPort;
}
void NetworkProxy::setFtpProxyPort(const QString &port)
{
if (m_ftpProxyPort != port) {
m_ftpProxyPort = port;
m_settings.setValue("FtpProxyPort", port);
emit ftpProxyPortChanged();
}
}
QString NetworkProxy::socksProxyPort() const
{
return m_socksProxyPort;
}
void NetworkProxy::setSocksProxyPort(const QString &port)
{
if (m_socksProxyPort != port) {
m_socksProxyPort = port;
m_settings.setValue("SocksProxyPort", port);
emit socksProxyPortChanged();
}
}

@ -0,0 +1,76 @@
#ifndef NETWORKPROXY_H
#define NETWORKPROXY_H
#include <QObject>
#include <QSettings>
class NetworkProxy : public QObject
{
Q_OBJECT
Q_PROPERTY(int flag READ flag WRITE setFlag NOTIFY flagChanged)
Q_PROPERTY(bool useSameProxy READ useSameProxy WRITE setUseSameProxy NOTIFY useSameProxyChanged)
Q_PROPERTY(QString scriptProxy READ scriptProxy WRITE setScriptProxy NOTIFY scriptProxyChanged)
Q_PROPERTY(QString httpProxy READ httpProxy WRITE setHttpProxy NOTIFY httpProxyChanged)
Q_PROPERTY(QString ftpProxy READ ftpProxy WRITE setFtpProxy NOTIFY ftpProxyChanged)
Q_PROPERTY(QString socksProxy READ socksProxy WRITE setSocksProxy NOTIFY socksProxyChanged)
Q_PROPERTY(QString httpProxyPort READ httpProxyPort WRITE setHttpProxyPort NOTIFY httpProxyPortChanged)
Q_PROPERTY(QString ftpProxyPort READ ftpProxyPort WRITE setFtpProxyPort NOTIFY ftpProxyPortChanged)
Q_PROPERTY(QString socksProxyPort READ socksProxyPort WRITE setSocksProxyPort NOTIFY socksProxyPortChanged)
public:
explicit NetworkProxy(QObject *parent = nullptr);
int flag() const;
void setFlag(int flag);
bool useSameProxy() const;
void setUseSameProxy(bool enabled);
QString scriptProxy() const;
void setScriptProxy(const QString &path);
QString httpProxy() const;
void setHttpProxy(const QString &path);
QString ftpProxy() const;
void setFtpProxy(const QString &path);
QString socksProxy() const;
void setSocksProxy(const QString &path);
QString httpProxyPort() const;
void setHttpProxyPort(const QString &port);
QString ftpProxyPort() const;
void setFtpProxyPort(const QString &port);
QString socksProxyPort() const;
void setSocksProxyPort(const QString &port);
signals:
void flagChanged();
void useSameProxyChanged();
void scriptProxyChanged();
void httpProxyChanged();
void ftpProxyChanged();
void socksProxyChanged();
void httpProxyPortChanged();
void ftpProxyPortChanged();
void socksProxyPortChanged();
private:
QSettings m_settings;
int m_flag;
bool m_useSameProxy;
QString m_scriptProxy;
QString m_httpProxy;
QString m_ftpProxy;
QString m_socksProxy;
QString m_httpProxyPort;
QString m_ftpProxyPort;
QString m_socksProxyPort;
};
#endif // NETWORKPROXY_H

@ -35,7 +35,11 @@ ItemPage {
property: "text" property: "text"
value: httpProxyField.text value: httpProxyField.text
when: forFtpCheckBox.checked when: forFtpCheckBox.checked
restoreMode: Binding.RestoreNone restoreMode: Binding.RestoreValue
}
NetworkProxy {
id: networkProxy
} }
Binding { Binding {
@ -61,23 +65,38 @@ ItemPage {
RadioButton { RadioButton {
id: noProxyRadioButton id: noProxyRadioButton
checked: true checked: networkProxy.flag === 0
text: qsTr("No Proxy") text: qsTr("No Proxy")
onClicked: {
networkProxy.flag = 0
}
} }
RadioButton { RadioButton {
id: autoDiscoverProxyRadioButton id: autoDiscoverProxyRadioButton
checked: networkProxy.flag === 1
text: qsTr("Detect proxy configuration automatically") text: qsTr("Detect proxy configuration automatically")
onClicked: {
networkProxy.flag = 1
}
} }
RadioButton { RadioButton {
id: autoScriptProxyRadioButton id: autoScriptProxyRadioButton
checked: networkProxy.flag === 2
text: qsTr("Use proxy auto configuration URL") text: qsTr("Use proxy auto configuration URL")
onClicked: {
networkProxy.flag = 2
}
} }
RadioButton { RadioButton {
id: manualProxyRadioButton id: manualProxyRadioButton
checked: networkProxy.flag === 3
text: qsTr("Use manually specified proxy configuration") text: qsTr("Use manually specified proxy configuration")
onClicked: {
networkProxy.flag = 3
}
} }
} }
@ -93,7 +112,12 @@ ItemPage {
TextField { TextField {
id: autoScriptField id: autoScriptField
Layout.fillWidth: true Layout.fillWidth: true
text: networkProxy.scriptProxy
height: 40 height: 40
onEditingFinished: {
networkProxy.scriptProxy = autoScriptField.text
}
} }
Button { Button {
@ -118,6 +142,11 @@ ItemPage {
id: httpProxyField id: httpProxyField
Layout.fillWidth: true Layout.fillWidth: true
height: 40 height: 40
text: networkProxy.httpProxy
onEditingFinished: {
networkProxy.httpProxy = httpProxyField.text
}
} }
Label { Label {
@ -128,6 +157,12 @@ ItemPage {
id: httpProxyPortField id: httpProxyPortField
height: 40 height: 40
Layout.preferredWidth: 80 Layout.preferredWidth: 80
text: networkProxy.httpProxyPort
onEditingFinished: {
networkProxy.httpProxyPort = httpProxyPortField.text
}
} }
Item { Item {
@ -138,7 +173,8 @@ ItemPage {
id: forFtpCheckBox id: forFtpCheckBox
text: qsTr("Also use this proxy for FTP") text: qsTr("Also use this proxy for FTP")
Layout.fillWidth: true Layout.fillWidth: true
checked: true checked: networkProxy.useSameProxy
onClicked: networkProxy.useSameProxy = forFtpCheckBox.checked
} }
Item { Item {
@ -159,6 +195,12 @@ ItemPage {
Layout.fillWidth: true Layout.fillWidth: true
height: 40 height: 40
enabled: !forFtpCheckBox.checked enabled: !forFtpCheckBox.checked
text: networkProxy.ftpProxy
onEditingFinished: {
networkProxy.ftpProxy = ftpProxyTextField.text
}
} }
Label { Label {
@ -170,6 +212,12 @@ ItemPage {
height: 40 height: 40
Layout.preferredWidth: 80 Layout.preferredWidth: 80
enabled: !forFtpCheckBox.checked enabled: !forFtpCheckBox.checked
text: networkProxy.ftpProxyPort
onEditingFinished: {
networkProxy.ftpProxyPort = ftpProxyPortField.text
}
} }
// SOCKS // SOCKS
@ -178,8 +226,15 @@ ItemPage {
} }
TextField { TextField {
id: socksProxyField
Layout.fillWidth: true Layout.fillWidth: true
height: 40 height: 40
text: networkProxy.socksProxy
onEditingFinished: {
networkProxy.socksProxy = socksProxyField.text
}
} }
Label { Label {
@ -187,8 +242,15 @@ ItemPage {
} }
TextField { TextField {
id: socksProxyPortField
height: 40 height: 40
Layout.preferredWidth: 80 Layout.preferredWidth: 80
text: networkProxy.socksProxyPort
onEditingFinished: {
networkProxy.socksProxyPort = socksProxyPortField.text
}
} }
} }
} }
@ -203,6 +265,7 @@ ItemPage {
id: fileDialog id: fileDialog
onAccepted: { onAccepted: {
autoScriptField.text = fileDialog.fileUrl.toString().replace("file://", "") autoScriptField.text = fileDialog.fileUrl.toString().replace("file://", "")
networkProxy.scriptProxy = autoScriptField.text
} }
} }
} }

Loading…
Cancel
Save