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

View File

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

View File

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

View File

@ -23,9 +23,9 @@ constexpr char TEXT_BACK[] = "Back";
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_EUROPEANSUMMERTIME>>>(espchrono::DayLightSavingMode::EuropeanSummerTime, *this, *this);
constructMenuItem<makeComponentArgs<MenuItem, SetValueAction<espchrono::DayLightSavingMode>, StaticText<TEXT_USDAYLIGHTTIME>>>(espchrono::DayLightSavingMode::UsDaylightTime, *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, *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);
}

View File

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

View File

@ -22,8 +22,8 @@ constexpr char TEXT_BACK[] = "Back";
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_SMOOTH>>>(SNTP_SYNC_MODE_SMOOTH, *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, *this);
constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&icons::back>>>(*this);
}

View File

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

View File

@ -29,15 +29,15 @@ constexpr char TEXT_BACK[] = "BACK";
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_WEP>>>(WIFI_AUTH_WEP, *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_WPA2_PSK>>>(WIFI_AUTH_WPA2_PSK, *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_WPA2_ENTERPRISE>>>(WIFI_AUTH_WPA2_ENTERPRISE, *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_WPA2_WPA3_PSK>>>(WIFI_AUTH_WPA2_WPA3_PSK, *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_OPEN>>>(WIFI_AUTH_OPEN, *this, *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, *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, *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, *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, *this);
constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&espgui::icons::back>>>(*this);
}

View File

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

View File

@ -24,10 +24,10 @@ constexpr char TEXT_BACK[] = "BACK";
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, 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, *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, *this);
constructMenuItem<makeComponentArgs<MenuItem, BackProxyAction, StaticText<TEXT_BACK>, StaticMenuItemIcon<&espgui::icons::back>>>(*this);
}

View File

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