Android: Use aspects more directly in AndroidRunConfiguration

Change-Id: I0eed35acd6c65dccd99ace12dc98bf0e3ab1a2f0
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2023-07-13 12:17:26 +02:00
parent 7f9d1fb993
commit 54a6145ae9

View File

@@ -28,8 +28,9 @@ namespace Android {
class BaseStringListAspect final : public Utils::StringAspect
{
public:
explicit BaseStringListAspect() = default;
~BaseStringListAspect() final = default;
explicit BaseStringListAspect(AspectContainer *container)
: StringAspect(container)
{}
void fromMap(const QVariantMap &map) final
{
@@ -50,39 +51,34 @@ public:
AndroidRunConfiguration(Target *target, Id id)
: RunConfiguration(target, id)
{
auto envAspect = addAspect<EnvironmentAspect>();
envAspect->addSupportedBaseEnvironment(Tr::tr("Clean Environment"), {});
environment.addSupportedBaseEnvironment(Tr::tr("Clean Environment"), {});
auto extraAppArgsAspect = addAspect<ArgumentsAspect>();
extraAppArgsAspect->setMacroExpander(macroExpander());
extraAppArgs.setMacroExpander(macroExpander());
connect(extraAppArgsAspect, &BaseAspect::changed, this, [target, extraAppArgsAspect] {
connect(&extraAppArgs, &BaseAspect::changed, this, [this, target] {
if (target->buildConfigurations().first()->buildType() == BuildConfiguration::BuildType::Release) {
const QString buildKey = target->activeBuildKey();
target->buildSystem()->setExtraData(buildKey,
Android::Constants::AndroidApplicationArgs,
extraAppArgsAspect->arguments());
extraAppArgs());
}
});
auto amStartArgsAspect = addAspect<StringAspect>();
amStartArgsAspect->setId(Constants::ANDROID_AM_START_ARGS);
amStartArgsAspect->setSettingsKey("Android.AmStartArgsKey");
amStartArgsAspect->setLabelText(Tr::tr("Activity manager start arguments:"));
amStartArgsAspect->setDisplayStyle(StringAspect::LineEditDisplay);
amStartArgsAspect->setHistoryCompleter("Android.AmStartArgs.History");
amStartArgs.setId(Constants::ANDROID_AM_START_ARGS);
amStartArgs.setSettingsKey("Android.AmStartArgsKey");
amStartArgs.setLabelText(Tr::tr("Activity manager start arguments:"));
amStartArgs.setDisplayStyle(StringAspect::LineEditDisplay);
amStartArgs.setHistoryCompleter("Android.AmStartArgs.History");
auto preStartShellCmdAspect = addAspect<BaseStringListAspect>();
preStartShellCmdAspect->setDisplayStyle(StringAspect::TextEditDisplay);
preStartShellCmdAspect->setId(Constants::ANDROID_PRESTARTSHELLCMDLIST);
preStartShellCmdAspect->setSettingsKey("Android.PreStartShellCmdListKey");
preStartShellCmdAspect->setLabelText(Tr::tr("Pre-launch on-device shell commands:"));
preStartShellCmd.setDisplayStyle(StringAspect::TextEditDisplay);
preStartShellCmd.setId(Constants::ANDROID_PRESTARTSHELLCMDLIST);
preStartShellCmd.setSettingsKey("Android.PreStartShellCmdListKey");
preStartShellCmd.setLabelText(Tr::tr("Pre-launch on-device shell commands:"));
auto postStartShellCmdAspect = addAspect<BaseStringListAspect>();
postStartShellCmdAspect->setDisplayStyle(StringAspect::TextEditDisplay);
postStartShellCmdAspect->setId(Constants::ANDROID_POSTFINISHSHELLCMDLIST);
postStartShellCmdAspect->setSettingsKey("Android.PostStartShellCmdListKey");
postStartShellCmdAspect->setLabelText(Tr::tr("Post-quit on-device shell commands:"));
postStartShellCmd.setDisplayStyle(StringAspect::TextEditDisplay);
postStartShellCmd.setId(Constants::ANDROID_POSTFINISHSHELLCMDLIST);
postStartShellCmd.setSettingsKey("Android.PostStartShellCmdListKey");
postStartShellCmd.setLabelText(Tr::tr("Post-quit on-device shell commands:"));
setUpdater([this] {
const BuildTargetInfo bti = buildTargetInfo();
@@ -92,6 +88,12 @@ public:
connect(target, &Target::buildSystemUpdated, this, &RunConfiguration::update);
}
EnvironmentAspect environment{this};
ArgumentsAspect extraAppArgs{this};
StringAspect amStartArgs{this};
BaseStringListAspect preStartShellCmd{this};
BaseStringListAspect postStartShellCmd{this};
};
AndroidRunConfigurationFactory::AndroidRunConfigurationFactory()