#pragma once #include "esphome/core/automation.h" #include "display_menu_base.h" namespace esphome { namespace display_menu_base { template class UpAction : public Action { public: explicit UpAction(DisplayMenuComponent *menu) : menu_(menu) {} void play(Ts... x) override { this->menu_->up(); } protected: DisplayMenuComponent *menu_; }; template class DownAction : public Action { public: explicit DownAction(DisplayMenuComponent *menu) : menu_(menu) {} void play(Ts... x) override { this->menu_->down(); } protected: DisplayMenuComponent *menu_; }; template class LeftAction : public Action { public: explicit LeftAction(DisplayMenuComponent *menu) : menu_(menu) {} void play(Ts... x) override { this->menu_->left(); } protected: DisplayMenuComponent *menu_; }; template class RightAction : public Action { public: explicit RightAction(DisplayMenuComponent *menu) : menu_(menu) {} void play(Ts... x) override { this->menu_->right(); } protected: DisplayMenuComponent *menu_; }; template class EnterAction : public Action { public: explicit EnterAction(DisplayMenuComponent *menu) : menu_(menu) {} void play(Ts... x) override { this->menu_->enter(); } protected: DisplayMenuComponent *menu_; }; template class ShowAction : public Action { public: explicit ShowAction(DisplayMenuComponent *menu) : menu_(menu) {} void play(Ts... x) override { this->menu_->show(); } protected: DisplayMenuComponent *menu_; }; template class HideAction : public Action { public: explicit HideAction(DisplayMenuComponent *menu) : menu_(menu) {} void play(Ts... x) override { this->menu_->hide(); } protected: DisplayMenuComponent *menu_; }; template class ShowMainAction : public Action { public: explicit ShowMainAction(DisplayMenuComponent *menu) : menu_(menu) {} void play(Ts... x) override { this->menu_->show_main(); } protected: DisplayMenuComponent *menu_; }; template class IsActiveCondition : public Condition { public: explicit IsActiveCondition(DisplayMenuComponent *menu) : menu_(menu) {} bool check(Ts... x) override { return this->menu_->is_active(); } protected: DisplayMenuComponent *menu_; }; class DisplayMenuOnEnterTrigger : public Trigger { public: explicit DisplayMenuOnEnterTrigger(MenuItem *parent) { parent->add_on_enter_callback([this, parent]() { this->trigger(parent); }); } }; class DisplayMenuOnLeaveTrigger : public Trigger { public: explicit DisplayMenuOnLeaveTrigger(MenuItem *parent) { parent->add_on_leave_callback([this, parent]() { this->trigger(parent); }); } }; class DisplayMenuOnValueTrigger : public Trigger { public: explicit DisplayMenuOnValueTrigger(MenuItem *parent) { parent->add_on_value_callback([this, parent]() { this->trigger(parent); }); } }; class DisplayMenuOnNextTrigger : public Trigger { public: explicit DisplayMenuOnNextTrigger(MenuItemCustom *parent) { parent->add_on_next_callback([this, parent]() { this->trigger(parent); }); } }; class DisplayMenuOnPrevTrigger : public Trigger { public: explicit DisplayMenuOnPrevTrigger(MenuItemCustom *parent) { parent->add_on_prev_callback([this, parent]() { this->trigger(parent); }); } }; } // namespace display_menu_base } // namespace esphome