// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #pragma once #include "androidsdkpackage.h" #include #include #include #include namespace Android { class AndroidConfig; namespace Internal { class AndroidSdkManagerPrivate; class AndroidSdkManager : public QObject { Q_OBJECT public: enum CommandType { None, UpdateAll, UpdatePackage, LicenseCheck, LicenseWorkflow }; struct OperationOutput { bool success = false; CommandType type = None; QString stdOutput; QString stdError; }; explicit AndroidSdkManager(const AndroidConfig &config); ~AndroidSdkManager() override; SdkPlatformList installedSdkPlatforms(); const AndroidSdkPackageList &allSdkPackages(); AndroidSdkPackageList installedSdkPackages(); SystemImageList installedSystemImages(); NdkList installedNdkPackages(); SdkPlatform *latestAndroidSdkPlatform(AndroidSdkPackage::PackageState state = AndroidSdkPackage::Installed); SdkPlatformList filteredSdkPlatforms(int minApiLevel, AndroidSdkPackage::PackageState state = AndroidSdkPackage::Installed); BuildToolsList filteredBuildTools(int minApiLevel, AndroidSdkPackage::PackageState state = AndroidSdkPackage::Installed); void reloadPackages(bool forceReload = false); bool isBusy() const; bool packageListingSuccessful() const; QFuture availableArguments() const; QFuture updateAll(); QFuture update(const QStringList &install, const QStringList &uninstall); QFuture checkPendingLicenses(); QFuture runLicenseCommand(); void cancelOperatons(); void acceptSdkLicense(bool accept); signals: void packageReloadBegin(); void packageReloadFinished(); void cancelActiveOperations(); private: friend class AndroidSdkManagerPrivate; std::unique_ptr m_d; }; int parseProgress(const QString &out, bool &foundAssertion); } // namespace Internal } // namespace Android