Android: Introduce InstallationChange helper struct

Change-Id: Iae86b86d5966847d3dafe2e119782e2d0ce3cfe2
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Jarek Kobus
2024-04-18 15:57:25 +02:00
parent 14fa8ec3d5
commit 3a4784ea6c
3 changed files with 16 additions and 12 deletions

View File

@@ -169,8 +169,7 @@ public:
void parseCommonArguments(QPromise<QString> &promise); void parseCommonArguments(QPromise<QString> &promise);
void updateInstalled(SdkCmdPromise &fi); void updateInstalled(SdkCmdPromise &fi);
void update(SdkCmdPromise &fi, const QStringList &install, void update(SdkCmdPromise &fi, const InstallationChange &change);
const QStringList &uninstall);
void checkPendingLicense(SdkCmdPromise &fi); void checkPendingLicense(SdkCmdPromise &fi);
void getPendingLicense(SdkCmdPromise &fi); void getPendingLicense(SdkCmdPromise &fi);
@@ -321,12 +320,11 @@ QFuture<AndroidSdkManager::OperationOutput> AndroidSdkManager::updateAll()
return future; return future;
} }
QFuture<AndroidSdkManager::OperationOutput> QFuture<AndroidSdkManager::OperationOutput> AndroidSdkManager::update(const InstallationChange &change)
AndroidSdkManager::update(const QStringList &install, const QStringList &uninstall)
{ {
if (isBusy()) if (isBusy())
return QFuture<AndroidSdkManager::OperationOutput>(); return QFuture<AndroidSdkManager::OperationOutput>();
auto future = Utils::asyncRun(&AndroidSdkManagerPrivate::update, m_d.get(), install, uninstall); auto future = Utils::asyncRun(&AndroidSdkManagerPrivate::update, m_d.get(), change);
m_d->addWatcher(future); m_d->addWatcher(future);
return future; return future;
} }
@@ -426,12 +424,11 @@ void AndroidSdkManagerPrivate::updateInstalled(SdkCmdPromise &promise)
promise.setProgressValue(100); promise.setProgressValue(100);
} }
void AndroidSdkManagerPrivate::update(SdkCmdPromise &fi, const QStringList &install, void AndroidSdkManagerPrivate::update(SdkCmdPromise &fi, const InstallationChange &change)
const QStringList &uninstall)
{ {
fi.setProgressRange(0, 100); fi.setProgressRange(0, 100);
fi.setProgressValue(0); fi.setProgressValue(0);
double progressQuota = 100.0 / (install.count() + uninstall.count()); double progressQuota = 100.0 / change.count();
int currentProgress = 0; int currentProgress = 0;
QString installTag = Tr::tr("Installing"); QString installTag = Tr::tr("Installing");
@@ -459,7 +456,7 @@ void AndroidSdkManagerPrivate::update(SdkCmdPromise &fi, const QStringList &inst
// Uninstall packages // Uninstall packages
for (const QString &sdkStylePath : uninstall) { for (const QString &sdkStylePath : change.toUninstall) {
// Uninstall operations are not interptible. We don't want to leave half uninstalled. // Uninstall operations are not interptible. We don't want to leave half uninstalled.
QStringList args; QStringList args;
args << "--uninstall" << sdkStylePath << androidConfig().sdkManagerToolArgs(); args << "--uninstall" << sdkStylePath << androidConfig().sdkManagerToolArgs();
@@ -468,7 +465,7 @@ void AndroidSdkManagerPrivate::update(SdkCmdPromise &fi, const QStringList &inst
} }
// Install packages // Install packages
for (const QString &sdkStylePath : install) { for (const QString &sdkStylePath : change.toInstall) {
QStringList args(sdkStylePath); QStringList args(sdkStylePath);
args << androidConfig().sdkManagerToolArgs(); args << androidConfig().sdkManagerToolArgs();
if (doOperation(sdkStylePath, args, true)) if (doOperation(sdkStylePath, args, true))

View File

@@ -19,6 +19,13 @@ namespace Internal {
class AndroidSdkManagerPrivate; class AndroidSdkManagerPrivate;
struct InstallationChange
{
QStringList toInstall;
QStringList toUninstall = {};
int count() const { return toInstall.count() + toUninstall.count(); }
};
class AndroidSdkManager : public QObject class AndroidSdkManager : public QObject
{ {
Q_OBJECT Q_OBJECT
@@ -65,7 +72,7 @@ public:
QFuture<QString> availableArguments() const; QFuture<QString> availableArguments() const;
QFuture<OperationOutput> updateAll(); QFuture<OperationOutput> updateAll();
QFuture<OperationOutput> update(const QStringList &install, const QStringList &uninstall); QFuture<OperationOutput> update(const InstallationChange &change);
QFuture<OperationOutput> checkPendingLicenses(); QFuture<OperationOutput> checkPendingLicenses();
QFuture<OperationOutput> runLicenseCommand(); QFuture<OperationOutput> runLicenseCommand();

View File

@@ -452,7 +452,7 @@ void AndroidSdkManagerWidget::beginExecution()
Tr::tr("preferences") : Tr::tr("options")), Tr::tr("preferences") : Tr::tr("options")),
LogMessageFormat); LogMessageFormat);
addPackageFuture(m_sdkManager->update(installSdkPaths, uninstallSdkPaths)); addPackageFuture(m_sdkManager->update({installSdkPaths, uninstallSdkPaths}));
} }
void AndroidSdkManagerWidget::beginUpdate() void AndroidSdkManagerWidget::beginUpdate()