Android: Make device info caching hack a bit less intrusive

The list of earlier build steps is not used anywhere else,
so it's not a really useful generic feature to have.

Avoid its single use here by searching for the interesting
step directly.

Change-Id: I52fffc75008dc01ff8ec6ca16045cbf151087ec1
Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
This commit is contained in:
hjk
2019-01-10 16:23:05 +01:00
parent 596017c43d
commit a1ae5820af
2 changed files with 10 additions and 16 deletions

View File

@@ -106,13 +106,6 @@ AndroidDeployQtStep::AndroidDeployQtStep(ProjectExplorer::BuildStepList *parent)
this, &AndroidDeployQtStep::slotSetSerialNumber);
}
static AndroidDeviceInfo earlierDeviceInfo(QList<const ProjectExplorer::BuildStep *> &earlierSteps, Core::Id id)
{
const ProjectExplorer::BuildStep *bs
= Utils::findOrDefault(earlierSteps, Utils::equal(&ProjectExplorer::BuildStep::id, id));
return bs ? static_cast<const AndroidDeployQtStep *>(bs)->deviceInfo() : AndroidDeviceInfo();
}
bool AndroidDeployQtStep::init(QList<const BuildStep *> &earlierSteps)
{
Q_UNUSED(earlierSteps);
@@ -141,7 +134,16 @@ bool AndroidDeployQtStep::init(QList<const BuildStep *> &earlierSteps)
int minTargetApi = AndroidManager::minimumSDK(target());
qCDebug(deployStepLog) << "Target architecture:" << m_targetArch
<< "Min target API" << minTargetApi;
AndroidDeviceInfo info = earlierDeviceInfo(earlierSteps, Id);
// Try to re-use user-provided information from an earlier step of the same type.
auto bsl = qobject_cast<BuildStepList *>(parent());
QTC_ASSERT(bsl, return false);
auto androidDeployQtStep = bsl->firstOfType<AndroidDeployQtStep>();
QTC_ASSERT(androidDeployQtStep, return false);
AndroidDeviceInfo info;
if (androidDeployQtStep != this)
info = androidDeployQtStep->m_deviceInfo;
if (!info.isValid()) {
info = AndroidConfigurations::showDeviceDialog(project(), minTargetApi, m_targetArch);
m_deviceInfo = info; // Keep around for later steps
@@ -498,11 +500,6 @@ void AndroidDeployQtStep::runCommand(const QString &program, const QStringList &
emit addOutput(response.exitMessage(program, 2 * 60), BuildStep::OutputFormat::ErrorMessage);
}
AndroidDeviceInfo AndroidDeployQtStep::deviceInfo() const
{
return m_deviceInfo;
}
ProjectExplorer::BuildStepConfigWidget *AndroidDeployQtStep::createConfigWidget()
{
return new AndroidDeployQtWidget(this);