From eb45df8349a6fc87a32339143e79eb2285f598be Mon Sep 17 00:00:00 2001 From: Karim Abdelrahman Date: Tue, 14 Nov 2023 09:32:14 +0200 Subject: [PATCH] McuSupport: disable run button while flashing in progress Mcus run configuration will build and flash the binary into the target board. The flash process could go wrong if the user accidentally restarted the flashing process by clicking the run button again while flashing is already in progress. Task-number: QTMCU-104 Change-Id: I1387bfd1dd299d427af13de5904f5ad3a8a1d347 Reviewed-by: Eike Ziller Reviewed-by: Alessandro Portale --- .../mcusupport/mcusupportrunconfiguration.cpp | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/plugins/mcusupport/mcusupportrunconfiguration.cpp b/src/plugins/mcusupport/mcusupportrunconfiguration.cpp index 5b397801c8f..b87b527f411 100644 --- a/src/plugins/mcusupport/mcusupportrunconfiguration.cpp +++ b/src/plugins/mcusupport/mcusupportrunconfiguration.cpp @@ -8,6 +8,7 @@ #include #include +#include #include #include @@ -58,9 +59,20 @@ public: connect(target->project(), &Project::displayNameChanged, this, &RunConfiguration::update); } + bool isEnabled() const override + { + if (disabled) + return false; + + return RunConfiguration::isEnabled(); + } + + static bool disabled; StringAspect flashAndRunParameters{this}; }; +bool FlashAndRunConfiguration::disabled = false; + class FlashAndRunWorker : public SimpleTargetRunner { public: @@ -74,6 +86,15 @@ public: setWorkingDirectory(target->activeBuildConfiguration()->buildDirectory()); setEnvironment(target->activeBuildConfiguration()->environment()); }); + + connect(runControl, &RunControl::started, []() { + FlashAndRunConfiguration::disabled = true; + ProjectExplorerPlugin::updateRunActions(); + }); + connect(runControl, &RunControl::stopped, []() { + FlashAndRunConfiguration::disabled = false; + ProjectExplorerPlugin::updateRunActions(); + }); } };