diff --git a/main/accessors/settingsaccessors.h b/main/accessors/settingsaccessors.h index 242ffa2..7b9c7a5 100644 --- a/main/accessors/settingsaccessors.h +++ b/main/accessors/settingsaccessors.h @@ -44,6 +44,7 @@ struct BleFenceEnabledAccessor : public NewSettingsAccessor { ConfigWrappe // Cloud struct CloudEnabledAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.cloudSettings.cloudEnabled; } }; struct CloudTransmitTimeoutAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.cloudSettings.cloudTransmitTimeout; } }; +struct CloudModeAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.cloudSettings.cloudMode; } }; // Time //struct TimezoneOffsetAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.timezoneOffset; } }; diff --git a/main/cloud.cpp b/main/cloud.cpp index 6098bbb..fc8595b 100644 --- a/main/cloud.cpp +++ b/main/cloud.cpp @@ -230,7 +230,7 @@ void cloudSend() std::string getLoginMessage() { using namespace espgui; - return fmt::format("{{\"type\": \"hello\", \"name\": \"{}\", \"res\": \"{}x{}\", \"pass\": \"{}\", \"key\": \"{}\"}}", + return fmt::format(R"({{"type": "hello", "name": "{}", "res": "{}x{}", "pass": "{}", "key": "{}"}})", configs.otaUsername.value, tft.width(), tft.height(), configs.webserverPassword.value, configs.cloudSettings.cloudKey.value); } diff --git a/main/cloud.h b/main/cloud.h index a1c2965..bd2412e 100644 --- a/main/cloud.h +++ b/main/cloud.h @@ -5,9 +5,11 @@ // 3rdparty lib includes #include -#include #include +// local includes +#include "bobbytypesafeenum.h" + extern espcpputils::websocket_client cloudClient; extern bool cloudStarted; extern espchrono::millis_clock::time_point lastCreateTry; @@ -19,7 +21,7 @@ extern std::string cloudBuffer; x(STATISTICS) \ x(REMOTE_DISPLAY) \ x(STATISTICS_AND_REMOTE_DISPLAY) -DECLARE_TYPESAFE_ENUM(CloudMode, : uint8_t, CloudModeValues) +DECLARE_BOBBYTYPESAFE_ENUM(CloudMode, : uint8_t, CloudModeValues) void createCloud(); void destroyCloud(); diff --git a/main/displays/menus/cloudsettingsmenu.cpp b/main/displays/menus/cloudsettingsmenu.cpp index 799464e..ee4541e 100644 --- a/main/displays/menus/cloudsettingsmenu.cpp +++ b/main/displays/menus/cloudsettingsmenu.cpp @@ -10,17 +10,19 @@ #include "icons/back.h" // local includes -#include "displays/bobbychangevaluedisplay.h" -#include "cloudtexthelpers.h" #include "accessors/settingsaccessors.h" -#include "cloud.h" -#include "displays/menus/settingsmenu.h" #include "bobbycheckbox.h" +#include "cloud.h" +#include "cloudtexthelpers.h" +#include "displays/bobbychangevaluedisplay.h" +#include "displays/menus/settingsmenu.h" +#include "displays/menus/typesafeenumchangemenu.h" namespace { constexpr char TEXT_CLOUDSETTINGS[] = "Cloud settings"; constexpr char TEXT_CLOUDENABLED[] = "Cloud enabled"; constexpr char TEXT_CLOUDTRANSMITTIMEOUT[] = "Transmit timeout"; +constexpr char TEXT_CLOUDMODE[] = "Cloud mode"; constexpr char TEXT_CLOUDCOLLECTRATE[] = "Cloud collect rate"; constexpr char TEXT_CLOUDSENDRATE[] = "Cloud send rate"; constexpr char TEXT_BACK[] = "Back"; @@ -69,9 +71,10 @@ CloudSettingsMenu::CloudSettingsMenu() constructMenuItem>(); constructMenuItem>(); constructMenuItem>(); - constructMenuItem, PushScreenAction>>(); - constructMenuItem, PushScreenAction>>(); - constructMenuItem, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem>(&configs.cloudSettings.cloudMode); + constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } std::string CloudSettingsMenu::text() const