diff options
author | Tim Jenssen <tim.jenssen@nokia.com> | 2012-04-24 18:42:28 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@nokia.com> | 2012-04-25 15:47:22 +0200 |
commit | e9d2d7640148e07feebf76e0e2d681c1ddf85f1a (patch) | |
tree | 785cfebc6c5a090327d9c6a86cd7849cffd75b38 | |
parent | 3eb3be2e042a6c93007f8bf4a1b6079b4961d919 (diff) |
add the possibility to add a repository from script side
Change-Id: Ida419095138fcfb924210484c2bf2d1cb77fc55b
Reviewed-by: Karsten Heimrich <karsten.heimrich@nokia.com>
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 11 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.h | 3 | ||||
-rw-r--r-- | src/libs/installer/repository.cpp | 30 | ||||
-rw-r--r-- | src/libs/installer/repository.h | 2 |
4 files changed, 46 insertions, 0 deletions
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index 52713f50f..03432c31f 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -763,11 +763,22 @@ bool PackageManagerCore::removeWizardPageItem(Component *component, const QStrin return false; } +void PackageManagerCore::addUserRepository(const QString &repositoryUrl, bool isDefault) +{ + addUserRepositories(QSet<Repository>() << Repository::fromUserInput(repositoryUrl, isDefault)); +} + void PackageManagerCore::addUserRepositories(const QSet<Repository> &repositories) { d->m_settings.addUserRepositories(repositories); } + +void PackageManagerCore::setTemporaryRepository(const QString &repositoryUrl) +{ + setTemporaryRepositories(QSet<Repository>() << Repository::fromUserInput(repositoryUrl, false)); +} + /*! Sets additional repository for this instance of the installer or updater. Will be removed after invoking it again. diff --git a/src/libs/installer/packagemanagercore.h b/src/libs/installer/packagemanagercore.h index a8fa65eab..2e7f8d28c 100644 --- a/src/libs/installer/packagemanagercore.h +++ b/src/libs/installer/packagemanagercore.h @@ -147,7 +147,10 @@ public: bool testChecksum() const; void setTestChecksum(bool test); + Q_INVOKABLE void addUserRepository(const QString &repositoryUrl, bool isDefault); void addUserRepositories(const QSet<Repository> &repositories); + + Q_INVOKABLE void setTemporaryRepository(const QString &repositoryUrl); void setTemporaryRepositories(const QSet<Repository> &repositories, bool replace = false); Q_INVOKABLE void autoAcceptMessageBoxes(); diff --git a/src/libs/installer/repository.cpp b/src/libs/installer/repository.cpp index cc80a20d9..8842a7899 100644 --- a/src/libs/installer/repository.cpp +++ b/src/libs/installer/repository.cpp @@ -32,6 +32,9 @@ #include "repository.h" +#include <QFileInfo> +#include <QStringList> + namespace QInstaller { /* @@ -69,6 +72,33 @@ Repository::Repository(const QUrl &url, bool isDefault) } /*! + Constructs a new repository by setting it's address to \a repositoryUrl as string and it's + default state. + + Note: user and password can be inside the \a repositoryUrl string: http://user:password@repository.url +*/ +Repository Repository::fromUserInput(const QString &repositoryUrl, bool isDefault) +{ + QStringList supportedShemes; + supportedShemes << QLatin1String("http") << QLatin1String("https") << QLatin1String("ftp") << + QLatin1String("file"); + + QUrl url = QUrl::fromUserInput(repositoryUrl); + if (!supportedShemes.contains(url.scheme()) && QFileInfo(url.toString()).exists()) + url = QLatin1String("file:///") + url.toString(); + + QString userName = url.userName(); + QString password = url.password(); + url.setUserName(QString()); + url.setPassword(QString()); + + Repository repository(url, isDefault); + repository.setUsername(userName); + repository.setPassword(password); + return repository; +} + +/*! Returns true if the repository URL is valid; otherwise returns false. Note: The URL is simply run through a conformance test. It is not checked that the repository diff --git a/src/libs/installer/repository.h b/src/libs/installer/repository.h index 432a851c4..a780a53e4 100644 --- a/src/libs/installer/repository.h +++ b/src/libs/installer/repository.h @@ -47,6 +47,8 @@ public: Repository(const Repository &other); explicit Repository(const QUrl &url, bool isDefault); + static Repository fromUserInput(const QString &repositoryUrl, bool isDefault = false); + bool isValid() const; bool isDefault() const; |