diff --git a/CMakeLists.txt b/CMakeLists.txt index ef62d83..5da8d17 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,7 @@ set(headers src/changevaluedisplay_bool.h src/changevaluedisplay_daylightsavingmode.h src/changevaluedisplay_sntp_sync_mode_t.h + src/changevaluedisplay_wifi_mode_t.h src/checkboxicon.h src/colorinterface.h src/confirminterface.h @@ -44,6 +45,7 @@ set(sources src/changevaluedisplay_bool.cpp src/changevaluedisplay_daylightsavingmode.cpp src/changevaluedisplay_sntp_sync_mode_t.cpp + src/changevaluedisplay_wifi_mode_t.cpp src/display.cpp src/displaywithtitle.cpp src/graphdisplay.cpp diff --git a/src/changevaluedisplay_bool.h b/src/changevaluedisplay_bool.h index 8c7f7cf..e626734 100644 --- a/src/changevaluedisplay_bool.h +++ b/src/changevaluedisplay_bool.h @@ -6,6 +6,7 @@ #include "actioninterface.h" namespace espgui { + template<> class ChangeValueDisplay : public MenuDisplay, @@ -19,4 +20,5 @@ public: void start() override; }; + } // namespace espgui diff --git a/src/changevaluedisplay_daylightsavingmode.cpp b/src/changevaluedisplay_daylightsavingmode.cpp index 3952c43..e5f52ca 100644 --- a/src/changevaluedisplay_daylightsavingmode.cpp +++ b/src/changevaluedisplay_daylightsavingmode.cpp @@ -3,6 +3,9 @@ // esp-idf includes #include +// 3rdparty lib includes +#include + // local includes #include "actions/setvalueaction.h" #include "actions/backproxyaction.h" @@ -36,7 +39,7 @@ void ChangeValueDisplay::start() case espchrono::DayLightSavingMode::EuropeanSummerTime: setSelectedIndex(1); break; case espchrono::DayLightSavingMode::UsDaylightTime: setSelectedIndex(2); break; default: - ESP_LOGW(TAG, "Unknown DayLightSavingMode: %i", int(value)); + ESP_LOGW(TAG, "Unknown DayLightSavingMode: %i", std::to_underlying(value)); setSelectedIndex(3); } } diff --git a/src/changevaluedisplay_daylightsavingmode.h b/src/changevaluedisplay_daylightsavingmode.h index fde36d0..e21a767 100644 --- a/src/changevaluedisplay_daylightsavingmode.h +++ b/src/changevaluedisplay_daylightsavingmode.h @@ -9,6 +9,7 @@ #include "actioninterface.h" namespace espgui { + template<> class ChangeValueDisplay : public MenuDisplay, @@ -22,4 +23,5 @@ public: void start() override; }; + } // namespace espgui diff --git a/src/changevaluedisplay_sntp_sync_mode_t.cpp b/src/changevaluedisplay_sntp_sync_mode_t.cpp index bfefa17..f64b1ff 100644 --- a/src/changevaluedisplay_sntp_sync_mode_t.cpp +++ b/src/changevaluedisplay_sntp_sync_mode_t.cpp @@ -3,6 +3,9 @@ // esp-idf includes #include +// 3rdparty lib includes +#include + // local includes #include "actions/setvalueaction.h" #include "actions/backproxyaction.h" @@ -33,7 +36,7 @@ void ChangeValueDisplay::start() case SNTP_SYNC_MODE_IMMED: setSelectedIndex(0); break; case SNTP_SYNC_MODE_SMOOTH: setSelectedIndex(1); break; default: - ESP_LOGW("BOBBY", "Unknown sntp_sync_mode_t: %i", int(value)); + ESP_LOGW(TAG, "Unknown sntp_sync_mode_t: %i", std::to_underlying(value)); setSelectedIndex(2); } } diff --git a/src/changevaluedisplay_sntp_sync_mode_t.h b/src/changevaluedisplay_sntp_sync_mode_t.h index 7053ea2..54a2bef 100644 --- a/src/changevaluedisplay_sntp_sync_mode_t.h +++ b/src/changevaluedisplay_sntp_sync_mode_t.h @@ -6,8 +6,10 @@ // local includes #include "changevaluedisplay.h" #include "menudisplay.h" +#include "actioninterface.h" namespace espgui { + template<> class ChangeValueDisplay : public MenuDisplay, @@ -21,4 +23,5 @@ public: void start() override; }; + } // namespace espgui diff --git a/src/changevaluedisplay_wifi_mode_t.cpp b/src/changevaluedisplay_wifi_mode_t.cpp new file mode 100644 index 0000000..99ca683 --- /dev/null +++ b/src/changevaluedisplay_wifi_mode_t.cpp @@ -0,0 +1,47 @@ +#include "changevaluedisplay_wifi_mode_t.h" + +// esp-idf includes +#include + +// local includes +#include "actions/setvalueaction.h" +#include "actions/backproxyaction.h" +#include "icons/back.h" + +namespace espgui { +namespace { +constexpr const char * const TAG = "ESPGUI"; + +constexpr char TEXT_NULL[] = "NULL"; +constexpr char TEXT_STA[] = "STA"; +constexpr char TEXT_AP[] = "AP"; +constexpr char TEXT_APSTA[] = "APSTA"; +constexpr char TEXT_BACK[] = "BACK"; +} // namespace + +ChangeValueDisplay::ChangeValueDisplay() +{ + constructMenuItem, StaticText>>(WIFI_MODE_NULL, *this, *this); + constructMenuItem, StaticText>>(WIFI_MODE_STA, *this, *this); + constructMenuItem, StaticText>>(WIFI_MODE_AP, *this, *this); + constructMenuItem, StaticText>>(WIFI_MODE_APSTA, *this, *this); + constructMenuItem, StaticMenuItemIcon<&espgui::icons::back>>>(*this); +} + +void ChangeValueDisplay::start() +{ + Base::start(); + + switch (const auto value = getValue()) + { + case WIFI_MODE_NULL: setSelectedIndex(0); break; + case WIFI_MODE_STA: setSelectedIndex(1); break; + case WIFI_MODE_AP: setSelectedIndex(2); break; + case WIFI_MODE_APSTA: setSelectedIndex(3); break; + default: + ESP_LOGW(TAG, "Unknown wifi_mode_t: %i", int(value)); + setSelectedIndex(4); + } +} + +} // namespace espgui diff --git a/src/changevaluedisplay_wifi_mode_t.h b/src/changevaluedisplay_wifi_mode_t.h new file mode 100644 index 0000000..6fb95c5 --- /dev/null +++ b/src/changevaluedisplay_wifi_mode_t.h @@ -0,0 +1,27 @@ +#pragma once + +// esp-idf includes +#include + +// local includes +#include "changevaluedisplay.h" +#include "menudisplay.h" +#include "actioninterface.h" + +namespace espgui { + +template<> +class ChangeValueDisplay : + public MenuDisplay, + public virtual AccessorInterface, + public virtual ActionInterface +{ + using Base = MenuDisplay; + +public: + ChangeValueDisplay(); + + void start() override; +}; + +} // namespace espgui