mcu_hi3321_watch/middleware/services/gui/lvgl/sample/watch/tools.c
2025-05-26 20:15:20 +08:00

133 lines
4.3 KiB
C

/*
* Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
*/
#include "tools.h"
#include "lv_demo_watch_font.h"
#include "lv_img_cache_manager.h"
#if LV_USE_DEMO_WATCH
#define TOOLS_GROUP_W (LV_HOR_RES * 0.6)
#define TOOLS_GROUP_H (LV_VER_RES / 2)
static LvPageInfo g_pageInfo;
static uint32_t g_resId = 0;
static lv_obj_t* g_img = NULL;
static void ToolsPreloadCb(lv_obj_t* obj)
{
LV_LOGI("callback %s func\n", __FUNCTION__);
g_resId = LvLoadImg("/user/res/APPLIST_VOCASSIST_IMAGE.bin", true);
LvImgSetSrcById(g_img, g_resId);
}
static void ToolsUnloadCb(lv_obj_t* obj)
{
LV_LOGI("callback %s func\n", __FUNCTION__);
LvUnloadImg(g_resId);
}
static void ToolsScrollBeginCb(lv_obj_t* obj, bool isActive)
{
LV_LOGI("callback[%s]: OBJ[%p] IsActive[%d]\n", __FUNCTION__, obj, isActive);
}
static void ToolsScrollEndCb(lv_obj_t* obj, bool isActive)
{
LV_LOGI("callback[%s]: OBJ[%p] IsActive[%d]\n", __FUNCTION__, obj, isActive);
}
static void ToolsCoverBeginCb(lv_obj_t* obj, bool isCovered)
{
LV_LOGI("callback[%s]: OBJ[%p] isCovered[%d]\n", __FUNCTION__, obj, isCovered);
}
static void ToolsCoverEndCb(lv_obj_t* obj, bool isCovered)
{
LV_LOGI("callback[%s]: OBJ[%p] isCovered[%d]\n", __FUNCTION__, obj, isCovered);
}
LvPageInfo* GetToolsPageInfo()
{
g_pageInfo.preload = ToolsPreloadCb;
g_pageInfo.unload = ToolsUnloadCb;
g_pageInfo.scrollBegin = ToolsScrollBeginCb;
g_pageInfo.scrollEnd = ToolsScrollEndCb;
g_pageInfo.coverBegin = ToolsCoverBeginCb;
g_pageInfo.coverEnd = ToolsCoverEndCb;
return &g_pageInfo;
}
static void LvglCreateGroup(lv_obj_t* parent)
{
lv_font_t* font22 = GetLvFont(22); // 22: size
static lv_style_t tileStyle;
lv_style_init(&tileStyle);
lv_style_set_bg_color(&tileStyle, lv_palette_main(LV_PALETTE_GREY));
lv_style_set_bg_opa(&tileStyle, LV_OPA_COVER);
lv_style_set_radius(&tileStyle, TOOLS_GROUP_H / 5); // 5: divider
lv_style_set_border_opa(&tileStyle, LV_OPA_0);
lv_style_set_pad_all(&tileStyle, 0);
lv_style_set_text_color(&tileStyle, lv_palette_main(LV_PALETTE_BLUE));
lv_style_set_text_font(&tileStyle, font22);
lv_obj_t* tileGroup = lv_obj_create(parent);
lv_obj_add_style(tileGroup, &tileStyle, 0);
lv_obj_set_size(tileGroup, TOOLS_GROUP_W, TOOLS_GROUP_H);
lv_obj_center(tileGroup);
lv_obj_clear_flag(tileGroup, LV_OBJ_FLAG_CLICKABLE);
lv_obj_clear_flag(tileGroup, LV_OBJ_FLAG_SCROLLABLE);
g_img = LvImgExtCreate(tileGroup);
lv_obj_center(g_img);
lv_obj_clear_flag(g_img, LV_OBJ_FLAG_SCROLLABLE);
lv_obj_clear_flag(g_img, LV_OBJ_FLAG_CLICKABLE);
}
void LvglCreateTools(lv_obj_t* parent)
{
lv_font_t* font22 = GetLvFont(22); // 22: size
static lv_style_t mainStyle;
lv_style_init(&mainStyle);
lv_style_set_bg_color(&mainStyle, lv_color_black());
lv_style_set_bg_opa(&mainStyle, LV_OPA_COVER);
lv_style_set_border_opa(&mainStyle, LV_OPA_0);
lv_obj_add_style(parent, &mainStyle, 0);
lv_obj_set_style_bg_color(parent, lv_color_black(), LV_PART_MAIN);
static lv_style_t titleLabelStyle;
lv_style_init(&titleLabelStyle);
lv_style_set_text_font(&titleLabelStyle, font22);
lv_style_set_bg_opa(&titleLabelStyle, LV_OPA_0);
lv_style_set_text_color(&titleLabelStyle, lv_color_white());
lv_obj_t* toolLabel = lv_label_create(parent);
if (toolLabel == NULL) {
return;
}
lv_obj_add_style(toolLabel, &titleLabelStyle, 0);
lv_label_set_text(toolLabel, "Tool");
lv_obj_set_align(toolLabel, LV_ALIGN_TOP_LEFT);
lv_obj_clear_flag(toolLabel, LV_OBJ_FLAG_SCROLLABLE);
static lv_style_t timeLabelStyle;
lv_style_init(&timeLabelStyle);
lv_style_set_text_font(&timeLabelStyle, font22);
lv_style_set_bg_opa(&timeLabelStyle, LV_OPA_0);
lv_style_set_text_color(&timeLabelStyle, lv_color_white());
lv_style_set_text_align(&timeLabelStyle, LV_TEXT_ALIGN_RIGHT);
lv_obj_t* timeLabel = lv_label_create(parent);
if (timeLabel == NULL) {
return;
}
lv_obj_add_style(timeLabel, &timeLabelStyle, 0);
lv_label_set_text(timeLabel, "10:03");
lv_obj_set_align(timeLabel, LV_ALIGN_TOP_RIGHT);
lv_obj_clear_flag(timeLabel, LV_OBJ_FLAG_SCROLLABLE);
LvglCreateGroup(parent);
}
#endif