hunting/middleware/GuiEngine/lvgl_common/GuiLvgl.cpp
2024-06-15 08:35:07 +08:00

44 lines
1.4 KiB
C++

#include "GuiLvgl.h"
#include "lvgl.h"
#include "Log.h"
#include "LvglWidget.h"
static void idle_queue_timer_cb(lv_timer_t *timer)
{
IdleQueueTimer *idleTimer = (IdleQueueTimer *)(timer->user_data);
std::shared_ptr<Context> ctx = idleTimer->ctx;
if (ctx->eventCallback)
{
ctx->eventCallback(ctx);
}
lv_timer_del(idleTimer->mTimer);
idleTimer->mTimer = nullptr;
delete (idleTimer);
}
GuiLvgl::GuiLvgl()
{
}
void GuiLvgl::IdleQueue(const std::shared_ptr<Context> &ctx)
{
IdleQueueTimer *newTimer = new IdleQueueTimer;
newTimer->ctx = ctx;
constexpr int NOT_SLEEP = 0;
newTimer->mTimer = lv_timer_create(idle_queue_timer_cb, NOT_SLEEP, newTimer);
}
std::shared_ptr<Widget> GuiLvgl::NewPage(void)
{
std::shared_ptr<LvglWidget> window = std::make_shared<LvglWidget>();
// window->mWidget = lv_win_create(lv_scr_act(), headerHeight);
window->mWidget = lv_obj_create(nullptr);
// window->mWidget = lv_win_create(lv_obj_create(nullptr), headerHeight);
LogInfo("create window %p\n", window->mWidget);
return window;
}
std::shared_ptr<Widget> GuiLvgl::NewImage(const std::shared_ptr<Widget> &parent)
{
std::shared_ptr<LvglWidget> widget = std::make_shared<LvglWidget>();
if (parent)
{
widget->mWidget = lv_img_create(std::dynamic_pointer_cast<LvglWidget>(parent)->mWidget);
}
return widget;
}