Android: Refactor Android SDK packages

Introduce a hierarchy for Android SDK packages and refactor the
code accordingly. This is ground work for sdk management and
automatic android setup

Task-number: QTCREATORBUG-18978
Change-Id: Idef545e3b3a8e33e920be52b26094fb8046afcd3
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
This commit is contained in:
Vikas Pachdha
2017-08-18 08:22:34 +02:00
parent 240d310a81
commit ec4fe5f04f
20 changed files with 854 additions and 317 deletions

View File

@@ -25,26 +25,46 @@
#pragma once
#include "utils/fileutils.h"
#include "androidconfigurations.h"
#include "androidsdkpackage.h"
#include <QObject>
#include <memory>
namespace Android {
class AndroidConfig;
namespace Internal {
class SdkManagerOutputParser;
class AndroidSdkManagerPrivate;
class AndroidSdkManager
class AndroidSdkManager : public QObject
{
Q_OBJECT
public:
AndroidSdkManager(const AndroidConfig &config);
AndroidSdkManager(const AndroidConfig &config, QObject *parent = nullptr);
~AndroidSdkManager();
SdkPlatformList availableSdkPlatforms(bool *ok = nullptr);
SdkPlatformList installedSdkPlatforms();
const AndroidSdkPackageList &allSdkPackages();
AndroidSdkPackageList availableSdkPackages();
AndroidSdkPackageList installedSdkPackages();
SdkPlatform *latestAndroidSdkPlatform(AndroidSdkPackage::PackageState state
= AndroidSdkPackage::Installed);
SdkPlatformList filteredSdkPlatforms(int minApiLevel,
AndroidSdkPackage::PackageState state
= AndroidSdkPackage::Installed);
void reloadPackages(bool forceReload = false);
signals:
void packageReloadBegin();
void packageReloadFinished();
private:
const AndroidConfig &m_config;
std::unique_ptr<SdkManagerOutputParser> m_parser;
std::unique_ptr<AndroidSdkManagerPrivate> m_d;
friend class AndroidSdkManagerPrivate;
};
} // namespace Internal