/**************************************************************************** ** ** Copyright (C) 2016 BogDan Vatra ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qt Creator. ** ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3 as published by the Free Software ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ****************************************************************************/ #include "androidrunconfiguration.h" #include "androidglobal.h" #include "androidtoolchain.h" #include "androidmanager.h" #include "androidrunconfigurationwidget.h" #include #include #include #include #include #include using namespace ProjectExplorer; namespace Android { using namespace Internal; const char amStartArgsKey[] = "Android.AmStartArgsKey"; const char preStartShellCmdsKey[] = "Android.PreStartShellCmdListKey"; const char postFinishShellCmdsKey[] = "Android.PostFinishShellCmdListKey"; AndroidRunConfiguration::AndroidRunConfiguration(Target *target, Core::Id id) : RunConfiguration(target, id) { setOutputFormatter(); connect(target->project(), &Project::parsingFinished, this, [this] { updateTargetInformation(); }); } void AndroidRunConfiguration::setPreStartShellCommands(const QStringList &cmdList) { m_preStartShellCommands = cmdList; } void AndroidRunConfiguration::setPostFinishShellCommands(const QStringList &cmdList) { m_postFinishShellCommands = cmdList; } void AndroidRunConfiguration::setAmStartExtraArgs(const QStringList &args) { m_amStartExtraArgs = args; } QWidget *AndroidRunConfiguration::createConfigurationWidget() { auto configWidget = new AndroidRunConfigurationWidget(); configWidget->setAmStartArgs(m_amStartExtraArgs); configWidget->setPreStartShellCommands(m_preStartShellCommands); configWidget->setPostFinishShellCommands(m_postFinishShellCommands); connect(configWidget, &AndroidRunConfigurationWidget::amStartArgsChanged, this, &AndroidRunConfiguration::setAmStartExtraArgs); connect(configWidget, &AndroidRunConfigurationWidget::preStartCmdsChanged, this, &AndroidRunConfiguration::setPreStartShellCommands); connect(configWidget, &AndroidRunConfigurationWidget::postFinishCmdsChanged, this, &AndroidRunConfiguration::setPostFinishShellCommands); return configWidget; } bool AndroidRunConfiguration::fromMap(const QVariantMap &map) { if (!RunConfiguration::fromMap(map)) return false; m_preStartShellCommands = map.value(preStartShellCmdsKey).toStringList(); m_postFinishShellCommands = map.value(postFinishShellCmdsKey).toStringList(); m_amStartExtraArgs = map.value(amStartArgsKey).toStringList(); return true; } QVariantMap AndroidRunConfiguration::toMap() const { QVariantMap res = RunConfiguration::toMap(); res[preStartShellCmdsKey] = m_preStartShellCommands; res[postFinishShellCmdsKey] = m_postFinishShellCommands; res[amStartArgsKey] = m_amStartExtraArgs; return res; } const QStringList &AndroidRunConfiguration::amStartExtraArgs() const { return m_amStartExtraArgs; } const QStringList &AndroidRunConfiguration::preStartShellCommands() const { return m_preStartShellCommands; } const QStringList &AndroidRunConfiguration::postFinishShellCommands() const { return m_postFinishShellCommands; } void AndroidRunConfiguration::updateTargetInformation() { const BuildTargetInfo bti = buildTargetInfo(); setDisplayName(bti.displayName); setDefaultDisplayName(bti.displayName); } QString AndroidRunConfiguration::disabledReason() const { const BuildTargetInfo bti = buildTargetInfo(); const QString projectFileName = bti.projectFilePath.toString(); if (project()->isParsing()) return tr("The project file \"%1\" is currently being parsed.").arg(projectFileName); if (!project()->hasParsingData()) { if (!bti.projectFilePath.exists()) return tr("The project file \"%1\" does not exist.").arg(projectFileName); return tr("The project file \"%1\" could not be parsed.").arg(projectFileName); } return QString(); } } // namespace Android