ChangeValueDisplays now have ConfirmInterface and ErrorHandlerInterface

This commit is contained in:
2021-12-29 22:24:31 +01:00
parent a279559e76
commit ec002d6058
11 changed files with 52 additions and 37 deletions

View File

@@ -3,25 +3,29 @@
// local includes // local includes
#include "actioninterface.h" #include "actioninterface.h"
#include "accessorinterface.h" #include "accessorinterface.h"
#include "confirminterface.h"
#include "errorhandlerinterface.h"
namespace espgui { namespace espgui {
template<typename T> template<typename T>
class SetValueAction : public virtual ActionInterface class SetValueAction : public virtual ActionInterface
{ {
public: public:
SetValueAction(T value, AccessorInterface<T> &accessorInterface, ActionInterface &actionInterface) : SetValueAction(T value,AccessorInterface<T> &accessorInterface,
ConfirmInterface &confirmInterface, ErrorHandlerInterface &errorHandlerInterface) :
m_value{value}, m_value{value},
m_accessorInterface{accessorInterface}, m_accessorInterface{accessorInterface},
m_actionInterface{actionInterface} m_confirmInterface{confirmInterface},
m_errorHandlerInterface{errorHandlerInterface}
{ {
} }
void triggered() override void triggered() override
{ {
// TODO: implement error handling and show popup in case of error if (auto result = m_accessorInterface.setValue(m_value); result)
m_accessorInterface.setValue(m_value); m_confirmInterface.confirm();
else
m_actionInterface.triggered(); m_errorHandlerInterface.errorOccured(std::move(result).error());
} }
T value() const { return m_value; } T value() const { return m_value; }
@@ -29,6 +33,7 @@ public:
private: private:
const T m_value; const T m_value;
AccessorInterface<T> &m_accessorInterface; AccessorInterface<T> &m_accessorInterface;
ActionInterface &m_actionInterface; ConfirmInterface &m_confirmInterface;
ErrorHandlerInterface &m_errorHandlerInterface;
}; };
} // namespace espgui } // namespace espgui

View File

@@ -14,8 +14,8 @@ constexpr char TEXT_BACK[] = "Back";
ChangeValueDisplay<bool>::ChangeValueDisplay() ChangeValueDisplay<bool>::ChangeValueDisplay()
{ {
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<bool>, StaticText<TEXT_TRUE>>>(true, *this, *this); constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<bool>, StaticText<TEXT_TRUE>>>(true, *this, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<bool>, StaticText<TEXT_FALSE>>>(false, *this, *this); constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<bool>, StaticText<TEXT_FALSE>>>(false, *this, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&icons::back>>>(*this); constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&icons::back>>>(*this);
} }

View File

@@ -3,7 +3,8 @@
// local includes // local includes
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menudisplay.h" #include "menudisplay.h"
#include "actioninterface.h" #include "confirminterface.h"
#include "errorhandlerinterface.h"
namespace espgui { namespace espgui {
@@ -11,7 +12,8 @@ template<>
class ChangeValueDisplay<bool> : class ChangeValueDisplay<bool> :
public MenuDisplay, public MenuDisplay,
public virtual AccessorInterface<bool>, public virtual AccessorInterface<bool>,
public virtual ActionInterface public virtual ConfirmInterface,
public virtual ErrorHandlerInterface
{ {
using Base = MenuDisplay; using Base = MenuDisplay;

View File

@@ -23,9 +23,9 @@ constexpr char TEXT_BACK[] = "Back";
ChangeValueDisplay<espchrono::DayLightSavingMode>::ChangeValueDisplay() ChangeValueDisplay<espchrono::DayLightSavingMode>::ChangeValueDisplay()
{ {
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<espchrono::DayLightSavingMode>, StaticText<TEXT_NONE>>>(espchrono::DayLightSavingMode::None, *this, *this); constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<espchrono::DayLightSavingMode>, StaticText<TEXT_NONE>>>(espchrono::DayLightSavingMode::None, *this, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<espchrono::DayLightSavingMode>, StaticText<TEXT_EUROPEANSUMMERTIME>>>(espchrono::DayLightSavingMode::EuropeanSummerTime, *this, *this); constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<espchrono::DayLightSavingMode>, StaticText<TEXT_EUROPEANSUMMERTIME>>>(espchrono::DayLightSavingMode::EuropeanSummerTime, *this, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<espchrono::DayLightSavingMode>, StaticText<TEXT_USDAYLIGHTTIME>>>(espchrono::DayLightSavingMode::UsDaylightTime, *this, *this); constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<espchrono::DayLightSavingMode>, StaticText<TEXT_USDAYLIGHTTIME>>>(espchrono::DayLightSavingMode::UsDaylightTime, *this, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&icons::back>>>(*this); constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&icons::back>>>(*this);
} }

View File

@@ -6,7 +6,8 @@
// local includes // local includes
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menudisplay.h" #include "menudisplay.h"
#include "actioninterface.h" #include "confirminterface.h"
#include "errorhandlerinterface.h"
namespace espgui { namespace espgui {
@@ -14,7 +15,8 @@ template<>
class ChangeValueDisplay<espchrono::DayLightSavingMode> : class ChangeValueDisplay<espchrono::DayLightSavingMode> :
public MenuDisplay, public MenuDisplay,
public virtual AccessorInterface<espchrono::DayLightSavingMode>, public virtual AccessorInterface<espchrono::DayLightSavingMode>,
public virtual ActionInterface public virtual ConfirmInterface,
public virtual ErrorHandlerInterface
{ {
using Base = MenuDisplay; using Base = MenuDisplay;

View File

@@ -22,8 +22,8 @@ constexpr char TEXT_BACK[] = "Back";
ChangeValueDisplay<sntp_sync_mode_t>::ChangeValueDisplay() ChangeValueDisplay<sntp_sync_mode_t>::ChangeValueDisplay()
{ {
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<sntp_sync_mode_t>, StaticText<TEXT_IMMED>>>(SNTP_SYNC_MODE_IMMED, *this, *this); constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<sntp_sync_mode_t>, StaticText<TEXT_IMMED>>>(SNTP_SYNC_MODE_IMMED, *this, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<sntp_sync_mode_t>, StaticText<TEXT_SMOOTH>>>(SNTP_SYNC_MODE_SMOOTH, *this, *this); constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<sntp_sync_mode_t>, StaticText<TEXT_SMOOTH>>>(SNTP_SYNC_MODE_SMOOTH, *this, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&icons::back>>>(*this); constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&icons::back>>>(*this);
} }

View File

@@ -6,7 +6,8 @@
// local includes // local includes
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menudisplay.h" #include "menudisplay.h"
#include "actioninterface.h" #include "confirminterface.h"
#include "errorhandlerinterface.h"
namespace espgui { namespace espgui {
@@ -14,7 +15,8 @@ template<>
class ChangeValueDisplay<sntp_sync_mode_t> : class ChangeValueDisplay<sntp_sync_mode_t> :
public MenuDisplay, public MenuDisplay,
public virtual AccessorInterface<sntp_sync_mode_t>, public virtual AccessorInterface<sntp_sync_mode_t>,
public virtual ActionInterface public virtual ConfirmInterface,
public virtual ErrorHandlerInterface
{ {
using Base = MenuDisplay; using Base = MenuDisplay;

View File

@@ -29,15 +29,15 @@ constexpr char TEXT_BACK[] = "BACK";
ChangeValueDisplay<wifi_auth_mode_t>::ChangeValueDisplay() ChangeValueDisplay<wifi_auth_mode_t>::ChangeValueDisplay()
{ {
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_OPEN>>>(WIFI_AUTH_OPEN, *this, *this); constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_OPEN>>>(WIFI_AUTH_OPEN, *this, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WEP>>>(WIFI_AUTH_WEP, *this, *this); constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WEP>>>(WIFI_AUTH_WEP, *this, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WPA_PSK>>>(WIFI_AUTH_WPA_PSK, *this, *this); constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WPA_PSK>>>(WIFI_AUTH_WPA_PSK, *this, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WPA2_PSK>>>(WIFI_AUTH_WPA2_PSK, *this, *this); constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WPA2_PSK>>>(WIFI_AUTH_WPA2_PSK, *this, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WPA_WPA2_PSK>>>(WIFI_AUTH_WPA_WPA2_PSK, *this, *this); constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WPA_WPA2_PSK>>>(WIFI_AUTH_WPA_WPA2_PSK, *this, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WPA2_ENTERPRISE>>>(WIFI_AUTH_WPA2_ENTERPRISE, *this, *this); constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WPA2_ENTERPRISE>>>(WIFI_AUTH_WPA2_ENTERPRISE, *this, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WPA3_PSK>>>(WIFI_AUTH_WPA3_PSK, *this, *this); constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WPA3_PSK>>>(WIFI_AUTH_WPA3_PSK, *this, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WPA2_WPA3_PSK>>>(WIFI_AUTH_WPA2_WPA3_PSK, *this, *this); constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WPA2_WPA3_PSK>>>(WIFI_AUTH_WPA2_WPA3_PSK, *this, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WAPI_PSK>>>(WIFI_AUTH_WAPI_PSK, *this, *this); constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_auth_mode_t>, StaticText<TEXT_WAPI_PSK>>>(WIFI_AUTH_WAPI_PSK, *this, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&espgui::icons::back>>>(*this); constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&espgui::icons::back>>>(*this);
} }

View File

@@ -6,7 +6,8 @@
// local includes // local includes
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menudisplay.h" #include "menudisplay.h"
#include "actioninterface.h" #include "confirminterface.h"
#include "errorhandlerinterface.h"
namespace espgui { namespace espgui {
@@ -14,7 +15,8 @@ template<>
class ChangeValueDisplay<wifi_auth_mode_t> : class ChangeValueDisplay<wifi_auth_mode_t> :
public MenuDisplay, public MenuDisplay,
public virtual AccessorInterface<wifi_auth_mode_t>, public virtual AccessorInterface<wifi_auth_mode_t>,
public virtual ActionInterface public virtual ConfirmInterface,
public virtual ErrorHandlerInterface
{ {
using Base = MenuDisplay; using Base = MenuDisplay;

View File

@@ -24,10 +24,10 @@ constexpr char TEXT_BACK[] = "BACK";
ChangeValueDisplay<wifi_mode_t>::ChangeValueDisplay() 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_NULL>>>(WIFI_MODE_NULL, *this, *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_STA>>>(WIFI_MODE_STA, *this, *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_AP>>>(WIFI_MODE_AP, *this, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_mode_t>, StaticText<TEXT_APSTA>>>(WIFI_MODE_APSTA, *this, *this); constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<wifi_mode_t>, StaticText<TEXT_APSTA>>>(WIFI_MODE_APSTA, *this, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&espgui::icons::back>>>(*this); constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&espgui::icons::back>>>(*this);
} }

View File

@@ -6,7 +6,8 @@
// local includes // local includes
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menudisplay.h" #include "menudisplay.h"
#include "actioninterface.h" #include "confirminterface.h"
#include "errorhandlerinterface.h"
namespace espgui { namespace espgui {
@@ -14,7 +15,8 @@ template<>
class ChangeValueDisplay<wifi_mode_t> : class ChangeValueDisplay<wifi_mode_t> :
public MenuDisplay, public MenuDisplay,
public virtual AccessorInterface<wifi_mode_t>, public virtual AccessorInterface<wifi_mode_t>,
public virtual ActionInterface public virtual ConfirmInterface,
public virtual ErrorHandlerInterface
{ {
using Base = MenuDisplay; using Base = MenuDisplay;