ESPHome
2025.5.0
Loading...
Searching...
No Matches
esphome
components
graphical_display_menu
graphical_display_menu.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
esphome/core/color.h
"
4
#include "
esphome/components/display_menu_base/display_menu_base.h
"
5
#include "
esphome/components/display_menu_base/menu_item.h
"
6
#include "
esphome/core/automation.h
"
7
#include <cstdlib>
8
9
namespace
esphome
{
10
11
// forward declare from display namespace
12
namespace
display {
13
class
Display;
14
class
DisplayPage;
15
class
BaseFont;
16
class
Rect;
17
}
// namespace display
18
19
namespace
graphical_display_menu {
20
21
const
Color
COLOR_ON
(255, 255, 255, 255);
22
const
Color
COLOR_OFF
(0, 0, 0, 0);
23
24
struct
MenuItemValueArguments
{
25
MenuItemValueArguments
(
const
display_menu_base::MenuItem
*
item
,
bool
is_item_selected
,
bool
is_menu_editing
) {
26
this->item =
item
;
27
this->is_item_selected =
is_item_selected
;
28
this->is_menu_editing =
is_menu_editing
;
29
}
30
31
const
display_menu_base::MenuItem
*
item
;
32
bool
is_item_selected
;
33
bool
is_menu_editing
;
34
};
35
36
class
GraphicalDisplayMenu
:
public
display_menu_base::DisplayMenuComponent
{
37
public
:
38
void
setup
()
override
;
39
void
dump_config
()
override
;
40
41
void
set_display
(
display::Display
*display);
42
void
set_font
(
display::BaseFont
*font);
43
template
<
typename
V>
void
set_menu_item_value
(V menu_item_value) { this->
menu_item_value_
= menu_item_value; }
44
void
set_foreground_color
(
Color
foreground_color);
45
void
set_background_color
(
Color
background_color);
46
47
void
add_on_redraw_callback
(std::function<
void
()> &&cb) { this->
on_redraw_callbacks_
.add(std::move(cb)); }
48
49
void
draw
(
display::Display
*display,
const
display::Rect
*bounds);
50
51
protected
:
52
void
draw_and_update
()
override
;
53
void
draw_menu
()
override
;
54
void
draw_menu_internal_
(
display::Display
*display,
const
display::Rect
*bounds);
55
void
draw_item
(
const
display_menu_base::MenuItem
*item, uint8_t row,
bool
selected)
override
;
56
virtual
display::Rect
measure_item
(
display::Display
*display,
const
display_menu_base::MenuItem
*item,
57
const
display::Rect
*bounds,
bool
selected);
58
virtual
void
draw_item
(
display::Display
*display,
const
display_menu_base::MenuItem
*item,
59
const
display::Rect
*bounds,
bool
selected);
60
void
update
()
override
;
61
62
void
on_before_show
()
override
;
63
void
on_before_hide
()
override
;
64
65
std::unique_ptr<display::DisplayPage>
display_page_
{
nullptr
};
66
const
display::DisplayPage
*
previous_display_page_
{
nullptr
};
67
display::Display
*
display_
{
nullptr
};
68
display::BaseFont
*
font_
{
nullptr
};
69
TemplatableValue<std::string, const MenuItemValueArguments *>
menu_item_value_
;
70
Color
foreground_color_
{
COLOR_ON
};
71
Color
background_color_
{
COLOR_OFF
};
72
73
CallbackManager
<void()>
on_redraw_callbacks_
{};
74
};
75
76
class
GraphicalDisplayMenuOnRedrawTrigger
:
public
Trigger
<const GraphicalDisplayMenu *> {
77
public
:
78
explicit
GraphicalDisplayMenuOnRedrawTrigger
(
GraphicalDisplayMenu
*parent) {
79
parent->
add_on_redraw_callback
([
this
, parent]() { this->
trigger
(parent); });
80
}
81
};
82
83
}
// namespace graphical_display_menu
84
}
// namespace esphome
esphome::CallbackManager
Definition
helpers.h:491
esphome::TemplatableValue
Definition
automation.h:26
esphome::Trigger
Definition
automation.h:93
esphome::Trigger< const GraphicalDisplayMenu * >::trigger
void trigger(Ts... x)
Definition
automation.h:96
esphome::display::BaseFont
Definition
display.h:202
esphome::display::Display
Definition
display.h:208
esphome::display::DisplayPage
Definition
display.h:690
esphome::display::Rect
Definition
rect.h:10
esphome::display_menu_base::DisplayMenuComponent
Class to display a hierarchical menu.
Definition
display_menu_base.h:22
esphome::display_menu_base::DisplayMenuComponent::draw
void draw()
Definition
display_menu_base.cpp:164
esphome::display_menu_base::MenuItem
Definition
menu_item.h:40
esphome::graphical_display_menu::GraphicalDisplayMenu
Definition
graphical_display_menu.h:36
esphome::graphical_display_menu::GraphicalDisplayMenu::draw_and_update
void draw_and_update() override
Definition
graphical_display_menu.cpp:83
esphome::graphical_display_menu::GraphicalDisplayMenu::on_before_show
void on_before_show() override
Definition
graphical_display_menu.cpp:62
esphome::graphical_display_menu::GraphicalDisplayMenu::set_menu_item_value
void set_menu_item_value(V menu_item_value)
Definition
graphical_display_menu.h:43
esphome::graphical_display_menu::GraphicalDisplayMenu::set_display
void set_display(display::Display *display)
Definition
graphical_display_menu.cpp:55
esphome::graphical_display_menu::GraphicalDisplayMenu::update
void update() override
Definition
graphical_display_menu.cpp:242
esphome::graphical_display_menu::GraphicalDisplayMenu::dump_config
void dump_config() override
Definition
graphical_display_menu.cpp:38
esphome::graphical_display_menu::GraphicalDisplayMenu::display_page_
std::unique_ptr< display::DisplayPage > display_page_
Definition
graphical_display_menu.h:65
esphome::graphical_display_menu::GraphicalDisplayMenu::set_background_color
void set_background_color(Color background_color)
Definition
graphical_display_menu.cpp:60
esphome::graphical_display_menu::GraphicalDisplayMenu::background_color_
Color background_color_
Definition
graphical_display_menu.h:71
esphome::graphical_display_menu::GraphicalDisplayMenu::add_on_redraw_callback
void add_on_redraw_callback(std::function< void()> &&cb)
Definition
graphical_display_menu.h:47
esphome::graphical_display_menu::GraphicalDisplayMenu::menu_item_value_
TemplatableValue< std::string, const MenuItemValueArguments * > menu_item_value_
Definition
graphical_display_menu.h:69
esphome::graphical_display_menu::GraphicalDisplayMenu::on_before_hide
void on_before_hide() override
Definition
graphical_display_menu.cpp:72
esphome::graphical_display_menu::GraphicalDisplayMenu::display_
display::Display * display_
Definition
graphical_display_menu.h:67
esphome::graphical_display_menu::GraphicalDisplayMenu::foreground_color_
Color foreground_color_
Definition
graphical_display_menu.h:70
esphome::graphical_display_menu::GraphicalDisplayMenu::set_font
void set_font(display::BaseFont *font)
Definition
graphical_display_menu.cpp:57
esphome::graphical_display_menu::GraphicalDisplayMenu::draw_item
void draw_item(const display_menu_base::MenuItem *item, uint8_t row, bool selected) override
Definition
graphical_display_menu.cpp:237
esphome::graphical_display_menu::GraphicalDisplayMenu::font_
display::BaseFont * font_
Definition
graphical_display_menu.h:68
esphome::graphical_display_menu::GraphicalDisplayMenu::on_redraw_callbacks_
CallbackManager< void()> on_redraw_callbacks_
Definition
graphical_display_menu.h:73
esphome::graphical_display_menu::GraphicalDisplayMenu::measure_item
virtual display::Rect measure_item(display::Display *display, const display_menu_base::MenuItem *item, const display::Rect *bounds, bool selected)
Definition
graphical_display_menu.cpp:188
esphome::graphical_display_menu::GraphicalDisplayMenu::set_foreground_color
void set_foreground_color(Color foreground_color)
Definition
graphical_display_menu.cpp:59
esphome::graphical_display_menu::GraphicalDisplayMenu::setup
void setup() override
Definition
graphical_display_menu.cpp:13
esphome::graphical_display_menu::GraphicalDisplayMenu::previous_display_page_
const display::DisplayPage * previous_display_page_
Definition
graphical_display_menu.h:66
esphome::graphical_display_menu::GraphicalDisplayMenu::draw_menu_internal_
void draw_menu_internal_(display::Display *display, const display::Rect *bounds)
Definition
graphical_display_menu.cpp:106
esphome::graphical_display_menu::GraphicalDisplayMenu::draw_menu
void draw_menu() override
Definition
graphical_display_menu.cpp:93
esphome::graphical_display_menu::GraphicalDisplayMenuOnRedrawTrigger
Definition
graphical_display_menu.h:76
esphome::graphical_display_menu::GraphicalDisplayMenuOnRedrawTrigger::GraphicalDisplayMenuOnRedrawTrigger
GraphicalDisplayMenuOnRedrawTrigger(GraphicalDisplayMenu *parent)
Definition
graphical_display_menu.h:78
color.h
automation.h
display_menu_base.h
menu_item.h
esphome::graphical_display_menu::COLOR_OFF
const Color COLOR_OFF(0, 0, 0, 0)
esphome::graphical_display_menu::COLOR_ON
const Color COLOR_ON(255, 255, 255, 255)
esphome
Providing packet encoding functions for exchanging data with a remote host.
Definition
a01nyub.cpp:7
esphome::Color
Definition
color.h:10
esphome::graphical_display_menu::MenuItemValueArguments
Definition
graphical_display_menu.h:24
esphome::graphical_display_menu::MenuItemValueArguments::item
const display_menu_base::MenuItem * item
Definition
graphical_display_menu.h:31
esphome::graphical_display_menu::MenuItemValueArguments::is_menu_editing
bool is_menu_editing
Definition
graphical_display_menu.h:33
esphome::graphical_display_menu::MenuItemValueArguments::MenuItemValueArguments
MenuItemValueArguments(const display_menu_base::MenuItem *item, bool is_item_selected, bool is_menu_editing)
Definition
graphical_display_menu.h:25
esphome::graphical_display_menu::MenuItemValueArguments::is_item_selected
bool is_item_selected
Definition
graphical_display_menu.h:32
Generated by
1.12.0