44 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			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;
 | 
						|
} |