103 lines
3.1 KiB
C
103 lines
3.1 KiB
C
|
|
/*
|
|
* Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
|
|
*/
|
|
|
|
#include "app.h"
|
|
#include "lvgl.h"
|
|
#include "lv_demo_watch_font.h"
|
|
|
|
#if LV_USE_DEMO_WATCH
|
|
|
|
#define CONT_WIDTH LV_HOR_RES
|
|
#define CONT_HEIGHT (LV_VER_RES / 8)
|
|
|
|
static lv_style_t g_labelStyle;
|
|
static lv_obj_t* g_btn = NULL;
|
|
|
|
static lv_obj_t* AddPage(lv_obj_t* menu, const char* name, const char* iconSrc)
|
|
{
|
|
lv_obj_t* page = lv_menu_cont_create(menu);
|
|
|
|
lv_obj_t* icon = lv_img_create(page);
|
|
if (iconSrc != NULL) {
|
|
#if LV_USE_IMAGE_CACHE_EXT
|
|
LvImgSetSrcWithCacheFlag(icon, iconSrc, false);
|
|
#else
|
|
LvImgSetSrcExt(icon, iconSrc);
|
|
#endif
|
|
lv_img_set_zoom(icon, 128); // 128: zoom
|
|
lv_obj_align(icon, LV_ALIGN_LEFT_MID, 0, 0);
|
|
}
|
|
lv_obj_add_style(icon, &g_labelStyle, LV_STATE_DEFAULT);
|
|
|
|
lv_obj_t* label = lv_label_create(page);
|
|
lv_label_set_text(label, name);
|
|
lv_obj_add_style(label, &g_labelStyle, LV_STATE_DEFAULT);
|
|
return page;
|
|
}
|
|
|
|
void SetBtnClickable(bool isClickable)
|
|
{
|
|
if (isClickable) {
|
|
lv_obj_add_flag(g_btn, LV_OBJ_FLAG_CLICKABLE);
|
|
} else {
|
|
lv_obj_clear_flag(g_btn, LV_OBJ_FLAG_CLICKABLE);
|
|
}
|
|
}
|
|
|
|
static void EventCb(lv_event_t* e)
|
|
{
|
|
lv_event_code_t code = lv_event_get_code(e);
|
|
lv_obj_t* appList = (lv_obj_t*)lv_event_get_user_data(e);
|
|
if (code == LV_EVENT_CLICKED) {
|
|
lv_obj_add_flag(appList, LV_OBJ_FLAG_HIDDEN);
|
|
SetBtnClickable(false);
|
|
}
|
|
}
|
|
|
|
lv_obj_t* LvglPageMenuStart(lv_obj_t* parent)
|
|
{
|
|
lv_font_t* font22 = GetLvFont(22); // 22: size
|
|
lv_obj_t* menu = lv_menu_create(parent);
|
|
lv_obj_set_size(menu, LV_HOR_RES, LV_VER_RES);
|
|
lv_obj_clear_flag(menu, LV_OBJ_FLAG_CLICKABLE);
|
|
lv_obj_center(menu);
|
|
|
|
static lv_style_t mainMenu;
|
|
lv_style_init(&mainMenu);
|
|
lv_style_set_bg_opa(&mainMenu, LV_OPA_COVER);
|
|
lv_style_set_bg_color(&mainMenu, lv_color_black());
|
|
lv_obj_add_style(menu, &mainMenu, LV_STATE_DEFAULT);
|
|
lv_style_set_border_opa(&mainMenu, LV_OPA_0);
|
|
lv_style_set_border_width(&mainMenu, 0);
|
|
|
|
lv_style_init(&g_labelStyle);
|
|
lv_style_set_text_color(&g_labelStyle, lv_color_white());
|
|
lv_style_set_text_font(&g_labelStyle, font22);
|
|
lv_style_set_text_opa(&g_labelStyle, LV_OPA_COVER);
|
|
lv_style_set_bg_opa(&g_labelStyle, LV_OPA_0);
|
|
|
|
/* Create a main page */
|
|
lv_obj_t* mainPage = lv_menu_page_create(menu, NULL);
|
|
lv_obj_clear_flag(menu, LV_OBJ_FLAG_SCROLL_CHAIN);
|
|
|
|
AddPage(mainPage, "Alarm", "/user/res/APPLIST_ALARM.bin");
|
|
AddPage(mainPage, "Phone", "/user/res/APPLIST_CALLER_IMAGE.bin");
|
|
AddPage(mainPage, "Compass", "/user/res/APPLIST_COMPASS_IMAGE.bin");
|
|
AddPage(mainPage, "Setting", "/user/res/APPLIST_SETTING.bin");
|
|
AddPage(mainPage, "Blue Tooth", "/user/res/BLUETOOTH_TITLE.bin");
|
|
|
|
lv_menu_set_page(menu, mainPage);
|
|
|
|
g_btn = lv_obj_create(parent);
|
|
lv_obj_clear_flag(g_btn, LV_OBJ_FLAG_SCROLLABLE);
|
|
lv_obj_set_size(g_btn, LV_PCT(20), LV_PCT(20)); // 20: PCT
|
|
lv_obj_align(g_btn, LV_ALIGN_CENTER, 0, 0);
|
|
lv_obj_add_event_cb(g_btn, EventCb, LV_EVENT_ALL, menu);
|
|
lv_obj_set_style_bg_opa(g_btn, LV_OPA_0, 0);
|
|
lv_obj_set_style_border_opa(g_btn, LV_OPA_0, 0);
|
|
|
|
return menu;
|
|
}
|
|
#endif |