diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/android/sdkmanageroutputparser.cpp | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/src/plugins/android/sdkmanageroutputparser.cpp b/src/plugins/android/sdkmanageroutputparser.cpp index 0178a7f66d0..851ee562830 100644 --- a/src/plugins/android/sdkmanageroutputparser.cpp +++ b/src/plugins/android/sdkmanageroutputparser.cpp @@ -290,7 +290,17 @@ AndroidSdkPackage *parsePackage(const QStringList &data, int minParts, const QSt AndroidSdkPackage *package = nullptr; GenericPackageData packageData; if (parseAbstractData(packageData, data, minParts, logStrTag)) { - package = new T(packageData.revision, data.at(0)); + if constexpr (std::is_same_v<SdkPlatform, T>) { + const int apiLevel = platformNameToApiLevel(packageData.headerParts.at(1)); + if (apiLevel == -1) { + qCDebug(sdkManagerLog) << "Platform: Cannot parse api level:"<< data; + return nullptr; + } + package = new T(packageData.revision, data.at(0), apiLevel); + package->setExtension(convertNameToExtension(packageData.headerParts.at(1))); + } else { + package = new T(packageData.revision, data.at(0)); + } package->setDescriptionText(packageData.description); package->setDisplayText(packageData.description); package->setInstalledLocation(packageData.installedLocation); @@ -303,23 +313,7 @@ AndroidSdkPackage *parsePackage(const QStringList &data, int minParts, const QSt AndroidSdkPackage *SdkManagerOutputParser::parsePlatform(const QStringList &data) const { - SdkPlatform *platform = nullptr; - GenericPackageData packageData; - if (parseAbstractData(packageData, data, 2, "Platform")) { - const int apiLevel = platformNameToApiLevel(packageData.headerParts.at(1)); - if (apiLevel == -1) { - qCDebug(sdkManagerLog) << "Platform: Cannot parse api level:"<< data; - return nullptr; - } - platform = new SdkPlatform(packageData.revision, data.at(0), apiLevel); - platform->setExtension(convertNameToExtension(packageData.headerParts.at(1))); - platform->setInstalledLocation(packageData.installedLocation); - platform->setDescriptionText(packageData.description); - } else { - qCDebug(sdkManagerLog) << "Platform: Parsing failed. Minimum required data unavailable:" - << data; - } - return platform; + return parsePackage<SdkPlatform>(data, 2, "Platform"); } QPair<SystemImage *, int> SdkManagerOutputParser::parseSystemImage(const QStringList &data) const |