Android: List extra packages as well

These packages should get listed as well as they contain
(at least on Windows) essential packages.

Change-Id: Ia8fb8fc641ac6d9a7fba8f65a31ef65eae560a99
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Christian Stenger
2018-11-21 08:07:07 +01:00
parent 04b20a1a46
commit 10f15f5d1a
3 changed files with 51 additions and 2 deletions

View File

@@ -261,6 +261,7 @@ public:
SdkToolsMarker = 0x100, SdkToolsMarker = 0x100,
PlatformToolsMarker = 0x200, PlatformToolsMarker = 0x200,
EmulatorToolsMarker = 0x400, EmulatorToolsMarker = 0x400,
ExtrasMarker = 0x800,
SectionMarkers = InstalledPackagesMarker | AvailablePackagesMarkers | AvailableUpdatesMarker SectionMarkers = InstalledPackagesMarker | AvailablePackagesMarkers | AvailableUpdatesMarker
}; };
@@ -280,6 +281,7 @@ private:
SdkTools *parseSdkToolsPackage(const QStringList &data) const; SdkTools *parseSdkToolsPackage(const QStringList &data) const;
PlatformTools *parsePlatformToolsPackage(const QStringList &data) const; PlatformTools *parsePlatformToolsPackage(const QStringList &data) const;
EmulatorTools *parseEmulatorToolsPackage(const QStringList &data) const; EmulatorTools *parseEmulatorToolsPackage(const QStringList &data) const;
ExtraTools *parseExtraToolsPackage(const QStringList &data) const;
MarkerTag parseMarkers(const QString &line); MarkerTag parseMarkers(const QString &line);
MarkerTag m_currentSection = MarkerTag::None; MarkerTag m_currentSection = MarkerTag::None;
@@ -295,7 +297,8 @@ const std::map<SdkManagerOutputParser::MarkerTag, const char *> markerTags {
{SdkManagerOutputParser::MarkerTag::BuildToolsMarker, "build-tools"}, {SdkManagerOutputParser::MarkerTag::BuildToolsMarker, "build-tools"},
{SdkManagerOutputParser::MarkerTag::SdkToolsMarker, "tools"}, {SdkManagerOutputParser::MarkerTag::SdkToolsMarker, "tools"},
{SdkManagerOutputParser::MarkerTag::PlatformToolsMarker, "platform-tools"}, {SdkManagerOutputParser::MarkerTag::PlatformToolsMarker, "platform-tools"},
{SdkManagerOutputParser::MarkerTag::EmulatorToolsMarker, "emulator"} {SdkManagerOutputParser::MarkerTag::EmulatorToolsMarker, "emulator"},
{SdkManagerOutputParser::MarkerTag::ExtrasMarker, "extras"}
}; };
AndroidSdkManager::AndroidSdkManager(const AndroidConfig &config, QObject *parent): AndroidSdkManager::AndroidSdkManager(const AndroidConfig &config, QObject *parent):
@@ -562,6 +565,10 @@ void SdkManagerOutputParser::parsePackageData(MarkerTag packageMarker, const QSt
} }
break; break;
case MarkerTag::ExtrasMarker:
createPackage(&SdkManagerOutputParser::parseExtraToolsPackage);
break;
default: default:
qCDebug(sdkManagerLog) << "Unhandled package: " << markerTags.at(packageMarker); qCDebug(sdkManagerLog) << "Unhandled package: " << markerTags.at(packageMarker);
break; break;
@@ -726,6 +733,22 @@ EmulatorTools *SdkManagerOutputParser::parseEmulatorToolsPackage(const QStringLi
return emulatorTools; return emulatorTools;
} }
ExtraTools *SdkManagerOutputParser::parseExtraToolsPackage(const QStringList &data) const
{
ExtraTools *extraTools = nullptr;
GenericPackageData packageData;
if (parseAbstractData(packageData, data, 1, "Extras")) {
extraTools = new ExtraTools(packageData.revision, data.at(0));
extraTools->setDescriptionText(packageData.description);
extraTools->setDisplayText(packageData.description);
extraTools->setInstalledLocation(packageData.installedLocation);
} else {
qCDebug(sdkManagerLog) << "Extra-tools: Parsing failed. Minimum required data "
"unavailable:" << data;
}
return extraTools;
}
SdkManagerOutputParser::MarkerTag SdkManagerOutputParser::parseMarkers(const QString &line) SdkManagerOutputParser::MarkerTag SdkManagerOutputParser::parseMarkers(const QString &line)
{ {
if (line.isEmpty()) if (line.isEmpty())

View File

@@ -269,4 +269,19 @@ AndroidSdkPackage::PackageType EmulatorTools::type() const
return AndroidSdkPackage::EmulatorToolsPackage; return AndroidSdkPackage::EmulatorToolsPackage;
} }
ExtraTools::ExtraTools(QVersionNumber revision, QString sdkStylePathStr, QObject *parent) :
AndroidSdkPackage(revision, sdkStylePathStr, parent)
{
}
bool ExtraTools::isValid() const
{
return installedLocation().exists();
}
AndroidSdkPackage::PackageType ExtraTools::type() const
{
return AndroidSdkPackage::ExtraToolsPackage;
}
} // namespace Android } // namespace Android

View File

@@ -53,8 +53,9 @@ public:
SdkPlatformPackage = 1 << 4, SdkPlatformPackage = 1 << 4,
SystemImagePackage = 1 << 5, SystemImagePackage = 1 << 5,
EmulatorToolsPackage = 1 << 6, EmulatorToolsPackage = 1 << 6,
ExtraToolsPackage = 1 << 7,
AnyValidType = SdkToolsPackage | BuildToolsPackage | PlatformToolsPackage | AnyValidType = SdkToolsPackage | BuildToolsPackage | PlatformToolsPackage |
SdkPlatformPackage | SystemImagePackage | EmulatorToolsPackage SdkPlatformPackage | SystemImagePackage | EmulatorToolsPackage | ExtraToolsPackage
}; };
enum PackageState { enum PackageState {
@@ -191,6 +192,16 @@ public:
bool isValid() const override; bool isValid() const override;
PackageType type() const override; PackageType type() const override;
}; };
class ExtraTools : public AndroidSdkPackage
{
public:
ExtraTools(QVersionNumber revision, QString sdkStylePathStr, QObject *parent = nullptr);
// AndroidSdkPackage Overrides
bool isValid() const override;
PackageType type() const override;
};
} // namespace Android } // namespace Android