ESPHome 2026.1.0-dev
Loading...
Searching...
No Matches
lvgl_number.h
Go to the documentation of this file.
1#pragma once
2
3#include <utility>
4
8
9namespace esphome {
10namespace lvgl {
11
12class LVGLNumber : public number::Number, public Component {
13 public:
14 LVGLNumber(std::function<void(float)> control_lambda, std::function<float()> value_lambda, lv_event_code_t event,
15 bool restore)
16 : control_lambda_(std::move(control_lambda)),
17 value_lambda_(std::move(value_lambda)),
18 event_(event),
19 restore_(restore) {}
20
21 void setup() override {
22 float value = this->value_lambda_();
23 if (this->restore_) {
25 if (this->pref_.load(&value)) {
26 this->control_lambda_(value);
27 }
28 }
29 this->publish_state(value);
30 }
31
32 void on_value() { this->publish_(this->value_lambda_()); }
33
34 protected:
35 void publish_(float value) {
36 this->publish_state(value);
37 if (this->restore_)
38 this->pref_.save(&value);
39 }
40 void control(float value) override {
41 this->control_lambda_(value);
42 this->publish_(value);
43 }
44 std::function<void(float)> control_lambda_;
45 std::function<float()> value_lambda_;
46 lv_event_code_t event_;
49};
50
51} // namespace lvgl
52} // namespace esphome
bool save(const T *src)
Definition preferences.h:21
virtual ESPPreferenceObject make_preference(size_t length, uint32_t type, bool in_flash)=0
uint32_t get_preference_hash()
Get a unique hash for storing preferences/settings for this entity.
std::function< float()> value_lambda_
Definition lvgl_number.h:45
lv_event_code_t event_
Definition lvgl_number.h:46
LVGLNumber(std::function< void(float)> control_lambda, std::function< float()> value_lambda, lv_event_code_t event, bool restore)
Definition lvgl_number.h:14
void control(float value) override
Definition lvgl_number.h:40
std::function< void(float)> control_lambda_
Definition lvgl_number.h:44
ESPPreferenceObject pref_
Definition lvgl_number.h:48
void publish_(float value)
Definition lvgl_number.h:35
void setup() override
Definition lvgl_number.h:21
Base-class for all numbers.
Definition number.h:29
void publish_state(float state)
Definition number.cpp:31
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
ESPPreferences * global_preferences