Add ChangeValueDisplay for wifi_mode_t

This commit is contained in:
2021-12-29 19:50:22 +01:00
parent 3d01a04aa4
commit 87b2d2b42a
8 changed files with 91 additions and 2 deletions

View File

@@ -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

View File

@@ -6,6 +6,7 @@
#include "actioninterface.h"
namespace espgui {
template<>
class ChangeValueDisplay<bool> :
public MenuDisplay,
@@ -19,4 +20,5 @@ public:
void start() override;
};
} // namespace espgui

View File

@@ -3,6 +3,9 @@
// esp-idf includes
#include <esp_log.h>
// 3rdparty lib includes
#include <futurecpp.h>
// local includes
#include "actions/setvalueaction.h"
#include "actions/backproxyaction.h"
@@ -36,7 +39,7 @@ void ChangeValueDisplay<espchrono::DayLightSavingMode>::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);
}
}

View File

@@ -9,6 +9,7 @@
#include "actioninterface.h"
namespace espgui {
template<>
class ChangeValueDisplay<espchrono::DayLightSavingMode> :
public MenuDisplay,
@@ -22,4 +23,5 @@ public:
void start() override;
};
} // namespace espgui

View File

@@ -3,6 +3,9 @@
// esp-idf includes
#include <esp_log.h>
// 3rdparty lib includes
#include <futurecpp.h>
// local includes
#include "actions/setvalueaction.h"
#include "actions/backproxyaction.h"
@@ -33,7 +36,7 @@ void ChangeValueDisplay<sntp_sync_mode_t>::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);
}
}

View File

@@ -6,8 +6,10 @@
// local includes
#include "changevaluedisplay.h"
#include "menudisplay.h"
#include "actioninterface.h"
namespace espgui {
template<>
class ChangeValueDisplay<sntp_sync_mode_t> :
public MenuDisplay,
@@ -21,4 +23,5 @@ public:
void start() override;
};
} // namespace espgui

View File

@@ -0,0 +1,47 @@
#include "changevaluedisplay_wifi_mode_t.h"
// esp-idf includes
#include <esp_log.h>
// 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<wifi_mode_t>::ChangeValueDisplay()
{
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_mode_t>, StaticText<TEXT_NULL>>>(WIFI_MODE_NULL, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_mode_t>, StaticText<TEXT_STA>>>(WIFI_MODE_STA, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_mode_t>, StaticText<TEXT_AP>>>(WIFI_MODE_AP, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_mode_t>, StaticText<TEXT_APSTA>>>(WIFI_MODE_APSTA, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&espgui::icons::back>>>(*this);
}
void ChangeValueDisplay<wifi_mode_t>::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

View File

@@ -0,0 +1,27 @@
#pragma once
// esp-idf includes
#include <esp_wifi_types.h>
// local includes
#include "changevaluedisplay.h"
#include "menudisplay.h"
#include "actioninterface.h"
namespace espgui {
template<>
class ChangeValueDisplay<wifi_mode_t> :
public MenuDisplay,
public virtual AccessorInterface<wifi_mode_t>,
public virtual ActionInterface
{
using Base = MenuDisplay;
public:
ChangeValueDisplay();
void start() override;
};
} // namespace espgui