From af8da5dfae68b704480a751e31606b186b7b3a60 Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Mon, 24 Mar 2014 11:56:26 +0100 Subject: [PATCH] Android: Create AVD: Show error messages The check for errors was wrong and didn't even get the right string. Fix that, and also use a QMessageBox for the errors. Task-number: QTCREATORBUG-11729 Change-Id: I9aecd1dcbeabb35d60833419f7997ea4c704d65b Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/plugins/android/androidconfigurations.cpp | 24 ++++++++++++++----- src/plugins/android/androidconfigurations.h | 2 +- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index bcfac538e2d..f19c89b855f 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -479,11 +479,19 @@ QString AndroidConfig::createAVD(QWidget *parent, int minApiLevel, QString targe avdDialog.nameLineEdit->setValidator(&v); if (d.exec() != QDialog::Accepted) return QString(); - return createAVD(avdDialog.targetComboBox->currentText(), avdDialog.nameLineEdit->text(), - avdDialog.abiComboBox->currentText(), avdDialog.sizeSpinBox->value()); + QString error; + QString avd = createAVD(avdDialog.targetComboBox->currentText(), avdDialog.nameLineEdit->text(), + avdDialog.abiComboBox->currentText(), avdDialog.sizeSpinBox->value(), + &error); + if (!error.isEmpty()) { + QMessageBox::critical(parent, QApplication::translate("AndroidConfig", "Error Creating AVD"), + error); + } + + return avd; } -QString AndroidConfig::createAVD(const QString &target, const QString &name, const QString &abi, int sdcardSize) const +QString AndroidConfig::createAVD(const QString &target, const QString &name, const QString &abi, int sdcardSize, QString *error) const { QProcess proc; proc.setProcessEnvironment(androidToolEnvironment().toProcessEnvironment()); @@ -518,12 +526,16 @@ QString AndroidConfig::createAVD(const QString &target, const QString &name, con break; } - Core::MessageManager::write(QString::fromLocal8Bit(question), Core::MessageManager::Flash); - proc.waitForFinished(); - if (proc.exitCode()) // error! + QString errorOutput = QString::fromLocal8Bit(proc.readAllStandardError()); + // The exit code is always 0, so we need to check stderr + // For now assume that any output at all indicates a error + if (!errorOutput.isEmpty()) { + *error = errorOutput; return QString(); + } + return name; } diff --git a/src/plugins/android/androidconfigurations.h b/src/plugins/android/androidconfigurations.h index 1f2be2a0c4a..4578a39a923 100644 --- a/src/plugins/android/androidconfigurations.h +++ b/src/plugins/android/androidconfigurations.h @@ -117,7 +117,7 @@ public: QString createAVD(QWidget *parent, int minApiLevel = 0, QString targetArch = QString()) const; - QString createAVD(const QString &target, const QString &name, const QString &abi, int sdcardSize) const; + QString createAVD(const QString &target, const QString &name, const QString &abi, int sdcardSize, QString *error) const; bool removeAVD(const QString &name) const; QVector connectedDevices(QString *error = 0) const;