mirror of
https://github.com/vicliu624/trail-mate.git
synced 2026-08-04 09:49:43 +00:00
91 lines
2.4 KiB
C++
91 lines
2.4 KiB
C++
#pragma once
|
|
|
|
#include "ui/app_screen.h"
|
|
#include "ui/localization.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* stable_id,
|
|
const char* name,
|
|
const lv_image_dsc_t* icon,
|
|
SimpleCallback enter,
|
|
SimpleCallback exit,
|
|
AppLaunchMode launch_mode = AppLaunchMode::Screen)
|
|
: stable_id_(stable_id),
|
|
name_(name),
|
|
icon_(icon),
|
|
simple_enter_(enter),
|
|
simple_exit_(exit),
|
|
launch_mode_(launch_mode)
|
|
{
|
|
}
|
|
|
|
CallbackAppScreen(const char* stable_id,
|
|
const char* name,
|
|
const lv_image_dsc_t* icon,
|
|
Callback enter,
|
|
Callback exit,
|
|
void* user_data = nullptr,
|
|
AppLaunchMode launch_mode = AppLaunchMode::Screen)
|
|
: stable_id_(stable_id),
|
|
name_(name),
|
|
icon_(icon),
|
|
callback_enter_(enter),
|
|
callback_exit_(exit),
|
|
user_data_(user_data),
|
|
launch_mode_(launch_mode)
|
|
{
|
|
}
|
|
|
|
const char* stable_id() const override { return stable_id_; }
|
|
const char* name() const override { return ::ui::i18n::tr(name_); }
|
|
const lv_image_dsc_t* icon() const override { return icon_; }
|
|
AppLaunchMode launch_mode() const override { return launch_mode_; }
|
|
|
|
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* stable_id_ = nullptr;
|
|
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;
|
|
AppLaunchMode launch_mode_ = AppLaunchMode::Screen;
|
|
};
|
|
|
|
} // namespace ui
|