summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/android/androidsdkmanager.cpp26
-rw-r--r--src/plugins/android/androidsdkpackage.cpp15
-rw-r--r--src/plugins/android/androidsdkpackage.h15
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;
};