feat: add DemoApp and ShutdownApp classes for interactive UI components and shutdown management
This commit is contained in:
53
main/ui/apps/demo_app.h
Normal file
53
main/ui/apps/demo_app.h
Normal file
@@ -0,0 +1,53 @@
|
||||
#pragma once
|
||||
|
||||
#include "ui/ui_app.h"
|
||||
#include "ui/app_registry.h"
|
||||
|
||||
/**
|
||||
* @brief Demo application - counter and brightness slider
|
||||
*
|
||||
* Demonstrates interactive UI components with touch input:
|
||||
* - Counter display with increment/decrement buttons
|
||||
* - Brightness slider
|
||||
*/
|
||||
class DemoApp : public UIApp {
|
||||
public:
|
||||
DemoApp() = default;
|
||||
virtual ~DemoApp() = default;
|
||||
|
||||
esp_err_t init(lv_obj_t* container) override;
|
||||
esp_err_t deinit(void) override;
|
||||
std::string get_name(void) const override;
|
||||
|
||||
private:
|
||||
// UI components
|
||||
lv_obj_t* _label_header= nullptr;
|
||||
lv_obj_t* _label_counter= nullptr;
|
||||
lv_obj_t* _btn_increment= nullptr;
|
||||
lv_obj_t* _btn_decrement= nullptr;
|
||||
lv_obj_t* _slider_brightness= nullptr;
|
||||
lv_obj_t* _label_slider_value= nullptr;
|
||||
|
||||
// State
|
||||
int _counter= 0;
|
||||
|
||||
// Event callbacks
|
||||
static void btn_increment_event_cb(lv_event_t* e);
|
||||
static void btn_decrement_event_cb(lv_event_t* e);
|
||||
static void slider_event_cb(lv_event_t* e);
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief AppDescriptor for DemoApp
|
||||
*
|
||||
* Registers the demo app with the AppRegistry and provides
|
||||
* icon rendering functionality.
|
||||
*/
|
||||
class DemoAppDescriptor : public AppDescriptor {
|
||||
public:
|
||||
DemoAppDescriptor();
|
||||
void draw_icon(lv_obj_t* parent) override;
|
||||
|
||||
private:
|
||||
static DemoApp* _app_instance;
|
||||
};
|
||||
Reference in New Issue
Block a user