mirror of
https://github.com/vicliu624/trail-mate.git
synced 2026-07-03 18:41:43 +00:00
d320b6511d
* Unify PlatformIO and ESP-IDF around a shared UI/runtime shell
71 lines
1.7 KiB
C++
71 lines
1.7 KiB
C++
#pragma once
|
|
|
|
#include "ui/app_screen.h"
|
|
|
|
namespace ui
|
|
{
|
|
|
|
class CallbackAppScreen : public AppScreen
|
|
{
|
|
public:
|
|
using SimpleCallback = void (*)(lv_obj_t* parent);
|
|
using Callback = void (*)(void* user_data, lv_obj_t* parent);
|
|
|
|
CallbackAppScreen(const char* name,
|
|
const lv_image_dsc_t* icon,
|
|
SimpleCallback enter,
|
|
SimpleCallback exit)
|
|
: name_(name), icon_(icon), simple_enter_(enter), simple_exit_(exit)
|
|
{
|
|
}
|
|
|
|
CallbackAppScreen(const char* name,
|
|
const lv_image_dsc_t* icon,
|
|
Callback enter,
|
|
Callback exit,
|
|
void* user_data = nullptr)
|
|
: name_(name), icon_(icon), callback_enter_(enter), callback_exit_(exit), user_data_(user_data)
|
|
{
|
|
}
|
|
|
|
const char* name() const override { return name_; }
|
|
const lv_image_dsc_t* icon() const override { return icon_; }
|
|
|
|
void enter(lv_obj_t* parent) override
|
|
{
|
|
if (callback_enter_)
|
|
{
|
|
callback_enter_(user_data_, parent);
|
|
return;
|
|
}
|
|
if (simple_enter_)
|
|
{
|
|
simple_enter_(parent);
|
|
}
|
|
}
|
|
|
|
void exit(lv_obj_t* parent) override
|
|
{
|
|
if (callback_exit_)
|
|
{
|
|
callback_exit_(user_data_, parent);
|
|
return;
|
|
}
|
|
if (simple_exit_)
|
|
{
|
|
simple_exit_(parent);
|
|
}
|
|
}
|
|
|
|
private:
|
|
const char* name_ = nullptr;
|
|
const lv_image_dsc_t* icon_ = nullptr;
|
|
SimpleCallback simple_enter_ = nullptr;
|
|
SimpleCallback simple_exit_ = nullptr;
|
|
Callback callback_enter_ = nullptr;
|
|
Callback callback_exit_ = nullptr;
|
|
void* user_data_ = nullptr;
|
|
};
|
|
|
|
} // namespace ui
|