Android: Add updateRecipe

Change-Id: Id934f238cff579208f85af6f8b716871ba0c9321
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Jarek Kobus
2024-05-02 15:33:06 +02:00
parent adcea41617
commit 7039c06f82

View File

@@ -243,8 +243,20 @@ static void setupSdkProcess(const QStringList &args, Process *process,
return;
dialog->setProgress((current * 100.0 + *progress) / total);
});
QObject::connect(process, &Process::readyReadStandardError, dialog, [process, dialog] {
QTextCodec *codec = QTextCodec::codecForLocale();
dialog->appendMessage(codec->toUnicode(process->readAllRawStandardError()), StdErrFormat);
});
};
static void handleSdkProcess(QuestionProgressDialog *dialog, DoneWith result)
{
if (result == DoneWith::Success)
dialog->appendMessage(Tr::tr("Finished successfully.") + "\n\n", StdOutFormat);
else
dialog->appendMessage(Tr::tr("Failed.") + "\n\n", StdErrFormat);
}
static GroupItem installationRecipe(const Storage<DialogStorage> &dialogStorage,
const InstallationChange &change)
{
@@ -282,12 +294,7 @@ static GroupItem installationRecipe(const Storage<DialogStorage> &dialogStorage,
};
const auto onDone = [dialogStorage](DoneWith result) {
if (result == DoneWith::Success) {
dialogStorage->m_dialog->appendMessage(Tr::tr("Finished successfully") + "\n\n",
StdOutFormat);
} else {
dialogStorage->m_dialog->appendMessage(Tr::tr("Failed") + "\n\n", StdErrFormat);
}
handleSdkProcess(dialogStorage->m_dialog.get(), result);
};
return Group {
@@ -305,6 +312,22 @@ static GroupItem installationRecipe(const Storage<DialogStorage> &dialogStorage,
};
}
static GroupItem updateRecipe(const Storage<DialogStorage> &dialogStorage)
{
const auto onUpdateSetup = [dialogStorage](Process &process) {
const QStringList args = {"--update", sdkRootArg(androidConfig())};
QuestionProgressDialog *dialog = dialogStorage->m_dialog.get();
setupSdkProcess(args, &process, dialog, 0, 1);
dialog->appendMessage(Tr::tr("Updating installed packages....") + '\n', NormalMessageFormat);
dialog->setProgress(0);
};
const auto onDone = [dialogStorage](DoneWith result) {
handleSdkProcess(dialogStorage->m_dialog.get(), result);
};
return ProcessTask(onUpdateSetup, onDone);
}
const int sdkManagerCmdTimeoutS = 60;
const int sdkManagerOperationTimeoutS = 600;