File indexing completed on 2024-04-14 03:57:37
0001 /* 0002 SPDX-FileCopyrightText: Pranav Gade <pranavgade20@gmail.com> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #include "proxysetting.h" 0008 #include "proxysetting_p.h" 0009 0010 #include <QDebug> 0011 0012 #if !NM_CHECK_VERSION(1, 6, 0) 0013 #define NM_SETTING_PROXY_SETTING_NAME "proxy" 0014 #define NM_SETTING_PROXY_BROWSER_ONLY "browser-only" 0015 #define NM_SETTING_PROXY_METHOD "method" 0016 #define NM_SETTING_PROXY_PAC_SCRIPT "pac-script" 0017 #define NM_SETTING_PROXY_PAC_URL "pac-url" 0018 #endif 0019 0020 NetworkManager::ProxySettingPrivate::ProxySettingPrivate() 0021 : name(NM_SETTING_PROXY_SETTING_NAME) 0022 , browserOnly(false) 0023 , method(ProxySetting::None) 0024 { 0025 } 0026 0027 NetworkManager::ProxySetting::ProxySetting() 0028 : Setting(Setting::Proxy) 0029 , d_ptr(new ProxySettingPrivate()) 0030 { 0031 } 0032 0033 NetworkManager::ProxySetting::ProxySetting(const Ptr &other) 0034 : Setting(other) 0035 , d_ptr(new ProxySettingPrivate()) 0036 { 0037 setBrowserOnly(other->browserOnly()); 0038 setMethod(other->method()); 0039 setPacScript(other->pacScript()); 0040 setPacUrl(other->pacUrl()); 0041 } 0042 0043 NetworkManager::ProxySetting::~ProxySetting() 0044 { 0045 delete d_ptr; 0046 } 0047 0048 QString NetworkManager::ProxySetting::name() const 0049 { 0050 Q_D(const ProxySetting); 0051 0052 return d->name; 0053 } 0054 0055 void NetworkManager::ProxySetting::setBrowserOnly(bool browserOnly) 0056 { 0057 Q_D(ProxySetting); 0058 0059 d->browserOnly = browserOnly; 0060 } 0061 0062 bool NetworkManager::ProxySetting::browserOnly() const 0063 { 0064 Q_D(const ProxySetting); 0065 0066 return d->browserOnly; 0067 } 0068 0069 void NetworkManager::ProxySetting::setMethod(NetworkManager::ProxySetting::Mode method) 0070 { 0071 Q_D(ProxySetting); 0072 0073 d->method = method; 0074 } 0075 0076 NetworkManager::ProxySetting::Mode NetworkManager::ProxySetting::method() const 0077 { 0078 Q_D(const ProxySetting); 0079 0080 return d->method; 0081 } 0082 0083 void NetworkManager::ProxySetting::setPacScript(const QString &script) 0084 { 0085 Q_D(ProxySetting); 0086 0087 d->pacScript = script; 0088 } 0089 0090 QString NetworkManager::ProxySetting::pacScript() const 0091 { 0092 Q_D(const ProxySetting); 0093 0094 return d->pacScript; 0095 } 0096 0097 void NetworkManager::ProxySetting::setPacUrl(const QString &url) 0098 { 0099 Q_D(ProxySetting); 0100 0101 d->pacUrl = url; 0102 } 0103 0104 QString NetworkManager::ProxySetting::pacUrl() const 0105 { 0106 Q_D(const ProxySetting); 0107 0108 return d->pacUrl; 0109 } 0110 0111 void NetworkManager::ProxySetting::fromMap(const QVariantMap &setting) 0112 { 0113 if (setting.contains(QLatin1String(NM_SETTING_PROXY_BROWSER_ONLY))) { 0114 setBrowserOnly(setting.value(QLatin1String(NM_SETTING_PROXY_BROWSER_ONLY)).toBool()); 0115 } 0116 0117 if (setting.contains(QLatin1String(NM_SETTING_PROXY_METHOD))) { 0118 setMethod((Mode)setting.value(QLatin1String(NM_SETTING_PROXY_METHOD)).toUInt()); 0119 } 0120 0121 if (setting.contains(QLatin1String(NM_SETTING_PROXY_PAC_SCRIPT))) { 0122 setPacScript(setting.value(QLatin1String(NM_SETTING_PROXY_PAC_SCRIPT)).toString()); 0123 } 0124 0125 if (setting.contains(QLatin1String(NM_SETTING_PROXY_PAC_URL))) { 0126 setPacUrl(setting.value(QLatin1String(NM_SETTING_PROXY_PAC_URL)).toString()); 0127 } 0128 } 0129 0130 QVariantMap NetworkManager::ProxySetting::toMap() const 0131 { 0132 QVariantMap setting; 0133 0134 setting.insert(QLatin1String(NM_SETTING_PROXY_BROWSER_ONLY), browserOnly()); 0135 0136 if (method() > 0) { 0137 setting.insert(QLatin1String(NM_SETTING_PROXY_METHOD), (int)method()); 0138 } 0139 0140 if (!pacScript().isEmpty()) { 0141 setting.insert(QLatin1String(NM_SETTING_PROXY_PAC_SCRIPT), pacScript()); 0142 } 0143 0144 if (!pacUrl().isEmpty()) { 0145 setting.insert(QLatin1String(NM_SETTING_PROXY_PAC_URL), pacUrl()); 0146 } 0147 0148 return setting; 0149 } 0150 0151 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::ProxySetting &setting) 0152 { 0153 dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n'; 0154 dbg.nospace() << "initialized: " << !setting.isNull() << '\n'; 0155 0156 dbg.nospace() << NM_SETTING_PROXY_BROWSER_ONLY << ": " << setting.browserOnly() << '\n'; 0157 dbg.nospace() << NM_SETTING_PROXY_METHOD << ": " << setting.method() << '\n'; 0158 dbg.nospace() << NM_SETTING_PROXY_PAC_SCRIPT << ": " << setting.pacScript() << '\n'; 0159 dbg.nospace() << NM_SETTING_PROXY_PAC_URL << ": " << setting.pacUrl() << '\n'; 0160 0161 return dbg.maybeSpace(); 0162 }