ESPHome 2025.5.0
Loading...
Searching...
No Matches
select.h
Go to the documentation of this file.
1#pragma once
2
6#include "select_call.h"
7#include "select_traits.h"
8
9namespace esphome {
10namespace select {
11
12#define LOG_SELECT(prefix, type, obj) \
13 if ((obj) != nullptr) { \
14 ESP_LOGCONFIG(TAG, "%s%s '%s'", prefix, LOG_STR_LITERAL(type), (obj)->get_name().c_str()); \
15 if (!(obj)->get_icon().empty()) { \
16 ESP_LOGCONFIG(TAG, "%s Icon: '%s'", prefix, (obj)->get_icon().c_str()); \
17 } \
18 }
19
20#define SUB_SELECT(name) \
21 protected: \
22 select::Select *name##_select_{nullptr}; \
23\
24 public: \
25 void set_##name##_select(select::Select *select) { this->name##_select_ = select; }
26
31class Select : public EntityBase {
32 public:
33 std::string state;
35
36 void publish_state(const std::string &state);
37
39 bool has_state() const { return has_state_; }
40
42 SelectCall make_call() { return SelectCall(this); }
43
45 bool has_option(const std::string &option) const;
46
48 bool has_index(size_t index) const;
49
51 size_t size() const;
52
54 optional<size_t> index_of(const std::string &option) const;
55
58
60 optional<std::string> at(size_t index) const;
61
62 void add_on_state_callback(std::function<void(std::string, size_t)> &&callback);
63
64 protected:
65 friend class SelectCall;
66
73 virtual void control(const std::string &value) = 0;
74
75 CallbackManager<void(std::string, size_t)> state_callback_;
76 bool has_state_{false};
77};
78
79} // namespace select
80} // namespace esphome
Base-class for all selects.
Definition select.h:31
void add_on_state_callback(std::function< void(std::string, size_t)> &&callback)
Definition select.cpp:22
virtual void control(const std::string &value)=0
Set the value of the select, this is a virtual method that each select integration must implement.
SelectCall make_call()
Instantiate a SelectCall object to modify this select component's state.
Definition select.h:42
optional< size_t > active_index() const
Return the (optional) index offset of the currently active option.
Definition select.cpp:44
size_t size() const
Return the number of options in this select component.
Definition select.cpp:30
friend class SelectCall
Definition select.h:65
optional< size_t > index_of(const std::string &option) const
Find the (optional) index offset of the provided option value.
Definition select.cpp:35
optional< std::string > at(size_t index) const
Return the (optional) option value at the provided index offset.
Definition select.cpp:52
bool has_option(const std::string &option) const
Return whether this select component contains the provided option.
Definition select.cpp:26
std::string state
Definition select.h:33
bool has_index(size_t index) const
Return whether this select component contains the provided index offset.
Definition select.cpp:28
SelectTraits traits
Definition select.h:34
bool has_state() const
Return whether this select component has gotten a full state yet.
Definition select.h:39
CallbackManager< void(std::string, size_t)> state_callback_
Definition select.h:75
void publish_state(const std::string &state)
Definition select.cpp:9
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7