#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 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 &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 GuiLvgl::NewPage(void) { std::shared_ptr window = std::make_shared(); // 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 GuiLvgl::NewImage(const std::shared_ptr &parent) { std::shared_ptr widget = std::make_shared(); if (parent) { widget->mWidget = lv_img_create(std::dynamic_pointer_cast(parent)->mWidget); } return widget; }