diff options
Diffstat (limited to 'installerbuilder/libinstaller/getrepositoriesmetainfojob.cpp')
-rw-r--r-- | installerbuilder/libinstaller/getrepositoriesmetainfojob.cpp | 58 |
1 files changed, 23 insertions, 35 deletions
diff --git a/installerbuilder/libinstaller/getrepositoriesmetainfojob.cpp b/installerbuilder/libinstaller/getrepositoriesmetainfojob.cpp index c5df1d993..2a6b230c8 100644 --- a/installerbuilder/libinstaller/getrepositoriesmetainfojob.cpp +++ b/installerbuilder/libinstaller/getrepositoriesmetainfojob.cpp @@ -33,6 +33,7 @@ #include "getrepositoriesmetainfojob.h" #include "getrepositorymetainfojob.h" +#include "packagemanagercore_p.h" #include "qinstallerglobal.h" #include <QtCore/QDebug> @@ -43,35 +44,16 @@ using namespace QInstaller; // -- GetRepositoriesMetaInfoJob -GetRepositoriesMetaInfoJob::GetRepositoriesMetaInfoJob(const QByteArray &publicKey, QObject *parent) - : KDJob(parent), - m_publicKey(publicKey), +GetRepositoriesMetaInfoJob::GetRepositoriesMetaInfoJob(PackageManagerCorePrivate *corePrivate) + : KDJob(corePrivate), m_canceled(false), m_silentRetries(3), - m_haveIgnoredError(false) + m_haveIgnoredError(false), + m_corePrivate(corePrivate) { setCapabilities(Cancelable); } -QSet<Repository> GetRepositoriesMetaInfoJob::repositories() const -{ - return m_repositories; -} - -void GetRepositoriesMetaInfoJob::setRepositories(const QSet<Repository> &repos) -{ - m_repositories = repos; - foreach (const Repository &repo, repos) { - if (repo.isEnabled()) - m_tmpRepositories += repo; - } -} - -QHash<QString, QPair<Repository, Repository> > GetRepositoriesMetaInfoJob::repositoryUpdates() const -{ - return m_repositoryUpdates; -} - QStringList GetRepositoriesMetaInfoJob::temporaryDirectories() const { return m_repositoryByTemporaryDirectory.keys(); @@ -111,7 +93,6 @@ void GetRepositoriesMetaInfoJob::reset() m_haveIgnoredError = false; m_repositories.clear(); - m_tmpRepositories.clear(); m_tempDirDeleter.releaseAndDeleteAll(); m_repositoryByTemporaryDirectory.clear(); @@ -129,6 +110,14 @@ bool GetRepositoriesMetaInfoJob::isCanceled() const void GetRepositoriesMetaInfoJob::doStart() { + if ((m_corePrivate->isInstaller() && !m_corePrivate->isOfflineOnly()) + || (m_corePrivate->isUpdater() || m_corePrivate->isPackageManager())) { + foreach (const Repository &repo, m_corePrivate->m_settings.repositories()) { + if (repo.isEnabled()) + m_repositories += repo; + } + } + fetchNextRepo(); } @@ -151,7 +140,7 @@ void GetRepositoriesMetaInfoJob::fetchNextRepo() return; } - if (m_tmpRepositories.isEmpty()) { + if (m_repositories.isEmpty()) { if (m_haveIgnoredError) emitFinishedWithError(QInstaller::UserIgnoreError, m_errorString); else @@ -159,12 +148,12 @@ void GetRepositoriesMetaInfoJob::fetchNextRepo() return; } - m_job = new GetRepositoryMetaInfoJob(m_publicKey, this); + m_job = new GetRepositoryMetaInfoJob(m_corePrivate, this); connect(m_job, SIGNAL(finished(KDJob*)), this, SLOT(jobFinished(KDJob*))); connect(m_job, SIGNAL(infoMessage(KDJob*, QString)), this, SIGNAL(infoMessage(KDJob*, QString))); m_job->setSilentRetries(silentRetries()); - m_job->setRepository(m_tmpRepositories.takeLast()); + m_job->setRepository(m_repositories.takeLast()); m_job->start(); } @@ -188,13 +177,6 @@ void GetRepositoriesMetaInfoJob::jobFinished(KDJob *j) return; } - if (job->error() == QInstaller::RepositoryUpdatesReceived) { - qDebug() << job->errorString(); - m_repositoryUpdates = job->repositoryUpdates(); - emitFinishedWithError(job->error(), job->errorString()); - return; - } - if (job->error() == QInstaller::UserIgnoreError) { m_haveIgnoredError = true; m_errorString = job->errorString(); @@ -203,5 +185,11 @@ void GetRepositoriesMetaInfoJob::jobFinished(KDJob *j) job->m_tempDirDeleter.passAndRelease(m_tempDirDeleter, tmpdir); m_repositoryByTemporaryDirectory.insert(tmpdir, job->repository()); } - QMetaObject::invokeMethod(this, "fetchNextRepo", Qt::QueuedConnection); + + if (job->error() == QInstaller::RepositoryUpdatesReceived) { + reset(); + QMetaObject::invokeMethod(this, "doStart", Qt::QueuedConnection); + } else { + QMetaObject::invokeMethod(this, "fetchNextRepo", Qt::QueuedConnection); + } } |