From d46bf58249c264be81535ad84a3be60f289a93ca Mon Sep 17 00:00:00 2001 From: kh1 Date: Fri, 25 Nov 2011 14:35:32 +0100 Subject: Make it possible to set proxy factorys for the downloaders. Change-Id: I1a728b60a196807fa8257b22e58165e2c55be787 Reviewed-by: Tim Jenssen --- installerbuilder/installerbase/installerbase.cpp | 6 +++--- installerbuilder/libinstaller/packagemanagercore.cpp | 15 +++++++++++++++ installerbuilder/libinstaller/packagemanagercore.h | 9 +++++++++ installerbuilder/libinstaller/packagemanagercore_p.cpp | 6 ++++++ installerbuilder/libinstaller/packagemanagercore_p.h | 1 + 5 files changed, 34 insertions(+), 3 deletions(-) diff --git a/installerbuilder/installerbase/installerbase.cpp b/installerbuilder/installerbase/installerbase.cpp index bf8fc270f..719ff0877 100644 --- a/installerbuilder/installerbase/installerbase.cpp +++ b/installerbuilder/installerbase/installerbase.cpp @@ -51,6 +51,7 @@ #include #include +#include "kdupdaterfiledownloaderfactory.h" #include @@ -239,9 +240,8 @@ int main(int argc, char *argv[]) } else if (argument == QLatin1String("--verbose") || argument == QLatin1String("Verbose")) { core.setVerbose(true); } else if (argument == QLatin1String("--proxy")) { -#if defined(Q_OS_WIN) || defined(Q_OS_MAC) - QNetworkProxyFactory::setUseSystemConfiguration(true); -#endif + core.settings().setProxyType(QInstaller::Settings::SystemProxy); + KDUpdater::FileDownloaderFactory::instance().setProxyFactory(core.proxyFactory()); } else if (argument == QLatin1String("--show-virtual-components") || argument == QLatin1String("ShowVirtualComponents")) { QFont f; diff --git a/installerbuilder/libinstaller/packagemanagercore.cpp b/installerbuilder/libinstaller/packagemanagercore.cpp index 4e836d468..fd3ff0cb4 100644 --- a/installerbuilder/libinstaller/packagemanagercore.cpp +++ b/installerbuilder/libinstaller/packagemanagercore.cpp @@ -42,6 +42,7 @@ #include "getrepositoriesmetainfojob.h" #include "messageboxhandler.h" #include "packagemanagercore_p.h" +#include "packagemanagerproxyfactory.h" #include "progresscoordinator.h" #include "qinstallerglobal.h" #include "qprocesswrapper.h" @@ -604,6 +605,20 @@ LocalPackagesHash PackageManagerCore::localInstalledPackages() return d->localInstalledPackages(); } +KDUpdater::FileDownloaderProxyFactory *PackageManagerCore::proxyFactory() const +{ + if (d->m_proxyFactory) + return d->m_proxyFactory->clone(); + return new PackageManagerProxyFactory(this); +} + +void PackageManagerCore::setProxyFactory(KDUpdater::FileDownloaderProxyFactory *factory) +{ + delete d->m_proxyFactory; + d->m_proxyFactory = factory; + KDUpdater::FileDownloaderFactory::instance().setProxyFactory(proxyFactory()); +} + PackagesList PackageManagerCore::remotePackages() { return d->remotePackages(); diff --git a/installerbuilder/libinstaller/packagemanagercore.h b/installerbuilder/libinstaller/packagemanagercore.h index d46ff3770..ef460fa17 100644 --- a/installerbuilder/libinstaller/packagemanagercore.h +++ b/installerbuilder/libinstaller/packagemanagercore.h @@ -34,12 +34,18 @@ #include #include +namespace KDUpdater { + class FileDownloaderProxyFactory; +} + namespace QInstaller { class Component; class PackageManagerCorePrivate; class Settings; +// -- PackageManagerCore + class INSTALLER_EXPORT PackageManagerCore : public QObject { Q_OBJECT @@ -88,6 +94,9 @@ public: bool fetchLocalPackagesTree(); LocalPackagesHash localInstalledPackages(); + KDUpdater::FileDownloaderProxyFactory *proxyFactory() const; + void setProxyFactory(KDUpdater::FileDownloaderProxyFactory *factory); + PackagesList remotePackages(); bool fetchRemotePackagesTree(); diff --git a/installerbuilder/libinstaller/packagemanagercore_p.cpp b/installerbuilder/libinstaller/packagemanagercore_p.cpp index 36d064a33..bf3773a26 100644 --- a/installerbuilder/libinstaller/packagemanagercore_p.cpp +++ b/installerbuilder/libinstaller/packagemanagercore_p.cpp @@ -47,6 +47,7 @@ #include #include +#include "kdupdaterfiledownloaderfactory.h" #include #include #include @@ -160,6 +161,7 @@ PackageManagerCorePrivate::PackageManagerCorePrivate(PackageManagerCore *core) , m_repoFetched(false) , m_updateSourcesAdded(false) , m_componentsToInstallCalculated(false) + , m_proxyFactory(0) { } @@ -181,6 +183,7 @@ PackageManagerCorePrivate::PackageManagerCorePrivate(PackageManagerCore *core, q , m_updateSourcesAdded(false) , m_magicBinaryMarker(magicInstallerMaker) , m_componentsToInstallCalculated(false) + , m_proxyFactory(0) { connect(this, SIGNAL(installationStarted()), m_core, SIGNAL(installationStarted())); connect(this, SIGNAL(installationFinished()), m_core, SIGNAL(installationFinished())); @@ -201,7 +204,9 @@ PackageManagerCorePrivate::~PackageManagerCorePrivate() // check for fake installer case if (m_FSEngineClientHandler) m_FSEngineClientHandler->setActive(false); + delete m_updateFinder; + delete m_proxyFactory; } /*! @@ -594,6 +599,7 @@ void PackageManagerCorePrivate::initialize() connect(m_repoMetaInfoJob, SIGNAL(infoMessage(KDJob*, QString)), this, SLOT(infoMessage(KDJob*, QString))); } + KDUpdater::FileDownloaderFactory::instance().setProxyFactory(m_core->proxyFactory()); } QString PackageManagerCorePrivate::installerBinaryPath() const diff --git a/installerbuilder/libinstaller/packagemanagercore_p.h b/installerbuilder/libinstaller/packagemanagercore_p.h index cc457857b..b7bf07342 100644 --- a/installerbuilder/libinstaller/packagemanagercore_p.h +++ b/installerbuilder/libinstaller/packagemanagercore_p.h @@ -241,6 +241,7 @@ private: QSet m_componentsToUninstall; QString m_componentsToInstallError; + FileDownloaderProxyFactory *m_proxyFactory; private: // remove once we deprecate isSelected, setSelected etc... -- cgit v1.2.3