File indexing completed on 2024-05-05 04:59:33

0001 /*
0002     SPDX-FileCopyrightText: 2001 Dawit Alemayehu <adawit@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 // Own
0008 #include "ksaveioconfig.h"
0009 
0010 // Qt
0011 #include <QDBusConnection>
0012 #include <QDBusInterface>
0013 #include <QDBusMessage>
0014 #include <QDBusReply>
0015 
0016 // KDE
0017 #include <KConfig>
0018 #include <KConfigGroup>
0019 #include <KLocalizedString>
0020 #include <KMessageBox>
0021 #include <kio/ioworker_defaults.h>
0022 class KSaveIOConfigPrivate
0023 {
0024 public:
0025     KSaveIOConfigPrivate();
0026     ~KSaveIOConfigPrivate();
0027 
0028     KConfig *config = nullptr;
0029     KConfig *http_config = nullptr;
0030 };
0031 
0032 Q_GLOBAL_STATIC(KSaveIOConfigPrivate, d)
0033 
0034 KSaveIOConfigPrivate::KSaveIOConfigPrivate()
0035 {
0036 }
0037 
0038 KSaveIOConfigPrivate::~KSaveIOConfigPrivate()
0039 {
0040     delete config;
0041     delete http_config;
0042 }
0043 
0044 static KConfig *config()
0045 {
0046     if (!d->config) {
0047         d->config = new KConfig(QStringLiteral("kioslaverc"), KConfig::NoGlobals);
0048         // KF6 TODO: rename to kioworkerrc here and elsewhere. See also T15956.
0049     }
0050 
0051     return d->config;
0052 }
0053 
0054 int KSaveIOConfig::proxyDisplayUrlFlags()
0055 {
0056     KConfigGroup cfg(config(), QString());
0057     return cfg.readEntry("ProxyUrlDisplayFlags", 0);
0058 }
0059 
0060 void KSaveIOConfig::setProxyDisplayUrlFlags(int flags)
0061 {
0062     KConfigGroup cfg(config(), QString());
0063     cfg.writeEntry("ProxyUrlDisplayFlags", flags);
0064     cfg.sync();
0065 }
0066 
0067 void KSaveIOConfig::setReadTimeout(int _timeout)
0068 {
0069     KConfigGroup cfg(config(), QString());
0070     cfg.writeEntry("ReadTimeout", qMax(MIN_TIMEOUT_VALUE, _timeout));
0071     cfg.sync();
0072 }
0073 
0074 void KSaveIOConfig::setConnectTimeout(int _timeout)
0075 {
0076     KConfigGroup cfg(config(), QString());
0077     cfg.writeEntry("ConnectTimeout", qMax(MIN_TIMEOUT_VALUE, _timeout));
0078     cfg.sync();
0079 }
0080 
0081 void KSaveIOConfig::setProxyConnectTimeout(int _timeout)
0082 {
0083     KConfigGroup cfg(config(), QString());
0084     cfg.writeEntry("ProxyConnectTimeout", qMax(MIN_TIMEOUT_VALUE, _timeout));
0085     cfg.sync();
0086 }
0087 
0088 void KSaveIOConfig::setResponseTimeout(int _timeout)
0089 {
0090     KConfigGroup cfg(config(), QString());
0091     cfg.writeEntry("ResponseTimeout", qMax(MIN_TIMEOUT_VALUE, _timeout));
0092     cfg.sync();
0093 }
0094 
0095 void KSaveIOConfig::setMarkPartial(bool _mode)
0096 {
0097     KConfigGroup cfg(config(), QString());
0098     cfg.writeEntry("MarkPartial", _mode);
0099     cfg.sync();
0100 }
0101 
0102 void KSaveIOConfig::setMinimumKeepSize(int _size)
0103 {
0104     KConfigGroup cfg(config(), QString());
0105     cfg.writeEntry("MinimumKeepSize", _size);
0106     cfg.sync();
0107 }
0108 
0109 void KSaveIOConfig::setAutoResume(bool _mode)
0110 {
0111     KConfigGroup cfg(config(), QString());
0112     cfg.writeEntry("AutoResume", _mode);
0113     cfg.sync();
0114 }
0115 
0116 void KSaveIOConfig::setUseReverseProxy(bool mode)
0117 {
0118     KConfigGroup cfg(config(), QStringLiteral("Proxy Settings"));
0119     cfg.writeEntry("ReversedException", mode);
0120     cfg.sync();
0121 }
0122 
0123 void KSaveIOConfig::setProxyType(KSaveIOConfig::ProxyType type)
0124 {
0125     KConfigGroup cfg(config(), QStringLiteral("Proxy Settings"));
0126     cfg.writeEntry("ProxyType", static_cast<int>(type));
0127     cfg.sync();
0128 }
0129 
0130 QString KSaveIOConfig::noProxyFor()
0131 {
0132     KConfigGroup cfg(config(), QStringLiteral("Proxy Settings"));
0133     return cfg.readEntry("NoProxyFor");
0134 }
0135 
0136 void KSaveIOConfig::setNoProxyFor(const QString &_noproxy)
0137 {
0138     KConfigGroup cfg(config(), QStringLiteral("Proxy Settings"));
0139     cfg.writeEntry("NoProxyFor", _noproxy);
0140     cfg.sync();
0141 }
0142 
0143 void KSaveIOConfig::setProxyFor(const QString &protocol, const QString &_proxy)
0144 {
0145     KConfigGroup cfg(config(), QStringLiteral("Proxy Settings"));
0146     cfg.writeEntry(protocol.toLower() + QLatin1String("Proxy"), _proxy);
0147     cfg.sync();
0148 }
0149 
0150 void KSaveIOConfig::setProxyConfigScript(const QString &_url)
0151 {
0152     KConfigGroup cfg(config(), QStringLiteral("Proxy Settings"));
0153     cfg.writeEntry("Proxy Config Script", _url);
0154     cfg.sync();
0155 }
0156 
0157 void KSaveIOConfig::updateRunningWorkers(QWidget *parent)
0158 {
0159     // Inform all running KIO workers about the changes...
0160     // if we cannot update, KIO workers inform the end user...
0161     QDBusMessage message =
0162         QDBusMessage::createSignal(QStringLiteral("/KIO/Scheduler"), QStringLiteral("org.kde.KIO.Scheduler"), QStringLiteral("reparseSlaveConfiguration"));
0163     message << QString();
0164     if (!QDBusConnection::sessionBus().send(message)) {
0165         KMessageBox::information(parent,
0166                                  i18n("You have to restart the running applications "
0167                                       "for these changes to take effect."),
0168                                  i18nc("@title:window", "Update Failed"));
0169     }
0170 }