diff options
-rw-r--r-- | src/plugins/android/androidsdkmanager.cpp | 26 | ||||
-rw-r--r-- | src/plugins/android/androidsdkpackage.cpp | 15 | ||||
-rw-r--r-- | src/plugins/android/androidsdkpackage.h | 15 |
3 files changed, 55 insertions, 1 deletions
diff --git a/src/plugins/android/androidsdkmanager.cpp b/src/plugins/android/androidsdkmanager.cpp index 17960ca3a6..0dc7a67ba8 100644 --- a/src/plugins/android/androidsdkmanager.cpp +++ b/src/plugins/android/androidsdkmanager.cpp @@ -278,6 +278,7 @@ public: NdkMarker = 0x800, ExtrasMarker = 0x1000, CmdlineSdkToolsMarker = 0x2000, + GenericToolMarker = 0x4000, SectionMarkers = InstalledPackagesMarker | AvailablePackagesMarkers | AvailableUpdatesMarker }; @@ -300,6 +301,7 @@ private: EmulatorTools *parseEmulatorToolsPackage(const QStringList &data) const; Ndk *parseNdkPackage(const QStringList &data) const; ExtraTools *parseExtraToolsPackage(const QStringList &data) const; + GenericSdkPackage *parseGenericTools(const QStringList &data) const; MarkerTag parseMarkers(const QString &line); MarkerTag m_currentSection = MarkerTag::None; @@ -632,6 +634,10 @@ void SdkManagerOutputParser::parsePackageData(MarkerTag packageMarker, const QSt createPackage(&SdkManagerOutputParser::parseExtraToolsPackage); break; + case MarkerTag::GenericToolMarker: + createPackage(&SdkManagerOutputParser::parseGenericTools); + break; + default: qCDebug(sdkManagerLog) << "Unhandled package: " << markerTags.at(packageMarker); break; @@ -832,6 +838,22 @@ ExtraTools *SdkManagerOutputParser::parseExtraToolsPackage(const QStringList &da return extraTools; } +GenericSdkPackage *SdkManagerOutputParser::parseGenericTools(const QStringList &data) const +{ + GenericSdkPackage *sdkPackage = nullptr; + GenericPackageData packageData; + if (parseAbstractData(packageData, data, 1, "Generic")) { + sdkPackage = new GenericSdkPackage(packageData.revision, data.at(0)); + sdkPackage->setDescriptionText(packageData.description); + sdkPackage->setDisplayText(packageData.description); + sdkPackage->setInstalledLocation(packageData.installedLocation); + } else { + qCDebug(sdkManagerLog) << "Generic: Parsing failed. Minimum required data " + "unavailable:" << data; + } + return sdkPackage; +} + SdkManagerOutputParser::MarkerTag SdkManagerOutputParser::parseMarkers(const QString &line) { if (line.isEmpty()) @@ -842,6 +864,10 @@ SdkManagerOutputParser::MarkerTag SdkManagerOutputParser::parseMarkers(const QSt return pair.first; } + QRegularExpressionMatch match = QRegularExpression("^[a-zA-Z]+[A-Za-z0-9;._-]+").match(line); + if (match.hasMatch() && match.captured(0) == line) + return GenericToolMarker; + return None; } diff --git a/src/plugins/android/androidsdkpackage.cpp b/src/plugins/android/androidsdkpackage.cpp index a3da9625bc..d444d99313 100644 --- a/src/plugins/android/androidsdkpackage.cpp +++ b/src/plugins/android/androidsdkpackage.cpp @@ -319,4 +319,19 @@ void Ndk::setAsNdkBundle(const bool isBundle) m_isBundle = isBundle; } +GenericSdkPackage::GenericSdkPackage(QVersionNumber revision, QString sdkStylePathStr, QObject *parent) : + AndroidSdkPackage(revision, sdkStylePathStr, parent) +{ +} + +bool GenericSdkPackage::isValid() const +{ + return installedLocation().exists(); +} + +AndroidSdkPackage::PackageType GenericSdkPackage::type() const +{ + return AndroidSdkPackage::GenericSdkPackage; +} + } // namespace Android diff --git a/src/plugins/android/androidsdkpackage.h b/src/plugins/android/androidsdkpackage.h index eed0fd4395..af083b6adb 100644 --- a/src/plugins/android/androidsdkpackage.h +++ b/src/plugins/android/androidsdkpackage.h @@ -55,9 +55,10 @@ public: EmulatorToolsPackage = 1 << 6, NDKPackage = 1 << 7, ExtraToolsPackage = 1 << 8, + GenericSdkPackage = 1 << 9, AnyValidType = SdkToolsPackage | BuildToolsPackage | PlatformToolsPackage | SdkPlatformPackage | SystemImagePackage | EmulatorToolsPackage | NDKPackage | - ExtraToolsPackage + ExtraToolsPackage | GenericSdkPackage }; enum PackageState { @@ -221,6 +222,18 @@ public: ExtraTools(QVersionNumber revision, QString sdkStylePathStr, QObject *parent = nullptr); // AndroidSdkPackage Overrides +public: + bool isValid() const override; + PackageType type() const override; +}; + +class GenericSdkPackage : public AndroidSdkPackage +{ +public: + GenericSdkPackage(QVersionNumber revision, QString sdkStylePathStr, QObject *parent = nullptr); + +// AndroidSdkPackage Overrides +public: bool isValid() const override; PackageType type() const override; }; |