From: CCC <2393524978@qq.com> Date: Mon, 3 Apr 2023 06:38:28 +0000 (+0800) Subject: 240X320 size modify X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=5c3b1a5cf4b2d57117410d1a1ade37ee39cbda96;p=mirrors%2FASR3603_Z5.git 240X320 size modify --- diff --git a/2.sdk/gui/lv_watch/CMakeLists.txt b/2.sdk/gui/lv_watch/CMakeLists.txt index 2dca58cd..c96b077a 100644 --- a/2.sdk/gui/lv_watch/CMakeLists.txt +++ b/2.sdk/gui/lv_watch/CMakeLists.txt @@ -194,6 +194,14 @@ set(lv_watch_sources #sms lv_apps/sms_msg/sms_msg.c lv_apps/upgrade/upgrade_rs.c +#wechat + lv_apps/wechat/wechat_ui.c +#primary menu data + lv_apps/primary_menu/primary_menu_data.c +#health_measure + lv_apps/health_measure/health_heart_rate.c + lv_apps/health_measure/health_spo2.c + lv_apps/health_measure/health_temperature.c ) set(lv_watch_font_sources @@ -423,7 +431,7 @@ set(lv_watch_raw_alpha_resources png/primary_function/icon_heart_rate.png png/primary_function/icon_calendar.png png/primary_function/icon_wechat.png - png/primary_function/icon_telephone.png +# png/primary_function/icon_telephone.png png/primary_function/icon_blood_pressure.png png/primary_function/icon_videocall.png png/primary_function/icon_aiknowledge.png diff --git a/2.sdk/gui/lv_watch/framework/language/lang_ch.c b/2.sdk/gui/lv_watch/framework/language/lang_ch.c index 2420979e..728e1da3 100644 --- a/2.sdk/gui/lv_watch/framework/language/lang_ch.c +++ b/2.sdk/gui/lv_watch/framework/language/lang_ch.c @@ -833,6 +833,21 @@ const void * lang_text_ch[] = { /*alipay*/ "已在手机端解绑 请重新绑定", + + //CHENG_MODIFY + "正在测量", + "测量完成", + "测量失败", + "未正确佩戴", + "请保持佩戴", + "当前体温", + "当前腕温", + "血氧", + "体温", + + //CHENG_MODIFY + + }; /** diff --git a/2.sdk/gui/lv_watch/framework/language/lang_en.c b/2.sdk/gui/lv_watch/framework/language/lang_en.c index 5e6075c7..b6377e00 100644 --- a/2.sdk/gui/lv_watch/framework/language/lang_en.c +++ b/2.sdk/gui/lv_watch/framework/language/lang_en.c @@ -833,6 +833,20 @@ const void * lang_text_en[] = { /*alipay*/ "Unbind on the mobile phone, please rebind", + + //CHENG_MODIFY + "Measuring", + "Measure done", + "Measure fail", + "Not wearing correctly", + "Please keep wearing", + "Body temperature", + "Wrist temperature", + "SPO2", + "Temperature", + //CHENG_MODIFY + + }; diff --git a/2.sdk/gui/lv_watch/framework/nvm/ui_nvm.h b/2.sdk/gui/lv_watch/framework/nvm/ui_nvm.h index 91410505..20a4b8a8 100644 --- a/2.sdk/gui/lv_watch/framework/nvm/ui_nvm.h +++ b/2.sdk/gui/lv_watch/framework/nvm/ui_nvm.h @@ -34,6 +34,9 @@ extern "C" { #define NV_SECTION_UI_AGNSS_LEN (sizeof(nv_watch_agnss_t)) #define NV_SECTION_UI_SMSMSG_LEN (sizeof(nv_watch_sms_msg_t)) #define NV_SECTION_UI_GPS_AIDPOS_LEN (sizeof(nv_watch_gps_aidpos_t)) +//#if USE_LV_WATCH_WECHAT != 0 +#define NV_SECTION_UI_WEHAT_MSG_LEN (sizeof(nv_watch_wechat_msg_info_t)) +//#endif #define NV_SECTION_LEN(sectionid) (sectionid ## _LEN) /* definition of section start address */ @@ -111,6 +114,9 @@ typedef lv_fs_dir_t ui_dir_t; #define NV_SECTION_UI_AGNSS_FILE "ui_agnss.nv" #define NV_SECTION_UI_SMSMSG_FILE "ui_smsmsg.nv" #define NV_SECTION_UI_GPS_AIDPOS_FILE "ui_gps_aidpos.nv" +//#if USE_LV_WATCH_WECHAT != 0 +#define NV_SECTION_UI_WEHAT_MSG_FILE "ui_wechat_msg.nv" +//#endif #define NV_SECTION_FILE_PATH(sectionid) (sectionid ## _FILE) extern char *UI_NV_Get_Section_path(NV_UI_SECTION_ID SectionId); diff --git a/2.sdk/gui/lv_watch/framework/nvm/ui_nvm_api.c b/2.sdk/gui/lv_watch/framework/nvm/ui_nvm_api.c index 14557cf0..87f76c35 100644 --- a/2.sdk/gui/lv_watch/framework/nvm/ui_nvm_api.c +++ b/2.sdk/gui/lv_watch/framework/nvm/ui_nvm_api.c @@ -14,6 +14,8 @@ */ uint32_t UI_NV_Get_Section_Len(NV_UI_SECTION_ID SectionId) { + printf("[@CHENG_DEBUG][%s][%d]: SectionId=%d, MAX_NUM=%d\n", __FUNCTION__, __LINE__, SectionId, NV_SECTION_UI_MAX_NUM); + switch(SectionId) { case NV_SECTION_UI_SETTINGS: return(NV_SECTION_LEN(NV_SECTION_UI_SETTINGS)); @@ -69,6 +71,11 @@ uint32_t UI_NV_Get_Section_Len(NV_UI_SECTION_ID SectionId) case NV_SECTION_UI_GPS_AIDPOS: return(NV_SECTION_LEN(NV_SECTION_UI_GPS_AIDPOS)); + //#if USE_LV_WATCH_WECHAT != 0 + case NV_SECTION_UI_WEHAT_MSG: + return(NV_SECTION_LEN(NV_SECTION_UI_WEHAT_MSG)); + //#endif + default: printf("SectionId wrong\n"); return(0); @@ -137,6 +144,11 @@ char * UI_NV_Get_Section_path(NV_UI_SECTION_ID SectionId) case NV_SECTION_UI_GPS_AIDPOS: return(NV_SECTION_FILE_PATH(NV_SECTION_UI_GPS_AIDPOS)); + //#if USE_LV_WATCH_WECHAT != 0 + case NV_SECTION_UI_WEHAT_MSG: + return(NV_SECTION_FILE_PATH(NV_SECTION_UI_WEHAT_MSG)); + //#endif + default: printf("SectionId wrong\n"); return(NULL); @@ -172,6 +184,9 @@ uint8_t UI_NV_Reset_Default(NV_UI_SECTION_ID SectionId) nv_watch_agnss_t * agnss; nv_watch_sms_msg_t * smsmsg; nv_watch_gps_aidpos_t * gps_aidpos; +//#if USE_LV_WATCH_WECHAT != 0 + nv_watch_wechat_msg_info_t * wechat_msg; +//#endif switch(SectionId) { case NV_SECTION_UI_SETTINGS: @@ -321,6 +336,13 @@ uint8_t UI_NV_Reset_Default(NV_UI_SECTION_ID SectionId) memset(gps_aidpos, 0, SectionLen); TempData = (char *)gps_aidpos; break; + //#if USE_LV_WATCH_WECHAT != 0 + case NV_SECTION_UI_WEHAT_MSG: + wechat_msg = lv_mem_alloc(SectionLen); + memset(wechat_msg, 0, SectionLen); + TempData = (char *)wechat_msg; + break; + //#endif default: TempData = NULL; break; diff --git a/2.sdk/gui/lv_watch/include/ui_activity_id.h b/2.sdk/gui/lv_watch/include/ui_activity_id.h index ef4d87dc..bd1ebb4f 100644 --- a/2.sdk/gui/lv_watch/include/ui_activity_id.h +++ b/2.sdk/gui/lv_watch/include/ui_activity_id.h @@ -170,6 +170,23 @@ enum ACT_ID_SETTING_UPAY_MENU, /*246: alipay menu*/ #endif +#ifdef __MMI_WECHAT_SUPPORT__ + ACT_ID_WECHAT_MAIN, + ACT_ID_WECHAT_RECORDING, + ACT_ID_WECHAT_SENDING, + //ACT_ID_WECHAT_EXPRESSION, + //ACT_ID_WECHAT_IMAGE, +#endif +#ifdef __MMI_HEALTH_MEASURE_HEART_SUPPORT__ + ACT_ID_HEALTH_MEASURE_HEART, +#endif +#ifdef __MMI_HEALTH_MEASURE_SPO2_SUPPORT__ + ACT_ID_HEALTH_MEASURE_SPO2, +#endif +#ifdef __MMI_HEALTH_MEASURE_TEMPERATURE_SUPPORT__ + ACT_ID_HEALTH_MEASURE_TEMPERATURE, +#endif + ACT_ID_MAX, }; typedef uint8_t lv_watch_Activity_Id_t; diff --git a/2.sdk/gui/lv_watch/include/ui_nvm_interface.h b/2.sdk/gui/lv_watch/include/ui_nvm_interface.h index b49d8fc7..1303e62b 100644 --- a/2.sdk/gui/lv_watch/include/ui_nvm_interface.h +++ b/2.sdk/gui/lv_watch/include/ui_nvm_interface.h @@ -142,6 +142,38 @@ typedef struct *default 0*/ } __packed nv_watch_voice_msg_t; +//#if USE_LV_WATCH_WECHAT != 0 + +#define NV_WATCH_WECHAT_NUM_MAX (20) +#define NV_WATCH_WECHAT_DATA_FILE_NAME_MAX (LV_FS_MAX_PATH_LENGTH / 2) + +typedef enum +{ + WECHAT_MSG_TYPE_VOICE, + WECHAT_MSG_TYPE_TEXT, + WECHAT_MSG_TYPE_EXPRESSION, + WECHAT_MSG_TYPE_IMAGE, + WECHAT_MSG_TYPE_MAX, +}__packed nv_wechat_msg_type_e; + +typedef struct +{ + //uint8_t msg_index; + uint8_t msg_from; // 0-slef; 1-other + uint8_t unread_flag; // 0-read; 1-unread + hal_rtc_t msg_time; + nv_wechat_msg_type_e msg_type; + uint32_t msg_data_size; + char msg_data_full_file_name[NV_WATCH_WECHAT_DATA_FILE_NAME_MAX]; +} __packed nv_watch_wechat_msg_item_info_t; + +typedef struct +{ + uint8_t msg_count; + nv_watch_wechat_msg_item_info_t msg_item[NV_WATCH_WECHAT_NUM_MAX]; +} __packed nv_watch_wechat_msg_info_t; +//#endif + typedef struct { uint8_t autoanswerflg; // 1: auto answer enable, 0: auto answer disable @@ -317,6 +349,9 @@ enum NV_SECTION_UI_AGNSS, // nv_watch_agnss_t NV_SECTION_UI_SMSMSG, // nv_watch_sms_msg_t NV_SECTION_UI_GPS_AIDPOS, // nv_watch_gps_aidpos_t +//#if USE_LV_WATCH_WECHAT != 0 + NV_SECTION_UI_WEHAT_MSG, // nv_watch_wechat_msg_info_t +//#endif NV_SECTION_UI_MAX_NUM }; typedef uint8_t NV_UI_SECTION_ID; diff --git a/2.sdk/gui/lv_watch/include/ui_textid.h b/2.sdk/gui/lv_watch/include/ui_textid.h index 2242fbfe..7158fd1a 100644 --- a/2.sdk/gui/lv_watch/include/ui_textid.h +++ b/2.sdk/gui/lv_watch/include/ui_textid.h @@ -841,6 +841,19 @@ enum /*alipay*/ WATCH_TEXT_ID_ALIPAY_UNBIND_TIPS, /* "已在手机端解绑 请重新绑定" "Unbind on the mobile phone, please rebind" */ + //CHENG_MODIFY + WATCH_TEXT_ID_MEASURING, /*"正在测量" "Measuring"*/ + WATCH_TEXT_ID_MEASURE_DONE, /*"测量完成" "Measure done"*/ + WATCH_TEXT_ID_MEASURE_FAIL, /*"测量失败" "Measure fail"*/ + WATCH_TEXT_ID_NOT_WEAR, /*"未正确佩戴" "Not wearing correctly"*/ + WATCH_TEXT_ID_KEEP_WEAR, /*"请保持佩戴" "Please keep wearing"*/ + WATCH_TEXT_ID_CURRENT_BODY_TEMPERATURE, // 当前体温 + WATCH_TEXT_ID_CURRENT_WRIST_TEMPERATURE, // 当前腕温 + WATCH_TEXT_ID_SPO2, /* "血氧" "SPO2" */ + WATCH_TEXT_ID_TEMPERATURE, /* "体温" "Temperature" */ + + //CHENG_MODIFY + WATCH_TEXT_ID_MAX }; typedef uint16_t watchLangTxtId_t; diff --git a/2.sdk/gui/lv_watch/lv_apps/alarm/alarm_set.c b/2.sdk/gui/lv_watch/lv_apps/alarm/alarm_set.c index cb7e3dfe..d47f70d6 100644 --- a/2.sdk/gui/lv_watch/lv_apps/alarm/alarm_set.c +++ b/2.sdk/gui/lv_watch/lv_apps/alarm/alarm_set.c @@ -268,7 +268,11 @@ static lv_obj_t * alarm_list_add(lv_obj_t * list, app_adaptor_alarm_t * alarm, u /*Make the size adjustment*/ lv_coord_t w = lv_obj_get_width(list); uint8_t pad_w = w - lv_obj_get_style_pad_left(list, LV_LIST_PART_SCROLLABLE); +#if USE_LV_WATCH_UI_240_320 + lv_obj_set_size(btn, pad_w, LV_VER_RES / 8 + LV_VER_RES / 8); +#else lv_obj_set_size(btn, pad_w, 56); +#endif lv_obj_t * cont = lv_cont_create(btn, NULL); lv_obj_set_width(cont, pad_w); diff --git a/2.sdk/gui/lv_watch/lv_apps/album/album.c b/2.sdk/gui/lv_watch/lv_apps/album/album.c index afff8102..3e82ac70 100644 --- a/2.sdk/gui/lv_watch/lv_apps/album/album.c +++ b/2.sdk/gui/lv_watch/lv_apps/album/album.c @@ -738,12 +738,15 @@ static lv_obj_t * album_photo_bg_create(lv_obj_t * par) lv_album_obj_ext_t * ext = album_get_ext(); if(ext->photo_cnt == 0) { bg = lv_img_create(par, NULL); - lv_img_set_src(bg, ICON_ALBUM_NO_PHOTO); + //lv_img_set_src(bg, ICON_ALBUM_NO_PHOTO); + lv_img_set_src(bg, ICON_COMMON_BG_WHITE); lv_obj_t * label_nophoto = lv_label_create(bg, NULL); lv_label_set_text_id(label_nophoto, WATCH_TEXT_ID_NOPHOTO); - lv_obj_align(label_nophoto, NULL, LV_ALIGN_IN_BOTTOM_MID, 10, -20); - lv_obj_add_style(label_nophoto, LV_LABEL_PART_MAIN, &lv_watch_font20_black); + //lv_obj_align(label_nophoto, NULL, LV_ALIGN_IN_BOTTOM_MID, 10, -20); + //lv_obj_add_style(label_nophoto, LV_LABEL_PART_MAIN, &lv_watch_font20_black); + lv_obj_add_style(label_nophoto, LV_LABEL_PART_MAIN, &lv_watch_font30_black); + lv_obj_align(label_nophoto, NULL, LV_ALIGN_CENTER, 0, 0); lv_obj_set_click(label_nophoto, false); } else { @@ -788,6 +791,9 @@ static lv_obj_t * album_photo_bg_create(lv_obj_t * par) uint8_t inner_pad = (LV_HOR_RES - lv_obj_get_width(img_back) - lv_obj_get_width(img_setting) - lv_obj_get_width(label_ph)) / 2; lv_obj_set_style_local_pad_inner(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, inner_pad); + printf("[@CHENG_DEBUG][%s][%d]: w=%d, h=%d, x=%d, y=%d\n", __FUNCTION__, __LINE__, + lv_obj_get_width(cont), lv_obj_get_height(cont), lv_obj_get_x(cont), lv_obj_get_y(cont)); + return bg; } @@ -797,7 +803,8 @@ static void album_photo_item_create(lv_obj_t * par) uint8_t line = ext->photo_cnt % 3 == 0 ? ext->photo_cnt / 3 : ext->photo_cnt / 3 + 1; ext->img_page = lv_page_create(par, NULL); - lv_obj_set_size(ext->img_page, LV_HOR_RES, 200); + //lv_obj_set_size(ext->img_page, LV_HOR_RES, 200); + lv_obj_set_size(ext->img_page, LV_HOR_RES, LV_VER_RES - 55); //image back height lv_obj_align(ext->img_page, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0); lv_obj_add_style(ext->img_page, LV_PAGE_PART_BG, &lv_watch_style_transp); lv_obj_add_style(ext->img_page, LV_PAGE_PART_SCROLLABLE, &lv_watch_style_transp); @@ -895,17 +902,25 @@ static void album_view_photo_tabview_create(uint32_t img_index) while(node) { i = node->index; lv_img_cache_invalidate_src(node->preview_src); - node->preview_src->header.w = 240; - node->preview_src->header.h = 240; + //node->preview_src->header.w = 240; + //node->preview_src->header.h = 240; + node->preview_src->header.w = LV_HOR_RES; + node->preview_src->header.h = LV_VER_RES; tab = lv_watch_tabview_add_tab(tabview); - lv_obj_set_height(lv_page_get_scrl(tab), 240); + //lv_obj_set_height(lv_page_get_scrl(tab), 240); + lv_obj_set_height(lv_page_get_scrl(tab), LV_VER_RES); img_view = lv_img_create(tab, NULL); - lv_img_set_zoom(img_view, 240/node->preview_src->header.w * 256); + //lv_img_set_zoom(img_view, 240/node->preview_src->header.w * 256); + lv_obj_set_size(img_view, LV_HOR_RES, LV_VER_RES); lv_img_set_src(img_view, node->preview_src); lv_watch_set_free_num(img_view, i); lv_obj_set_adv_hittest(img_view, false); lv_obj_set_pos(lv_page_get_scrl(tab), 0, 0); album_view_photo_opt_create(img_view); + + printf("[@CHENG_DEBUG][%s][%d]: w=%d, h=%d, x=%d, y=%d\n", __FUNCTION__, __LINE__, + lv_obj_get_width(img_view), lv_obj_get_height(img_view), lv_obj_get_x(img_view), lv_obj_get_y(img_view)); + if(album_ext->time_order) node = (album_photo_info_t *)_lv_ll_get_next(photo_ll, node); else @@ -949,6 +964,10 @@ static void album_view_photo_opt_create(lv_obj_t * img_view) lv_obj_set_click(img_del, true); lv_obj_set_adv_hittest(img_del, false); lv_obj_set_event_cb(img_del, album_opt_delete_event_cb); + +#ifdef __MMI_ZHSX_SUPPORT__ + lv_obj_set_hidden(img_share, true); +#endif } static lv_obj_t * album_setting_create(lv_obj_t * activity_obj) @@ -1186,7 +1205,8 @@ static void album_setting_delete_create(lv_obj_t * par, uint8_t del_one) lv_obj_add_style(label_q, LV_LABEL_PART_MAIN, &lv_watch_font30_black); else lv_obj_add_style(label_q, LV_LABEL_PART_MAIN, &lv_watch_font20_black); - lv_obj_align(label_q, img_to_del, LV_ALIGN_OUT_BOTTOM_MID, 0, 15); + //lv_obj_align(label_q, img_to_del, LV_ALIGN_OUT_BOTTOM_MID, 0, 15); + lv_obj_align(label_q, img_to_del, LV_ALIGN_OUT_BOTTOM_MID, 0, 25); lv_obj_t * btn_cancel = lv_btn_create(bg, NULL); lv_obj_set_size(btn_cancel, 100, 56); @@ -1194,7 +1214,8 @@ static void album_setting_delete_create(lv_obj_t * par, uint8_t del_one) lv_obj_set_style_local_radius(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 30); lv_obj_set_style_local_bg_color(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_PRESSED, LV_COLOR_MAKE(0x47, 0xA6, 0xFF)); lv_obj_set_style_local_radius(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_PRESSED, 30); - lv_obj_align(btn_cancel, NULL, LV_ALIGN_IN_BOTTOM_LEFT, 10, -10); + //lv_obj_align(btn_cancel, NULL, LV_ALIGN_IN_BOTTOM_LEFT, 10, -10); + lv_obj_align(btn_cancel, NULL, LV_ALIGN_IN_BOTTOM_LEFT, 10, -10 - 10); lv_obj_set_event_cb(btn_cancel, album_cancel_btn_event_cb); lv_watch_set_free_num(btn_cancel, num); lv_obj_t * label_cancel = lv_label_create(btn_cancel, NULL); @@ -1206,7 +1227,8 @@ static void album_setting_delete_create(lv_obj_t * par, uint8_t del_one) lv_obj_set_style_local_radius(btn_ok, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 30); lv_obj_set_style_local_bg_color(btn_ok, LV_BTN_PART_MAIN, LV_STATE_PRESSED, LV_COLOR_MAKE(0xFF, 0x6F, 0x91)); lv_obj_set_style_local_radius(btn_ok, LV_BTN_PART_MAIN, LV_STATE_PRESSED, 30); - lv_obj_align(btn_ok, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, -10, -10); + //lv_obj_align(btn_ok, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, -10, -10); + lv_obj_align(btn_ok, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, -10, -10 - 10); lv_watch_set_free_num(btn_ok, num); lv_obj_set_event_cb(btn_ok, album_ok_btn_event_cb); lv_obj_t * label_ok = lv_label_create(btn_ok, label_cancel); @@ -1248,7 +1270,8 @@ static void album_delete_success_create() lv_obj_t * img_suc = lv_img_create(cont_bg, NULL); lv_img_set_src(img_suc, ICON_OK); - lv_obj_align(img_suc, NULL, LV_ALIGN_IN_TOP_MID, 0, 30); + //lv_obj_align(img_suc, NULL, LV_ALIGN_IN_TOP_MID, 0, 30); + lv_obj_align(img_suc, NULL, LV_ALIGN_IN_TOP_MID, 0, LV_VER_RES / 4); lv_obj_t * label = lv_label_create(cont_bg, NULL); lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font30); @@ -1391,8 +1414,10 @@ static void album_cancel_btn_event_cb(lv_obj_t * btn, lv_event_t e) if(node->index == img_num) { lv_img_cache_invalidate_src(node->preview_src); if(btn_num == 1) { - node->preview_src->header.w = 240; - node->preview_src->header.h = 240; + //node->preview_src->header.w = 240; + //node->preview_src->header.h = 240; + node->preview_src->header.w = LV_HOR_RES; + node->preview_src->header.h = LV_VER_RES; node->selected = 0; } else { node->preview_src->header.w = 72; @@ -1416,6 +1441,8 @@ static void album_cancel_btn_event_cb(lv_obj_t * btn, lv_event_t e) static void album_back_event_cb(lv_obj_t * obj, lv_event_t e) { + printf("[@CHENG_DEBUG][%s][%d]: event=%d\n", __FUNCTION__, __LINE__, (e - LV_EVENT_PRESSED)); + if(LV_EVENT_CLICKED == e) { uint8_t num = lv_obj_get_user_data(obj).user_num; if(num == ALBUM_BACK_ORDER_SET) { @@ -1594,6 +1621,8 @@ static void album_share_event_cb(lv_obj_t * obj, lv_event_t e) static void album_opt_delete_event_cb(lv_obj_t * obj, lv_event_t e) { + printf("[@CHENG_DEBUG][%s][%d]: event=%d\n", __FUNCTION__, __LINE__, (e - LV_EVENT_PRESSED)); + if(LV_EVENT_CLICKED == e) { lv_album_obj_ext_t * ext = album_get_ext(); if(ext->preview_mode == 1) { diff --git a/2.sdk/gui/lv_watch/lv_apps/audio_player/audio_player.c b/2.sdk/gui/lv_watch/lv_apps/audio_player/audio_player.c index b890c1a0..08615218 100644 --- a/2.sdk/gui/lv_watch/lv_apps/audio_player/audio_player.c +++ b/2.sdk/gui/lv_watch/lv_apps/audio_player/audio_player.c @@ -250,7 +250,8 @@ static void audio_player_create_content(lv_obj_t * content) lv_obj_set_event_cb(img_ext->img_btn_next, audio_player_img_prev_signal); else lv_obj_set_event_cb(img_ext->img_btn_next, audio_player_img_next_signal); - lv_obj_align(img_ext->img_btn_next, img_ext->img_btn_start_pause, LV_ALIGN_OUT_RIGHT_MID, 0, 0); + //lv_obj_align(img_ext->img_btn_next, img_ext->img_btn_start_pause, LV_ALIGN_OUT_RIGHT_MID, 0, 0); + lv_obj_align(img_ext->img_btn_next, img_ext->img_btn_start_pause, LV_ALIGN_OUT_RIGHT_MID, 10, 0); lv_watch_obj_add_element(img_ext->img_btn_next); img_ext->img_btn_prev = lv_img_create(content, img_ext->img_btn_start_pause); @@ -261,7 +262,8 @@ static void audio_player_create_content(lv_obj_t * content) lv_obj_set_event_cb(img_ext->img_btn_prev, audio_player_img_next_signal); else lv_obj_set_event_cb(img_ext->img_btn_prev, audio_player_img_prev_signal); - lv_obj_align(img_ext->img_btn_prev, img_ext->img_btn_start_pause, LV_ALIGN_OUT_LEFT_MID, 0, 0); + //lv_obj_align(img_ext->img_btn_prev, img_ext->img_btn_start_pause, LV_ALIGN_OUT_LEFT_MID, 0, 0); + lv_obj_align(img_ext->img_btn_prev, img_ext->img_btn_start_pause, LV_ALIGN_OUT_LEFT_MID, -10, 0); lv_watch_obj_add_element(img_ext->img_btn_prev); btn = lv_btn_create(content, NULL); @@ -404,7 +406,8 @@ lv_obj_t * audio_player_create(lv_obj_t * activity_obj) lv_cont_set_layout(content, LV_LAYOUT_OFF); lv_obj_t * img = lv_img_create(content, NULL); - lv_img_set_src(img, ICON_AUDIO_PLAYER_BACKGROUND); + //lv_img_set_src(img, ICON_AUDIO_PLAYER_BACKGROUND); + lv_img_set_src(img, ICON_COMMON_BG_BLACK); lv_obj_set_size(img, LV_HOR_RES, LV_VER_RES); lv_obj_set_click(content, false); lv_obj_set_click(img, false); diff --git a/2.sdk/gui/lv_watch/lv_apps/dial/dial_element.c b/2.sdk/gui/lv_watch/lv_apps/dial/dial_element.c index adb0651c..dcb1ae57 100644 --- a/2.sdk/gui/lv_watch/lv_apps/dial/dial_element.c +++ b/2.sdk/gui/lv_watch/lv_apps/dial/dial_element.c @@ -464,7 +464,10 @@ static bool dial_is_unchangeable_img(watch_img_type_t type) type == IMG_TYPE_HEART_RATE || type == IMG_TYPE_WEATHER_UV || type == IMG_TYPE_WEATHER_AQI || - type == IMG_TYPE_BLOOD_OXYGEN) + type == IMG_TYPE_BLOOD_OXYGEN + || IMG_TYPE_USER_PNG == type + || IMG_TYPE_HEART_RATE_IMAGE == type + ) return true; else return false; @@ -597,7 +600,8 @@ static void dial_update_canvas_label(watch_element_base_t * base) dial_create_canvas_text(infotxt, label_dsc->label_font, label_dsc->text_color, pos.x + label_dsc->text_pos.x, pos.y + label_dsc->text_pos.y); break; case LABEL_TYPE_STEP: - snprintf(infotxt, len, "%.5d", record.step); + //snprintf(infotxt, len, "%.5d", record.step); + snprintf(infotxt, len, "%-5d", record.step); dial_create_canvas_text(infotxt, label_dsc->label_font, label_dsc->text_color, pos.x + label_dsc->text_pos.x, pos.y + label_dsc->text_pos.y); break; case LABEL_TYPE_BATTERY: @@ -609,7 +613,8 @@ static void dial_update_canvas_label(watch_element_base_t * base) dial_create_canvas_text(infotxt, label_dsc->label_font, label_dsc->text_color, pos.x + label_dsc->text_pos.x, pos.y + label_dsc->text_pos.y); break; case LABEL_TYPE_HEART_RATE: - snprintf(infotxt, len, "%.3d", health.heartrate); + //snprintf(infotxt, len, "%.3d", health.heartrate); + snprintf(infotxt, len, "%-3d", health.heartrate); dial_create_canvas_text(infotxt, label_dsc->label_font, label_dsc->text_color, pos.x + label_dsc->text_pos.x, pos.y + label_dsc->text_pos.y); break; case LABEL_TYPE_DISTANCE: @@ -621,7 +626,8 @@ static void dial_update_canvas_label(watch_element_base_t * base) dial_create_canvas_text(infotxt, label_dsc->label_font, label_dsc->text_color, pos.x + label_dsc->text_pos.x, pos.y + label_dsc->text_pos.y); break; case LABEL_TYPE_PRESSURE: - snprintf(infotxt, len, "%.3d", health.pressure); + //snprintf(infotxt, len, "%.3d", health.pressure); + snprintf(infotxt, len, "%-3d", health.pressure); dial_create_canvas_text(infotxt, label_dsc->label_font, label_dsc->text_color, pos.x + label_dsc->text_pos.x, pos.y + label_dsc->text_pos.y); break; case LABEL_TYPE_SLEEP_QUALITY: diff --git a/2.sdk/gui/lv_watch/lv_apps/health_measure/health_heart_rate.c b/2.sdk/gui/lv_watch/lv_apps/health_measure/health_heart_rate.c new file mode 100644 index 00000000..1b4816d6 --- /dev/null +++ b/2.sdk/gui/lv_watch/lv_apps/health_measure/health_heart_rate.c @@ -0,0 +1,330 @@ + + + +/********************* + * INCLUDES + *********************/ +#include "lv_watch.h" + +#ifdef __MMI_HEALTH_MEASURE_HEART_SUPPORT__ + +#include + + + +void heart_rate_sensor_open(void) +{ + +} + +void heart_rate_sensor_close(void) +{ + +} + +uint16 heart_rate_sensor_value_get(void) +{ + srand(Hal_Timer_Get_Counter()); + uint16 value = 50 + rand() % 150; + + return value; +} + +BOOL heart_rate_sensor_wear_state_get(void) +{ + BOOL is_wear = TRUE; + + return is_wear; +} + +lv_heart_rate_obj_ext_t * heart_rate_get_ext(void) +{ + lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_HEALTH_MEASURE_HEART); + if(NULL == activity_obj) + { + return NULL; + } + + lv_obj_t * watch_obj; + lv_watch_get_child_obj(activity_obj, lv_watch_obj_signal, &watch_obj); + if(NULL != watch_obj) + { + lv_heart_rate_obj_ext_t * ext = lv_obj_get_ext_attr(watch_obj); + return ext; + } + return NULL; +} + +void heart_rate_display_update(void) +{ + lv_heart_rate_obj_ext_t * ext = heart_rate_get_ext(); + if(NULL == ext) + { + return; + } + + switch(ext->measure_state) + { + case STATE_HEART_RATE_MEASURING: + lv_obj_set_hidden(ext->img, TRUE); + + lv_label_set_text_id(ext->label_info, WATCH_TEXT_ID_MEASURING); + lv_obj_align(ext->label_info, ext->cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_INFO_Y); + + lv_label_set_text(ext->label_value, ext->heart_rate); + lv_obj_align(ext->label_value, ext->cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_VALUE_Y); + lv_obj_set_hidden(ext->label_value, ((strlen(ext->heart_rate)) ? FALSE : TRUE)); + break; + + case STATE_HEART_RATE_MEASURE_FAIL: + lv_img_set_src(ext->img, ICON_HEART_RATE_MEASURE_FAIL); + lv_obj_set_hidden(ext->img, FALSE); + + lv_label_set_text_id(ext->label_info, WATCH_TEXT_ID_MEASURE_FAIL); + lv_obj_align(ext->label_info, ext->cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_INFO_Y); + + lv_obj_remove_style(ext->label_value, LV_LABEL_PART_MAIN, &lv_watch_font40); + lv_obj_add_style(ext->label_value, LV_LABEL_PART_MAIN, &lv_watch_font30); + lv_label_set_text_id(ext->label_value, WATCH_TEXT_ID_NOT_WEAR); + lv_obj_align(ext->label_value, ext->cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_VALUE_Y); + lv_obj_set_hidden(ext->label_value, FALSE); + break; + + case STATE_HEART_RATE_MEASURE_DONE: + lv_img_set_src(ext->img, ICON_HEART_RATE_MEASURE_DONE); + lv_obj_set_hidden(ext->img, FALSE); + + lv_label_set_text_id(ext->label_info, WATCH_TEXT_ID_MEASURE_DONE); + lv_obj_align(ext->label_info, ext->cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_INFO_Y); + + lv_label_set_text(ext->label_value, ext->heart_rate); + lv_obj_align(ext->label_value, ext->cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_VALUE_Y); + lv_obj_set_hidden(ext->label_value, FALSE); + break; + + default: + break; + } +} + +static void heart_rate_measure_cycle_timeout(void * para) +{ + (void) para; + + lv_heart_rate_obj_ext_t * ext = heart_rate_get_ext(); + if(NULL != ext) + { + if(FALSE == heart_rate_sensor_wear_state_get()) + { + if(NULL != ext->cycle_timer_id) + { + Hal_Timer_Stop(ext->cycle_timer_id); + ext->cycle_timer_id = NULL; + } + if(NULL != ext->total_timer_id) + { + Hal_Timer_Stop(ext->total_timer_id); + ext->total_timer_id = NULL; + } + if(NULL != ext->gif_info) + { + gif_close(ext->gif_info); + ext->gif_info = NULL; + } + lv_obj_del(ext->gif_cont); + ext->measure_state = STATE_HEART_RATE_MEASURE_FAIL; + watch_set_suspend_enable(true, ACT_ID_HEALTH_MEASURE_HEART, 0); + } + else + { + uint16 value = heart_rate_sensor_value_get(); + if(value) + { + sprintf(ext->heart_rate, "%d bpm", value); + } + //else + //{ + // sprintf(ext->heart_rate, "-- bpm"); + //} + ext->measure_state = STATE_HEART_RATE_MEASURING; + } + } + + heart_rate_display_update(); +} + +static void heart_rate_measure_timeout(void * para) +{ + (void) para; + + //sensor + heart_rate_sensor_close(); + + lv_heart_rate_obj_ext_t * ext = heart_rate_get_ext(); + if(NULL != ext) + { + if(NULL != ext->cycle_timer_id) + { + Hal_Timer_Stop(ext->cycle_timer_id); + ext->cycle_timer_id = NULL; + } + if(NULL != ext->total_timer_id) + { + Hal_Timer_Stop(ext->total_timer_id); + ext->total_timer_id = NULL; + } + if(NULL != ext->gif_info) + { + gif_close(ext->gif_info); + ext->gif_info = NULL; + } + lv_obj_del(ext->gif_cont); + ext->measure_state = STATE_HEART_RATE_MEASURE_DONE; + watch_set_suspend_enable(true, ACT_ID_HEALTH_MEASURE_HEART, 0); + } + + heart_rate_display_update(); +} + +static void heart_rate_prepare_destory(lv_obj_t * activity_obj) +{ + HEART_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + watch_set_suspend_enable(true, ACT_ID_HEALTH_MEASURE_HEART, 0); + lv_watch_png_cache_all_free(); + + //lv_obj_t * watch_obj = NULL; + //lv_watch_get_child_obj(act, lv_watch_obj_signal, &watch_obj); + //lv_obj_t * cont = lv_obj_get_child(watch_obj, NULL); + + lv_heart_rate_obj_ext_t * ext = heart_rate_get_ext(); + if(NULL != ext) + { + if(NULL != ext->cycle_timer_id) + { + Hal_Timer_Stop(ext->cycle_timer_id); + ext->cycle_timer_id = NULL; + } + if(NULL != ext->total_timer_id) + { + Hal_Timer_Stop(ext->total_timer_id); + ext->total_timer_id = NULL; + } + if(NULL != ext->gif_info) + { + gif_close(ext->gif_info); + ext->gif_info = NULL; + } + + HEART_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + } +} + +lv_obj_t * health_heart_rate_create(lv_obj_t * activity_obj) +{ + if(NULL == activity_obj) + { + lv_watch_activity_ext_t activity_ext = {0}; + + activity_ext.actId = ACT_ID_HEALTH_MEASURE_HEART; + activity_ext.create = heart_rate_create; + activity_ext.prepare_destory = heart_rate_prepare_destory; + + activity_obj = lv_watch_creat_activity_obj(&activity_ext); + LV_ASSERT_MEM(activity_obj); + if(NULL == activity_obj) + return NULL; + } + + lv_obj_t * watch_obj = lv_watch_obj_create(activity_obj); + if(NULL == watch_obj) + return NULL; + + lv_heart_rate_obj_ext_t * ext = lv_obj_allocate_ext_attr(watch_obj, sizeof(lv_heart_rate_obj_ext_t)); + if(NULL == ext) + return NULL; + + _lv_memset_00(ext->heart_rate, sizeof(ext->heart_rate)); + + lv_obj_t * cont = lv_cont_create(watch_obj, NULL); + lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES); + lv_obj_align(cont, watch_obj, LV_ALIGN_IN_BOTTOM_MID, 0, 0); + lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_obj_set_style_local_bg_opa(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP); + lv_obj_set_style_local_pad_left(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 0); + lv_obj_set_style_local_pad_right(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 0); + //lv_cont_set_layout(cont, LV_LAYOUT_ROW_MID); + lv_obj_set_click(cont, false); + //lv_obj_set_base_dir(cont, LV_BIDI_DIR_LTR); + lv_watch_obj_add_element(cont); + ext->cont = cont; + + lv_obj_t * img = lv_img_create(cont, NULL); + lv_img_set_src(img, ICON_HEART_RATE_MEASURE_FAIL); + lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 40); + lv_obj_set_hidden(img, true); + ext->img = img; + + lv_obj_t * label_info = lv_label_create(cont, NULL); + //lv_obj_set_size(label_info, LV_HOR_RES, 30); + lv_obj_add_style(label_info, LV_LABEL_PART_MAIN, &lv_watch_font20); + lv_label_set_text_id(label_info, WATCH_TEXT_ID_MEASURING); + //lv_label_set_align(label_info, LV_LABEL_ALIGN_CENTER); + lv_obj_align(label_info, cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_INFO_Y); + lv_obj_set_click(label_info, false); + ext->label_info = label_info; + + lv_obj_t * label_value = lv_label_create(cont, NULL); + //lv_obj_set_size(label_value, LV_HOR_RES, 40); + lv_obj_add_style(label_value, LV_LABEL_PART_MAIN, &lv_watch_font40); + lv_label_set_text(label_value, ext->heart_rate); + //lv_label_set_align(label_value, LV_LABEL_ALIGN_CENTER); + lv_obj_align(label_value, cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_VALUE_Y); + lv_obj_set_click(label_value, false); + ext->label_value = label_value; + + if(FALSE == heart_rate_sensor_wear_state_get()) + { + ext->measure_state = STATE_HEART_RATE_MEASURE_FAIL; + watch_set_suspend_enable(true, ACT_ID_HEALTH_MEASURE_HEART, 0); + } + else + { + heart_rate_sensor_open(); + + lv_obj_t * gif_cont = lv_cont_create(cont, NULL); + lv_obj_set_size(gif_cont, LV_HOR_RES, 120); + lv_obj_set_style_local_bg_color(gif_cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_obj_align(gif_cont, cont, LV_ALIGN_IN_TOP_MID, 0, 40); + ext->gif_cont = gif_cont; + + ext->gif_info = gif_open(gif_cont, ANIM_HEART_RATE_MEASURING, 0); + if(!ext->gif_info) + { + HEART_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: gif open fail\n", __FUNCTION__, __LINE__); + } + + ext->total_timer_id = Hal_Timer_Start(HEALTH_HEART_MEASURE_DURATION, heart_rate_measure_timeout, NULL, FALSE); + ext->cycle_timer_id = Hal_Timer_Start(HEALTH_HEART_MEASURE_CYCLE, heart_rate_measure_cycle_timeout, NULL, TRUE); + + ext->measure_state = STATE_HEART_RATE_MEASURING; + watch_set_suspend_enable(false, ACT_ID_HEALTH_MEASURE_HEART, 0); + } + + heart_rate_display_update(); + + return watch_obj; +} + +void health_heart_rate_create_event_cb(lv_obj_t * btn, lv_event_t e) +{ + (void)btn; + if(LV_EVENT_CLICKED == e) + { + lv_obj_t * obj = health_heart_rate_create(NULL); + LV_ASSERT_MEM(obj); + } +} + + +#endif diff --git a/2.sdk/gui/lv_watch/lv_apps/health_measure/health_heart_rate.h b/2.sdk/gui/lv_watch/lv_apps/health_measure/health_heart_rate.h new file mode 100644 index 00000000..0fdbacbe --- /dev/null +++ b/2.sdk/gui/lv_watch/lv_apps/health_measure/health_heart_rate.h @@ -0,0 +1,88 @@ + + + +#ifndef __HEALTH_HEART_RATE_H__ +#define __HEALTH_HEART_RATE_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/********************* + * INCLUDES + *********************/ + +#ifdef LV_CONF_INCLUDE_SIMPLE +#include "lvgl.h" +#include "lv_ex_conf.h" +#else +#include "../../../lvgl/lvgl.h" +#include "../../../lv_ex_conf.h" +#endif + +#ifdef __MMI_HEALTH_MEASURE_HEART_SUPPORT__ + + +#define __HEALTH_HEART_DEBUG__ +#ifdef __HEALTH_HEART_DEBUG__ +#define HEART_DEBUG_PRINTF(fmt, ...) printf(fmt, ##__VA_ARGS__) +#else +#define HEART_DEBUG_PRINTF(fmt, ...) +#endif + + +#define HEALTH_HEART_MEASURE_DURATION (1000 * 40) // 40 sec +#define HEALTH_HEART_MEASURE_CYCLE (1000 * 1) + + +#if USE_LV_WATCH_UI_240_320 +#define HEART_LABEL_INFO_X (0) +#define HEART_LABEL_INFO_Y (180) +#define HEART_LABEL_INFO_W (LV_HOR_RES - HEART_LABEL_INFO_X) +#define HEART_LABEL_INFO_H (30) + +#define HEART_LABEL_VALUE_X (0) +#define HEART_LABEL_VALUE_Y (220) +#define HEART_LABEL_VALUE_W (LV_HOR_RES - HEART_LABEL_VALUE_X) +#define HEART_LABEL_VALUE_H (50) + +#else + +#endif + + +typedef enum +{ + STATE_HEART_RATE_MEASURE_NONE, + STATE_HEART_RATE_MEASURING, + STATE_HEART_RATE_MEASURE_DONE, + STATE_HEART_RATE_MEASURE_FAIL, + STATE_HEART_RATE_MEASURE_MAX, +}lv_heart_rate_state_e; + +typedef struct { + lv_watch_obj_ext_t lv_watch_obj; + /*New data for this type */ + gif_info_t * gif_info; + TIMER_ID total_timer_id, cycle_timer_id; + lv_obj_t * cont; + lv_obj_t * img; + lv_obj_t * label_info; + lv_obj_t * label_value; + lv_obj_t * gif_cont; + lv_heart_rate_state_e measure_state; + char heart_rate[8]; +} lv_heart_rate_obj_ext_t; + + + +void health_heart_rate_create_event_cb(lv_obj_t * btn, lv_event_t e); + + +#endif + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/2.sdk/gui/lv_watch/lv_apps/health_measure/health_spo2.c b/2.sdk/gui/lv_watch/lv_apps/health_measure/health_spo2.c new file mode 100644 index 00000000..084cb68a --- /dev/null +++ b/2.sdk/gui/lv_watch/lv_apps/health_measure/health_spo2.c @@ -0,0 +1,324 @@ + + + +/********************* + * INCLUDES + *********************/ +#include "lv_watch.h" + +#ifdef __MMI_HEALTH_MEASURE_SPO2_SUPPORT__ + +#include + + + +void health_spo2_sensor_open(void) +{ + +} + +void health_spo2_sensor_close(void) +{ + +} + +uint16 health_spo2_sensor_value_get(void) +{ + srand(Hal_Timer_Get_Counter()); + uint16 value = 95 + rand() % 6; + + return value; +} + +BOOL health_spo2_sensor_wear_state_get(void) +{ + BOOL is_wear = TRUE; + + return is_wear; +} + +lv_spo2_obj_ext_t * health_spo2_get_ext(void) +{ + lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_HEALTH_MEASURE_SPO2); + if(NULL == activity_obj) + { + return NULL; + } + + lv_obj_t * watch_obj; + lv_watch_get_child_obj(activity_obj, lv_watch_obj_signal, &watch_obj); + if(NULL != watch_obj) + { + lv_spo2_obj_ext_t * ext = lv_obj_get_ext_attr(watch_obj); + return ext; + } + return NULL; +} + +void health_spo2_display_update(void) +{ + lv_spo2_obj_ext_t * ext = health_spo2_get_ext(); + if(NULL == ext) + { + return; + } + + SPO2_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + switch(ext->measure_state) + { + case STATE_SPO2_MEASURING: + lv_obj_set_hidden(ext->img, TRUE); + + lv_label_set_text_id(ext->label_info, WATCH_TEXT_ID_MEASURING); + lv_obj_align(ext->label_info, ext->cont, LV_ALIGN_IN_TOP_MID, 0, SPO2_LABEL_INFO_Y); + + lv_label_set_text(ext->label_value, ext->spo2); + lv_obj_align(ext->label_value, ext->cont, LV_ALIGN_IN_TOP_MID, 0, SPO2_LABEL_VALUE_Y); + lv_obj_set_hidden(ext->label_value, ((strlen(ext->spo2)) ? FALSE : TRUE)); + break; + + case STATE_SPO2_MEASURE_FAIL: + lv_img_set_src(ext->img, ICON_SPO2_MEASURE_FAIL); + lv_obj_set_hidden(ext->img, FALSE); + + lv_label_set_text_id(ext->label_info, WATCH_TEXT_ID_MEASURE_FAIL); + lv_obj_align(ext->label_info, ext->cont, LV_ALIGN_IN_TOP_MID, 0, SPO2_LABEL_INFO_Y); + + lv_obj_remove_style(ext->label_value, LV_LABEL_PART_MAIN, &lv_watch_font40); + lv_obj_add_style(ext->label_value, LV_LABEL_PART_MAIN, &lv_watch_font30); + lv_label_set_text_id(ext->label_value, WATCH_TEXT_ID_NOT_WEAR); + lv_obj_align(ext->label_value, ext->cont, LV_ALIGN_IN_TOP_MID, 0, SPO2_LABEL_VALUE_Y); + lv_obj_set_hidden(ext->label_value, FALSE); + break; + + case STATE_SPO2_MEASURE_DONE: + lv_img_set_src(ext->img, ICON_SPO2_MEASURE_DONE); + lv_obj_set_hidden(ext->img, FALSE); + + lv_label_set_text_id(ext->label_info, WATCH_TEXT_ID_MEASURE_DONE); + lv_obj_align(ext->label_info, ext->cont, LV_ALIGN_IN_TOP_MID, 0, SPO2_LABEL_INFO_Y); + + lv_label_set_text(ext->label_value, ext->spo2); + lv_obj_align(ext->label_value, ext->cont, LV_ALIGN_IN_TOP_MID, 0, SPO2_LABEL_VALUE_Y); + lv_obj_set_hidden(ext->label_value, FALSE); + break; + + default: + break; + } +} + +static void health_spo2_measure_cycle_timeout(void * para) +{ + (void) para; + + lv_spo2_obj_ext_t * ext = health_spo2_get_ext(); + if(NULL != ext) + { + if(FALSE == health_spo2_sensor_wear_state_get()) + { + if(NULL != ext->cycle_timer_id) + { + Hal_Timer_Stop(ext->cycle_timer_id); + ext->cycle_timer_id = NULL; + } + if(NULL != ext->total_timer_id) + { + Hal_Timer_Stop(ext->total_timer_id); + ext->total_timer_id = NULL; + } + if(NULL != ext->gif_info) + { + gif_close(ext->gif_info); + ext->gif_info = NULL; + } + lv_obj_del(ext->gif_cont); + ext->measure_state = STATE_SPO2_MEASURE_FAIL; + watch_set_suspend_enable(true, ACT_ID_HEALTH_MEASURE_SPO2, 0); + } + else + { + uint16 value = health_spo2_sensor_value_get(); + if(value) + { + sprintf(ext->spo2, "%d %%", value); + } + //else + //{ + // sprintf(ext->spo2, "-- %%"); + //} + ext->measure_state = STATE_SPO2_MEASURING; + } + } + + health_spo2_display_update(); +} + +static void health_spo2_measure_timeout(void * para) +{ + (void) para; + + //sensor + health_spo2_sensor_close(); + + lv_spo2_obj_ext_t * ext = health_spo2_get_ext(); + if(ext) + { + if(NULL != ext->cycle_timer_id) + { + Hal_Timer_Stop(ext->cycle_timer_id); + ext->cycle_timer_id = NULL; + } + if(NULL != ext->total_timer_id) + { + Hal_Timer_Stop(ext->total_timer_id); + ext->total_timer_id = NULL; + } + if(NULL != ext->gif_info) + { + gif_close(ext->gif_info); + ext->gif_info = NULL; + } + lv_obj_del(ext->gif_cont); + ext->measure_state = STATE_SPO2_MEASURE_DONE; + watch_set_suspend_enable(true, ACT_ID_HEALTH_MEASURE_SPO2, 0); + } + + health_spo2_display_update(); +} + +static void health_spo2_prepare_destory(lv_obj_t * activity_obj) +{ + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + watch_set_suspend_enable(true, ACT_ID_HEALTH_MEASURE_SPO2, 0); + lv_watch_png_cache_all_free(); + + lv_spo2_obj_ext_t * ext = health_spo2_get_ext(); + if(NULL != ext) + { + if(NULL != ext->cycle_timer_id) + { + Hal_Timer_Stop(ext->cycle_timer_id); + ext->cycle_timer_id = NULL; + } + if(NULL != ext->total_timer_id) + { + Hal_Timer_Stop(ext->total_timer_id); + ext->total_timer_id = NULL; + } + if(NULL != ext->gif_info) + { + gif_close(ext->gif_info); + ext->gif_info = NULL; + } + + SPO2_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + } +} + +lv_obj_t * health_spo2_create(lv_obj_t * activity_obj) +{ + if(NULL == activity_obj) + { + lv_watch_activity_ext_t activity_ext = {0}; + + activity_ext.actId = ACT_ID_HEALTH_MEASURE_SPO2; + activity_ext.create = health_spo2_create; + activity_ext.prepare_destory = health_spo2_prepare_destory; + + activity_obj = lv_watch_creat_activity_obj(&activity_ext); + LV_ASSERT_MEM(activity_obj); + if(NULL == activity_obj) + return NULL; + } + + lv_obj_t * watch_obj = lv_watch_obj_create(activity_obj); + if(NULL == watch_obj) + return NULL; + + lv_spo2_obj_ext_t * ext = lv_obj_allocate_ext_attr(watch_obj, sizeof(lv_spo2_obj_ext_t)); + if(NULL == ext) + return NULL; + + _lv_memset_00(ext->spo2, sizeof(ext->spo2)); + + lv_obj_t * cont = lv_cont_create(watch_obj, NULL); + lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES); + lv_obj_align(cont, watch_obj, LV_ALIGN_IN_BOTTOM_MID, 0, 0); + lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_obj_set_style_local_bg_opa(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP); + lv_obj_set_style_local_pad_left(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 0); + lv_obj_set_style_local_pad_right(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 0); + //lv_cont_set_layout(cont, LV_LAYOUT_ROW_MID); + lv_obj_set_click(cont, false); + lv_watch_obj_add_element(cont); + ext->cont = cont; + + lv_obj_t * img = lv_img_create(cont, NULL); + lv_img_set_src(img, ICON_SPO2_MEASURE_FAIL); + lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 40); + lv_obj_set_hidden(img, true); + ext->img = img; + + lv_obj_t * label_info = lv_label_create(cont, NULL); + lv_obj_add_style(label_info, LV_LABEL_PART_MAIN, &lv_watch_font20); + lv_label_set_text_id(label_info, WATCH_TEXT_ID_MEASURING); + lv_obj_align(label_info, cont, LV_ALIGN_IN_TOP_MID, 0, SPO2_LABEL_INFO_Y); + lv_obj_set_click(label_info, false); + ext->label_info = label_info; + + lv_obj_t * label_value = lv_label_create(cont, NULL); + lv_obj_add_style(label_value, LV_LABEL_PART_MAIN, &lv_watch_font40); + lv_label_set_text(label_value, ext->spo2); + //lv_label_set_align(label_value, LV_LABEL_ALIGN_CENTER); + lv_obj_align(label_value, cont, LV_ALIGN_IN_TOP_MID, 0, SPO2_LABEL_VALUE_Y); + lv_obj_set_click(label_value, false); + ext->label_value = label_value; + + if(FALSE == health_spo2_sensor_wear_state_get()) + { + ext->measure_state = STATE_SPO2_MEASURE_FAIL; + watch_set_suspend_enable(true, ACT_ID_HEALTH_MEASURE_SPO2, 0); + } + else + { + health_spo2_sensor_open(); + + lv_obj_t * gif_cont = lv_cont_create(cont, NULL); + lv_obj_set_size(gif_cont, LV_HOR_RES, 120); + lv_obj_set_style_local_bg_color(gif_cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_obj_align(gif_cont, cont, LV_ALIGN_IN_TOP_MID, 0, 20); + ext->gif_cont = gif_cont; + + ext->gif_info = gif_open(gif_cont, ANIM_SPO2_MEASURING, 0); + if(!ext->gif_info) + { + SPO2_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: gif open fail\n", __FUNCTION__, __LINE__); + } + + ext->total_timer_id = Hal_Timer_Start(HEALTH_SPO2_MEASURE_DURATION, health_spo2_measure_timeout, NULL, FALSE); + ext->cycle_timer_id = Hal_Timer_Start(HEALTH_SPO2_MEASURE_CYCLE, health_spo2_measure_cycle_timeout, NULL, TRUE); + + ext->measure_state = STATE_SPO2_MEASURING; + watch_set_suspend_enable(false, ACT_ID_HEALTH_MEASURE_SPO2, 0); + } + + health_spo2_display_update(); + + return watch_obj; +} + +void health_spo2_create_event_cb(lv_obj_t * btn, lv_event_t e) +{ + (void)btn; + if(LV_EVENT_CLICKED == e) + { + lv_obj_t * obj = health_spo2_create(NULL); + LV_ASSERT_MEM(obj); + } +} + + +#endif diff --git a/2.sdk/gui/lv_watch/lv_apps/health_measure/health_spo2.h b/2.sdk/gui/lv_watch/lv_apps/health_measure/health_spo2.h new file mode 100644 index 00000000..10dc3163 --- /dev/null +++ b/2.sdk/gui/lv_watch/lv_apps/health_measure/health_spo2.h @@ -0,0 +1,88 @@ + + + +#ifndef __HEALTH_SPO2_H__ +#define __HEALTH_SPO2_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/********************* + * INCLUDES + *********************/ + +#ifdef LV_CONF_INCLUDE_SIMPLE +#include "lvgl.h" +#include "lv_ex_conf.h" +#else +#include "../../../lvgl/lvgl.h" +#include "../../../lv_ex_conf.h" +#endif + +#ifdef __MMI_HEALTH_MEASURE_SPO2_SUPPORT__ + + +#define __HEALTH_SPO2_DEBUG__ +#ifdef __HEALTH_SPO2_DEBUG__ +#define SPO2_DEBUG_PRINTF(fmt, ...) printf(fmt, ##__VA_ARGS__) +#else +#define SPO2_DEBUG_PRINTF(fmt, ...) +#endif + + +#define HEALTH_SPO2_MEASURE_DURATION (1000 * 40) // 40 sec +#define HEALTH_SPO2_MEASURE_CYCLE (1000 * 1) + + +#if USE_LV_WATCH_UI_240_320 +#define SPO2_LABEL_INFO_X (0) +#define SPO2_LABEL_INFO_Y (180) +#define SPO2_LABEL_INFO_W (LV_HOR_RES - SPO2_LABEL_INFO_X) +#define SPO2_LABEL_INFO_H (30) + +#define SPO2_LABEL_VALUE_X (0) +#define SPO2_LABEL_VALUE_Y (220) +#define SPO2_LABEL_VALUE_W (LV_HOR_RES - SPO2_LABEL_VALUE_X) +#define SPO2_LABEL_VALUE_H (50) + +#else + +#endif + + +typedef enum +{ + STATE_SPO2_MEASURE_NONE, + STATE_SPO2_MEASURING, + STATE_SPO2_MEASURE_DONE, + STATE_SPO2_MEASURE_FAIL, + STATE_SPO2_MEASURE_MAX, +}lv_spo2_state_e; + +typedef struct { + lv_watch_obj_ext_t lv_watch_obj; + + gif_info_t * gif_info; + TIMER_ID total_timer_id, cycle_timer_id; + lv_obj_t * cont; + lv_obj_t * img; + lv_obj_t * label_info; + lv_obj_t * label_value; + lv_obj_t * gif_cont; + lv_spo2_state_e measure_state; + char spo2[8]; +} lv_spo2_obj_ext_t; + + + +void health_spo2_create_event_cb(lv_obj_t * btn, lv_event_t e); + + +#endif + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/2.sdk/gui/lv_watch/lv_apps/health_measure/health_temperature.c b/2.sdk/gui/lv_watch/lv_apps/health_measure/health_temperature.c new file mode 100644 index 00000000..983c1d87 --- /dev/null +++ b/2.sdk/gui/lv_watch/lv_apps/health_measure/health_temperature.c @@ -0,0 +1,313 @@ + + + +/********************* + * INCLUDES + *********************/ +#include "lv_watch.h" + +#ifdef __MMI_HEALTH_MEASURE_TEMPERATURE_SUPPORT__ + +#include + + + +void health_temperature_sensor_open(void) +{ + +} + +void health_temperature_sensor_close(void) +{ + +} + +void health_temperature_sensor_value_get(float * body_value, float * wrist_value) +{ + srand(Hal_Timer_Get_Counter()); + float value = 36.0 + rand() % 4 * 0.1; + + * body_value = value; + * wrist_value = value - 10; +} + +BOOL health_temperature_sensor_wear_state_get(void) +{ + BOOL is_wear = TRUE; + + return is_wear; +} + +lv_temperature_obj_ext_t * health_temperature_get_ext(void) +{ + lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_HEALTH_MEASURE_TEMPERATURE); + if(NULL == activity_obj) + { + return NULL; + } + + lv_obj_t * watch_obj; + lv_watch_get_child_obj(activity_obj, lv_watch_obj_signal, &watch_obj); + if(NULL != watch_obj) + { + lv_temperature_obj_ext_t * ext = lv_obj_get_ext_attr(watch_obj); + return ext; + } + return NULL; +} + +void health_temperature_display_update(void) +{ + lv_temperature_obj_ext_t * ext = health_temperature_get_ext(); + if(NULL == ext) + { + return; + } + + switch(ext->measure_state) + { + case STATE_TEMPERATURE_MEASURING: + lv_label_set_text_id(ext->label_prompt_info, WATCH_TEXT_ID_MEASURING); + + lv_label_set_text(ext->label_body_value, ext->body_value); + + lv_label_set_text(ext->label_wrist_value, ext->wrist_value); + + break; + + case STATE_TEMPERATURE_MEASURE_FAIL: + lv_label_set_text_id(ext->label_prompt_info, WATCH_TEXT_ID_MEASURE_FAIL); + + lv_label_set_text_id(ext->label_body_value, WATCH_TEXT_ID_NOT_WEAR); + lv_label_set_text_id(ext->label_wrist_value, WATCH_TEXT_ID_NOT_WEAR); + break; + + case STATE_TEMPERATURE_MEASURE_DONE: + lv_label_set_text_id(ext->label_prompt_info, WATCH_TEXT_ID_MEASURE_DONE); + + lv_label_set_text(ext->label_body_value, ext->body_value); + + lv_label_set_text(ext->label_wrist_value, ext->wrist_value); + break; + + default: + break; + } +} + +static void health_temperature_measure_cycle_timeout(void * para) +{ + (void) para; + + lv_temperature_obj_ext_t * ext = health_temperature_get_ext(); + if(ext) + { + if(FALSE == health_temperature_sensor_wear_state_get()) + { + if(NULL != ext->cycle_timer_id) + { + Hal_Timer_Stop(ext->cycle_timer_id); + ext->cycle_timer_id = NULL; + } + if(NULL != ext->total_timer_id) + { + Hal_Timer_Stop(ext->total_timer_id); + ext->total_timer_id = NULL; + } + + ext->measure_state = STATE_TEMPERATURE_MEASURE_FAIL; + watch_set_suspend_enable(true, ACT_ID_HEALTH_MEASURE_TEMPERATURE, 0); + } + else + { + float body_value, wrist_value; + health_temperature_sensor_value_get(&body_value, &wrist_value); + if(body_value) + { + sprintf(ext->body_value, "%.1f C", body_value); + } + if(wrist_value) + { + sprintf(ext->wrist_value, "%.1f C", wrist_value); + } + + ext->measure_state = STATE_TEMPERATURE_MEASURING; + } + } + + health_temperature_display_update(); +} + +static void health_temperature_measure_timeout(void * para) +{ + (void) para; + + //sensor + health_temperature_sensor_close(); + + lv_temperature_obj_ext_t * ext = health_temperature_get_ext(); + if(ext) + { + if(NULL != ext->cycle_timer_id) + { + Hal_Timer_Stop(ext->cycle_timer_id); + ext->cycle_timer_id = NULL; + } + if(NULL != ext->total_timer_id) + { + Hal_Timer_Stop(ext->total_timer_id); + ext->total_timer_id = NULL; + } + + ext->measure_state = STATE_TEMPERATURE_MEASURE_DONE; + watch_set_suspend_enable(true, ACT_ID_HEALTH_MEASURE_TEMPERATURE, 0); + } + + health_temperature_display_update(); +} + +static void health_temperature_prepare_destory(lv_obj_t * activity_obj) +{ + TEMPERATURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + watch_set_suspend_enable(true, ACT_ID_HEALTH_MEASURE_TEMPERATURE, 0); + lv_watch_png_cache_all_free(); + + //lv_obj_t * watch_obj = NULL; + //lv_watch_get_child_obj(act, lv_watch_obj_signal, &watch_obj); + //lv_obj_t * cont = lv_obj_get_child(watch_obj, NULL); + + lv_temperature_obj_ext_t * ext = health_temperature_get_ext(); + if(NULL != ext) + { + if(NULL != ext->cycle_timer_id) + { + Hal_Timer_Stop(ext->cycle_timer_id); + ext->cycle_timer_id = NULL; + } + if(NULL != ext->total_timer_id) + { + Hal_Timer_Stop(ext->total_timer_id); + ext->total_timer_id = NULL; + } + + TEMPERATURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + } +} + +lv_obj_t * health_temperature_create(lv_obj_t * activity_obj) +{ + if(NULL == activity_obj) + { + lv_watch_activity_ext_t activity_ext = {0}; + + activity_ext.actId = ACT_ID_HEALTH_MEASURE_TEMPERATURE; + activity_ext.create = health_temperature_create; + activity_ext.prepare_destory = health_temperature_prepare_destory; + + activity_obj = lv_watch_creat_activity_obj(&activity_ext); + LV_ASSERT_MEM(activity_obj); + if(NULL == activity_obj) + return NULL; + } + + lv_obj_t * watch_obj = lv_watch_obj_create(activity_obj); + if(NULL == watch_obj) + return NULL; + + lv_temperature_obj_ext_t * ext = lv_obj_allocate_ext_attr(watch_obj, sizeof(lv_temperature_obj_ext_t)); + if(NULL == ext) + return NULL; + + _lv_memset_00(ext->body_value, sizeof(ext->body_value)); + _lv_memset_00(ext->wrist_value, sizeof(ext->wrist_value)); + + lv_obj_t * cont = lv_cont_create(watch_obj, NULL); + lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES); + lv_obj_align(cont, watch_obj, LV_ALIGN_IN_BOTTOM_MID, 0, 0); + lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_obj_set_style_local_bg_opa(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP); + lv_obj_set_style_local_pad_left(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 0); + lv_obj_set_style_local_pad_right(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 0); + //lv_cont_set_layout(cont, LV_LAYOUT_ROW_MID); + lv_obj_set_click(cont, false); + lv_watch_obj_add_element(cont); + + lv_obj_t * img = lv_img_create(cont, NULL); + lv_img_set_src(img, ICON_TEMPERATURE_MEASURE_BG); + + lv_obj_t * label_body_info = lv_label_create(cont, NULL); + lv_obj_set_pos(label_body_info, TEMPERATURE_LABEL_BODY_INFO_X, TEMPERATURE_LABEL_BODY_INFO_Y); + lv_obj_set_size(label_body_info, TEMPERATURE_LABEL_BODY_INFO_W, TEMPERATURE_LABEL_BODY_INFO_H); + lv_obj_add_style(label_body_info, LV_LABEL_PART_MAIN, &lv_watch_font24_yellow); + lv_label_set_text_id(label_body_info, WATCH_TEXT_ID_CURRENT_BODY_TEMPERATURE); + lv_label_set_align(label_body_info, LV_LABEL_ALIGN_LEFT); + lv_obj_set_click(label_body_info, false); + + ext->label_body_value = lv_label_create(cont, NULL); + lv_obj_set_pos(ext->label_body_value, TEMPERATURE_LABEL_BODY_VALUE_X, TEMPERATURE_LABEL_BODY_VALUE_Y); + //lv_obj_set_size(ext->label_body_value, TEMPERATURE_LABEL_BODY_VALUE_W, TEMPERATURE_LABEL_BODY_VALUE_H); + lv_obj_add_style(ext->label_body_value, LV_LABEL_PART_MAIN, &lv_watch_font24); + lv_label_set_text(ext->label_body_value, ext->body_value); + lv_label_set_align(ext->label_body_value, LV_LABEL_ALIGN_LEFT); + lv_obj_set_click(ext->label_body_value, false); + + lv_obj_t * label_wrist_info = lv_label_create(cont, NULL); + lv_obj_set_pos(label_wrist_info, TEMPERATURE_LABEL_WRIST_INFO_X, TEMPERATURE_LABEL_WRIST_INFO_Y); + //lv_obj_set_size(label_wrist_info, TEMPERATURE_LABEL_WRIST_INFO_W, TEMPERATURE_LABEL_WRIST_INFO_H); + lv_obj_add_style(label_wrist_info, LV_LABEL_PART_MAIN, &lv_watch_font24_yellow); + lv_label_set_text_id(label_wrist_info, WATCH_TEXT_ID_CURRENT_WRIST_TEMPERATURE); + lv_label_set_align(label_wrist_info, LV_LABEL_ALIGN_LEFT); + lv_obj_set_click(label_wrist_info, false); + + ext->label_wrist_value = lv_label_create(cont, NULL); + lv_obj_set_pos(ext->label_wrist_value, TEMPERATURE_LABEL_WRIST_VALUE_X, TEMPERATURE_LABEL_WRIST_VALUE_Y); + //lv_obj_set_size(ext->label_wrist_value, TEMPERATURE_LABEL_WRIST_VALUE_W, TEMPERATURE_LABEL_WRIST_VALUE_H); + lv_obj_add_style(ext->label_wrist_value, LV_LABEL_PART_MAIN, &lv_watch_font24); + lv_label_set_text(ext->label_wrist_value, ext->wrist_value); + lv_label_set_align(ext->label_wrist_value, LV_LABEL_ALIGN_LEFT); + lv_obj_set_click(ext->label_wrist_value, false); + + ext->label_prompt_info = lv_label_create(cont, NULL); + //lv_obj_set_size(ext->label_prompt_info, LV_HOR_RES, 40); + lv_obj_add_style(ext->label_prompt_info, LV_LABEL_PART_MAIN, &lv_watch_font30); + lv_label_set_text_id(ext->label_prompt_info, WATCH_TEXT_ID_MEASURING); + lv_label_set_align(ext->label_prompt_info, LV_LABEL_ALIGN_CENTER); + lv_obj_align(ext->label_prompt_info, cont, LV_ALIGN_IN_BOTTOM_MID, 0, -70); + lv_obj_set_click(ext->label_prompt_info, false); + + if(FALSE == health_temperature_sensor_wear_state_get()) + { + ext->measure_state = STATE_TEMPERATURE_MEASURE_FAIL; + watch_set_suspend_enable(true, ACT_ID_HEALTH_MEASURE_TEMPERATURE, 0); + } + else + { + health_temperature_sensor_open(); + + TEMPERATURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + ext->total_timer_id = Hal_Timer_Start(TEMPERATURE_MEASURE_DURATION, health_temperature_measure_timeout, NULL, FALSE); + ext->cycle_timer_id = Hal_Timer_Start(TEMPERATURE_MEASURE_CYCLE, health_temperature_measure_cycle_timeout, NULL, TRUE); + + ext->measure_state = STATE_TEMPERATURE_MEASURING; + watch_set_suspend_enable(false, ACT_ID_HEALTH_MEASURE_TEMPERATURE, 0); + } + + health_temperature_display_update(); + + return watch_obj; +} + +void health_temperature_create_event_cb(lv_obj_t * btn, lv_event_t e) +{ + (void)btn; + if(LV_EVENT_CLICKED == e) + { + lv_obj_t * obj = health_temperature_create(NULL); + LV_ASSERT_MEM(obj); + } +} + + +#endif diff --git a/2.sdk/gui/lv_watch/lv_apps/health_measure/health_temperature.h b/2.sdk/gui/lv_watch/lv_apps/health_measure/health_temperature.h new file mode 100644 index 00000000..3948c486 --- /dev/null +++ b/2.sdk/gui/lv_watch/lv_apps/health_measure/health_temperature.h @@ -0,0 +1,96 @@ + + + +#ifndef __HEALTH_TEMPERATURE_H__ +#define __HEALTH_TEMPERATURE_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/********************* + * INCLUDES + *********************/ + +#ifdef LV_CONF_INCLUDE_SIMPLE +#include "lvgl.h" +#include "lv_ex_conf.h" +#else +#include "../../../lvgl/lvgl.h" +#include "../../../lv_ex_conf.h" +#endif + +#ifdef __MMI_HEALTH_MEASURE_TEMPERATURE_SUPPORT__ + + +#define __HEALTH_TEMPERATURE_DEBUG__ +#ifdef __HEALTH_TEMPERATURE_DEBUG__ +#define TEMPERATURE_DEBUG_PRINTF(fmt, ...) printf(fmt, ##__VA_ARGS__) +#else +#define TEMPERATURE_DEBUG_PRINTF(fmt, ...) +#endif + + +#define TEMPERATURE_MEASURE_DURATION (1000 * 30) // 30 sec +#define TEMPERATURE_MEASURE_CYCLE (1000 * 1) + + +#if USE_LV_WATCH_UI_240_320 +#define TEMPERATURE_LABEL_BODY_INFO_X (75) +#define TEMPERATURE_LABEL_BODY_INFO_Y (35) +#define TEMPERATURE_LABEL_BODY_INFO_W (LV_HOR_RES - TEMPERATURE_LABEL_BODY_INFO_X) +#define TEMPERATURE_LABEL_BODY_INFO_H (30) + +#define TEMPERATURE_LABEL_BODY_VALUE_X (80) +#define TEMPERATURE_LABEL_BODY_VALUE_Y (75) +#define TEMPERATURE_LABEL_BODY_VALUE_W (LV_HOR_RES - TEMPERATURE_LABEL_BODY_VALUE_X) +#define TEMPERATURE_LABEL_BODY_VALUE_H (30) + +#define TEMPERATURE_LABEL_WRIST_INFO_X (75) +#define TEMPERATURE_LABEL_WRIST_INFO_Y (115+3) +#define TEMPERATURE_LABEL_WRIST_INFO_W (LV_HOR_RES - TEMPERATURE_LABEL_WRIST_INFO_X) +#define TEMPERATURE_LABEL_WRIST_INFO_H (30) + +#define TEMPERATURE_LABEL_WRIST_VALUE_X (80) +#define TEMPERATURE_LABEL_WRIST_VALUE_Y (160) +#define TEMPERATURE_LABEL_WRIST_VALUE_W (LV_HOR_RES - TEMPERATURE_LABEL_WRIST_VALUE_X) +#define TEMPERATURE_LABEL_WRIST_VALUE_H (30) +#else + +#endif + + +typedef enum +{ + STATE_TEMPERATURE_MEASURE_NONE, + STATE_TEMPERATURE_MEASURING, + STATE_TEMPERATURE_MEASURE_DONE, + STATE_TEMPERATURE_MEASURE_FAIL, + STATE_TEMPERATURE_MEASURE_MAX, +}lv_temperature_state_e; + +typedef struct { + lv_watch_obj_ext_t lv_watch_obj; + + //gif_info_t * gif_info; + TIMER_ID total_timer_id, cycle_timer_id; + lv_obj_t * label_prompt_info; + lv_obj_t * label_body_value; + lv_obj_t * label_wrist_value; + lv_temperature_state_e measure_state; + char body_value[8]; + char wrist_value[8]; +} lv_temperature_obj_ext_t; + + + +void health_temperature_create_event_cb(lv_obj_t * btn, lv_event_t e); + + +#endif + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/2.sdk/gui/lv_watch/lv_apps/imgviewer/imgviewer.c b/2.sdk/gui/lv_watch/lv_apps/imgviewer/imgviewer.c index 42cb5b26..f58d6c8b 100644 --- a/2.sdk/gui/lv_watch/lv_apps/imgviewer/imgviewer.c +++ b/2.sdk/gui/lv_watch/lv_apps/imgviewer/imgviewer.c @@ -802,12 +802,15 @@ static lv_obj_t * imgviewer_photo_bg_create(lv_obj_t * par) lv_imgviewer_obj_ext_t * ext = imgviewer_get_ext(); if(ext->photo_cnt == 0) { bg = lv_img_create(par, NULL); - lv_img_set_src(bg, ICON_IMGVIEWER_NO_PHOTO); + //lv_img_set_src(bg, ICON_IMGVIEWER_NO_PHOTO); + lv_img_set_src(bg, ICON_COMMON_BG_WHITE); lv_obj_t * label_nophoto = lv_label_create(bg, NULL); lv_label_set_text_id(label_nophoto, WATCH_TEXT_ID_NOPHOTO); - lv_obj_align(label_nophoto, NULL, LV_ALIGN_IN_BOTTOM_MID, 10, -20); - lv_obj_add_style(label_nophoto, LV_LABEL_PART_MAIN, &lv_watch_font20_black); + //lv_obj_align(label_nophoto, NULL, LV_ALIGN_IN_BOTTOM_MID, 10, -20); + //lv_obj_add_style(label_nophoto, LV_LABEL_PART_MAIN, &lv_watch_font20_black); + lv_obj_add_style(label_nophoto, LV_LABEL_PART_MAIN, &lv_watch_font30_black); + lv_obj_align(label_nophoto, NULL, LV_ALIGN_CENTER, 0, 0); lv_obj_set_click(label_nophoto, false); } else { @@ -832,6 +835,8 @@ static lv_obj_t * imgviewer_photo_bg_create(lv_obj_t * par) lv_obj_set_event_cb(img_back, imgviewer_back_event_cb); lv_obj_set_adv_hittest(img_back, false); + printf("[@CHENG_DEBUG][%s][%d]: %d, %d\n", __FUNCTION__, __LINE__, ext->photo_cnt, ext->selected_cnt); + if(ext->photo_cnt > 0) { //prev lv_obj_t * cont_prev = lv_cont_create(bg, NULL); @@ -1116,6 +1121,10 @@ static void imgviewer_view_photo_opt_create(lv_obj_t * img_view) lv_obj_set_click(img_del, true); lv_obj_set_adv_hittest(img_del, false); lv_obj_set_event_cb(img_del, imgviewer_delete_event_cb); + +#ifdef __MMI_ZHSX_SUPPORT__ + lv_obj_set_hidden(img_share, true); +#endif } static lv_obj_t * imgviewer_setting_create(lv_obj_t * activity_obj) diff --git a/2.sdk/gui/lv_watch/lv_apps/pedometer/bodyinfo.c b/2.sdk/gui/lv_watch/lv_apps/pedometer/bodyinfo.c index 2aa7e605..ee1684d0 100644 --- a/2.sdk/gui/lv_watch/lv_apps/pedometer/bodyinfo.c +++ b/2.sdk/gui/lv_watch/lv_apps/pedometer/bodyinfo.c @@ -236,6 +236,14 @@ static void setting_btn_event_cb(lv_obj_t * obj, lv_event_t e) num = lv_obj_get_user_data(obj).user_num; + #if 1 //CHENG_MODIFY + if(0 == num || 1 == num || 2 == num) + { + sel_value = get_value_from_btn(obj); + } + + #else + if(num == 0) { ext->height = get_value_from_btn(obj); ext->weight = get_value_from_btn(lv_obj_get_child_back(lv_obj_get_parent(obj), obj)); @@ -252,6 +260,8 @@ static void setting_btn_event_cb(lv_obj_t * obj, lv_event_t e) ext->step = get_value_from_btn(obj); sel_value = ext->step; } + #endif + // printf("num = %d height = %d w = %d g = %d\n", num,ext->height, ext->weight, ext->step); roller_create(child_obj, num, sel_value); setting_opt_create(child_obj); diff --git a/2.sdk/gui/lv_watch/lv_apps/pedometer/pedometer.c b/2.sdk/gui/lv_watch/lv_apps/pedometer/pedometer.c index e63ea337..f90f320b 100644 --- a/2.sdk/gui/lv_watch/lv_apps/pedometer/pedometer.c +++ b/2.sdk/gui/lv_watch/lv_apps/pedometer/pedometer.c @@ -64,12 +64,22 @@ lv_obj_t * pedometer_create(lv_obj_t * tileview, uint16_t id) if(img_color_circle == NULL) return NULL; lv_img_set_src(img_color_circle, ICON_COLOR_CIRCLE); lv_obj_add_style(img_color_circle, LV_IMG_PART_MAIN, &lv_watch_image); +#if USE_LV_WATCH_UI_240_320 + lv_obj_set_y(img_color_circle, 30); +#else lv_obj_align(img_color_circle, tab, LV_ALIGN_CENTER, 0, 0); +#endif lv_obj_t * pedometer = lv_img_create(img_color_circle, NULL); lv_img_set_src(pedometer, ICON_STEP_DOT); + +#if USE_LV_WATCH_UI_240_320 + lv_obj_set_pos(pedometer, LV_HOR_RES / 2 - lv_obj_get_width(pedometer) / 2, + 120 + 100 - lv_obj_get_height(pedometer) / 2); +#else lv_obj_set_pos(pedometer, LV_HOR_RES / 2 - lv_obj_get_width(pedometer) / 2, LV_VER_RES / 2 + 100 - lv_obj_get_height(pedometer) / 2); +#endif lv_img_set_pivot(pedometer, lv_obj_get_width(pedometer) / 2, - (PEDOMETER_CIRCLE_R - lv_obj_get_width(pedometer) / 2 + PEDOMETER_CIRCLE_R_OFFSET)); diff --git a/2.sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu.c b/2.sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu.c index c3d5560c..858cd33f 100644 --- a/2.sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu.c +++ b/2.sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu.c @@ -71,6 +71,16 @@ void exercise_record_create_event_cb(lv_obj_t * btn, lv_event_t event) **********************/ static watch_app_info_t * menu_app = NULL; static uint8_t watch_menu_app_cnt = 0; + +#ifdef __MMI_ZHSX_SUPPORT__ + +#include "primary_menu_data.c" + +//count should not greater than WATCH_APP_MAX_COUNT !! +#define PRIMARY_MENU_COUNT (sizeof(s_primary_grid_menu) / sizeof(watch_app_info_t)) + +#else /*__MMI_ZHSX_SUPPORT__*/ + static watch_app_info_t app[] = { { ICON_SETTING, WATCH_TEXT_ID_SETTINGS, setting_create_event_cb }, { ICON_WECHAT, WATCH_TEXT_ID_WECHAT, voice_msg_create_event_cb }, @@ -131,6 +141,10 @@ static watch_app_info_t app[] = { { ICON_SMS_MSG, WATCH_TEXT_ID_SMS_MSG,sms_msg_create_event_cb}, #endif }; + +#endif /*__MMI_ZHSX_SUPPORT__*/ + + /********************** * MACROS **********************/ @@ -155,12 +169,19 @@ void primary_menu_init(void) primary_set_default_menu(&launcher_info); } menu_app = (watch_app_info_t *)lv_mem_alloc(sizeof(watch_app_info_t) * watch_menu_app_cnt); +#ifdef __MMI_ZHSX_SUPPORT__ + for(i = 0; i < watch_menu_app_cnt; i++) + { + memcpy(&menu_app[i], &(s_primary_grid_menu[i]), sizeof(watch_app_info_t)); + } +#else for(i = 0; i < WATCH_APP_MAX_COUNT; i++) { if(launcher_info.menu_app_show[i] == 1) { memcpy(&menu_app[j], &app[i], sizeof(watch_app_info_t)); j++; } } +#endif } void primary_menu_destroy(void) @@ -312,6 +333,22 @@ lv_obj_t * primary_menu_create(lv_obj_t * tileview, bool create_all, int8_t menu **********************/ static void primary_set_default_menu(nv_watch_launcher_t * launcher_info) { +#ifdef __MMI_ZHSX_SUPPORT__ + if(PRIMARY_MENU_COUNT > WATCH_APP_MAX_COUNT) + { + printf("[@CHENG_DEBUG][%s][%d]: primary menu count %d should not greater than %d\n", __FUNCTION__, __LINE__, PRIMARY_MENU_COUNT, WATCH_APP_MAX_COUNT); + return; + } + + uint8_t i = 0; + for(i = 0; i < PRIMARY_MENU_COUNT; i++) + { + launcher_info->menu_app_show[i] = 1; + } + watch_menu_app_cnt = PRIMARY_MENU_COUNT; + +#else /*__MMI_ZHSX_SUPPORT__*/ + launcher_info->menu_app_show[APP_SETTING] = 1; launcher_info->menu_app_show[APP_WECHAT] = 1; launcher_info->menu_app_show[APP_PHONEBOOK] = 1; @@ -374,6 +411,8 @@ static void primary_set_default_menu(nv_watch_launcher_t * launcher_info) watch_menu_app_cnt++; } } +#endif /*__MMI_ZHSX_SUPPORT__*/ + UI_NV_Write_Req(NV_SECTION_UI_LAUNCHER, 0, sizeof(nv_watch_launcher_t), (uint8_t *)launcher_info); printf("%s: add default show app cnt %d\n", __FUNCTION__, watch_menu_app_cnt); } @@ -435,6 +474,16 @@ static lv_obj_t * menu_add_btn(lv_obj_t * tab, int8_t menu_index, int8_t btn_id, } else if(i == 3) { lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_RIGHT, -30*2, -45*2); } +#elif USE_LV_WATCH_UI_240_320 != 0 + if(0 == i) + lv_obj_align(btn, cont, LV_ALIGN_IN_TOP_LEFT, 20, 40 - 15); + else if(1 == i) + lv_obj_align(btn, cont, LV_ALIGN_IN_TOP_RIGHT, -20, 40 - 15); + else if(2 == i) + lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_LEFT, 20, -45 - 18); + else if(3 == i) + lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_RIGHT, -20, -45 - 18); + #else if(i == 0) { lv_obj_align(btn, cont, LV_ALIGN_IN_TOP_LEFT, 20, 40); diff --git a/2.sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu_data.c b/2.sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu_data.c new file mode 100644 index 00000000..409b0037 --- /dev/null +++ b/2.sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu_data.c @@ -0,0 +1,58 @@ + + + +#include "lv_watch.h" + +#if USE_LV_WATCH_PRIMARY_MENU != 0 + +#include + + +#ifdef __MMI_ZHSX_SUPPORT__ + +//count need not greater than WATCH_APP_MAX_COUNT !! + +static watch_app_info_t s_primary_grid_menu[] = +{ + { ICON_PHONEBOOK, WATCH_TEXT_ID_TELEPHONE, phonebook_create_btn_event_cb}, +#if USE_LV_WATCH_SMS_MSG != 0 + { ICON_SMS_MSG, WATCH_TEXT_ID_SMS_MSG,sms_msg_create_event_cb}, +#endif + { ICON_DIALPAD, WATCH_TEXT_ID_DIALPAD, dialpad_create_event_cb }, + { ICON_CALLLOG, WATCH_TEXT_ID_CALL_LOG, call_log_create_event_cb }, + +#ifdef __MMI_HEALTH_MEASURE_HEART_SUPPORT__ + { ICON_HEART_RATE, WATCH_TEXT_ID_HEART_RATE, health_heart_rate_create_event_cb}, +#endif +#ifdef __MMI_HEALTH_MEASURE_SPO2_SUPPORT__ + { ICON_SPO2, WATCH_TEXT_ID_SPO2, health_spo2_create_event_cb}, +#endif +#ifdef __MMI_HEALTH_MEASURE_TEMPERATURE_SUPPORT__ + { ICON_TEMPERATURE, WATCH_TEXT_ID_TEMPERATURE, health_temperature_create_event_cb}, +#endif +#ifdef __MMI_WECHAT_SUPPORT__ + { ICON_WECHAT, WATCH_TEXT_ID_WECHAT, wechat_create_event_cb }, +#endif + + { ICON_CAMERA, WATCH_TEXT_ID_CAMERA, camera_create_btn_event_cb }, //test code + { ICON_ALBUM, WATCH_TEXT_ID_ALBUM, album_create_event_cb }, +#if USE_LV_WATCH_ALIPAY != 0 + { ICON_ALIPAY, WATCH_TEXT_ID_ALIPAY, upay_create_event_cb }, +#endif + { ICON_VIDEOCALL, WATCH_TEXT_ID_VIDEOCALL, videocallmain_create }, + + { ICON_MUSIC, WATCH_TEXT_ID_AUDIO_PLAYER, audio_player_create_event_cb }, + { ICON_ALARM, WATCH_TEXT_ID_ALARM, alarm_create_event_cb }, + { ICON_STOPWATCH, WATCH_TEXT_ID_STOPWATCH, stopwatch_create_event_cb }, + { ICON_TIMER, WATCH_TEXT_ID_TIMER, timer_create_event_cb }, + + { ICON_CALCULATOR, WATCH_TEXT_ID_CALCULATOR, calculator_create_event_cb }, + { ICON_CALENDAR, WATCH_TEXT_ID_CALENDER, calendar_create_event_cb }, + { ICON_SETTING, WATCH_TEXT_ID_SETTINGS, setting_create_event_cb }, +}; + + +#endif /*__MMI_ZHSX_SUPPORT__*/ + + +#endif /*USE_LV_WATCH_PRIMARY_MENU*/ diff --git a/2.sdk/gui/lv_watch/lv_apps/shutdown/shutdown.c b/2.sdk/gui/lv_watch/lv_apps/shutdown/shutdown.c index 7cfd5709..e53eef75 100644 --- a/2.sdk/gui/lv_watch/lv_apps/shutdown/shutdown.c +++ b/2.sdk/gui/lv_watch/lv_apps/shutdown/shutdown.c @@ -61,14 +61,15 @@ lv_obj_t * shutdown_create(lv_obj_t * activity_obj, bool confirm) if(confirm) { lv_obj_t * label = lv_label_create(obj, NULL); - lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font20_gray); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - lv_obj_set_click(label, false); - lv_label_set_text_id(label, WATCH_TEXT_ID_SHUTDOWN); - lv_obj_align(label, obj, LV_ALIGN_IN_TOP_MID, 0, 10); - - label = lv_label_create(obj, NULL); - lv_obj_set_width(label, lv_obj_get_width(obj) - 40); + //lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font20_gray); + //lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); + //lv_obj_set_click(label, false); + //lv_label_set_text_id(label, WATCH_TEXT_ID_SHUTDOWN); + //lv_obj_align(label, obj, LV_ALIGN_IN_TOP_MID, 0, 10); + + //label = lv_label_create(obj, NULL); + //lv_obj_set_width(label, lv_obj_get_width(obj) - 40); + lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font30); lv_label_set_text_id(label, WATCH_TEXT_ID_CONFIRM_SHUTDOWN); lv_obj_align(label, obj, LV_ALIGN_CENTER, 0, -40); diff --git a/2.sdk/gui/lv_watch/lv_apps/stopwatch/stopwatch.c b/2.sdk/gui/lv_watch/lv_apps/stopwatch/stopwatch.c index 0591d28d..85e6f246 100644 --- a/2.sdk/gui/lv_watch/lv_apps/stopwatch/stopwatch.c +++ b/2.sdk/gui/lv_watch/lv_apps/stopwatch/stopwatch.c @@ -77,6 +77,9 @@ lv_obj_t * stopwatch_create(lv_obj_t * activity_obj) lv_obj_t * img = lv_img_create(obj, NULL); lv_img_set_src(img, ICON_STOPWATCH_BACKGROUND); +#if USE_LV_WATCH_UI_240_320 + lv_obj_set_pos(img, 0, 40); +#endif lv_stopwatch_ext_t * img_ext = lv_obj_allocate_ext_attr(img, sizeof(lv_stopwatch_ext_t)); img_ext->label_hour_1 = NULL; img_ext->label_hour_2 = NULL; diff --git a/2.sdk/gui/lv_watch/lv_apps/timer/timer_clock.c b/2.sdk/gui/lv_watch/lv_apps/timer/timer_clock.c index 525b7859..3dd4c518 100644 --- a/2.sdk/gui/lv_watch/lv_apps/timer/timer_clock.c +++ b/2.sdk/gui/lv_watch/lv_apps/timer/timer_clock.c @@ -293,7 +293,11 @@ static lv_obj_t * timer_create(lv_obj_t * activity_obj) lv_arc_set_bg_angles(arc, 0, 360); uint16_t angle_end = 270 + 360 - 360 * (timer_total - timer_remaining) / timer_total; lv_arc_set_angles(arc, 270, angle_end); +#if USE_LV_WATCH_UI_240_320 + lv_obj_set_size(arc, LV_HOR_RES-10, LV_HOR_RES-10); +#else lv_obj_set_size(arc, LV_VER_RES-10, LV_VER_RES-10); +#endif lv_obj_align(arc, NULL, LV_ALIGN_CENTER, 0, 0); lv_obj_set_style_local_line_color(arc, LV_ARC_PART_INDIC, LV_STATE_DEFAULT, LV_COLOR_CYAN); lv_obj_set_style_local_line_width(arc, LV_ARC_PART_INDIC, LV_STATE_DEFAULT, LV_DPX(10)); @@ -333,7 +337,11 @@ static lv_obj_t * timer_create(lv_obj_t * activity_obj) lv_obj_t * btn_stop = lv_imgbtn_create(obj, NULL); lv_imgbtn_set_src(btn_stop, LV_BTN_STATE_RELEASED, ICON_TIMER_STOP); lv_imgbtn_set_src(btn_stop, LV_BTN_STATE_PRESSED, ICON_TIMER_STOP); +#if USE_LV_WATCH_UI_240_320 + lv_obj_align(btn_stop, NULL, LV_ALIGN_IN_BOTTOM_LEFT, LV_HOR_RES*90/360, -LV_VER_RES*40/360 - 35); +#else lv_obj_align(btn_stop, NULL, LV_ALIGN_IN_BOTTOM_LEFT, LV_HOR_RES*90/360, -LV_VER_RES*40/360); +#endif lv_obj_set_event_cb(btn_stop, timer_stop_action); lv_watch_obj_add_element(btn_stop); @@ -346,7 +354,11 @@ static lv_obj_t * timer_create(lv_obj_t * activity_obj) lv_imgbtn_set_src(btn_start, LV_BTN_STATE_RELEASED, ICON_TIMER_START); lv_imgbtn_set_src(btn_start, LV_BTN_STATE_PRESSED, ICON_TIMER_START); } +#if USE_LV_WATCH_UI_240_320 + lv_obj_align(btn_start, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, -LV_HOR_RES*90/360, -LV_VER_RES*40/360 - 35); +#else lv_obj_align(btn_start, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, -LV_HOR_RES*90/360, -LV_VER_RES*40/360); +#endif lv_obj_set_event_cb(btn_start, timer_start_action); lv_watch_obj_add_element(btn_start); ext->btn_start = btn_start; @@ -355,7 +367,11 @@ static lv_obj_t * timer_create(lv_obj_t * activity_obj) lv_obj_t * btn_pause = lv_imgbtn_create(obj, NULL); lv_imgbtn_set_src(btn_pause, LV_BTN_STATE_RELEASED, ICON_TIMER_PAUSE); lv_imgbtn_set_src(btn_pause, LV_BTN_STATE_PRESSED, ICON_TIMER_PAUSE); +#if USE_LV_WATCH_UI_240_320 + lv_obj_align(btn_pause, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, -LV_HOR_RES*90/360, -LV_VER_RES*40/360 - 35); +#else lv_obj_align(btn_pause, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, -LV_HOR_RES*90/360, -LV_VER_RES*40/360); +#endif lv_obj_set_event_cb(btn_pause, timer_pause_action); lv_watch_obj_add_element(btn_pause); ext->btn_pause = btn_pause; diff --git a/2.sdk/gui/lv_watch/lv_apps/wechat/wechat.h b/2.sdk/gui/lv_watch/lv_apps/wechat/wechat.h new file mode 100644 index 00000000..3095e93f --- /dev/null +++ b/2.sdk/gui/lv_watch/lv_apps/wechat/wechat.h @@ -0,0 +1,158 @@ + + + +#ifndef __WECHAT_H__ +#define __WECHAT_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/********************* +* INCLUDES +*********************/ + +#ifdef LV_CONF_INCLUDE_SIMPLE +#include "lvgl.h" +#include "lv_watch_conf.h" +#else +#include "../../../lvgl/lvgl.h" +#include "../../../lv_watch_conf.h" +#endif + +#ifdef __MMI_WECHAT_SUPPORT__ + + +#if 0 + +#define VOICE_MSG_AMR_HEAD_SIZE 6 +#define VOICE_MSG_EXPRESSION_WIDTH 120 +#define VOICE_MSG_EXPRESSION_HEIGHT 120 +#define VOICE_MSG_PHOTO_WIDTH 120 +#define VOICE_MSG_PHOTO_HEIGHT 120 + +#endif + +#define __WECHAT_DEBUG__ +#ifdef __WECHAT_DEBUG__ +#define WECHAT_DEBUG_PRINTF(fmt, ...) printf(fmt, ##__VA_ARGS__) +#else +#define WECHAT_DEBUG_PRINTF(fmt, ...) +#endif + + + +#define WECHAT_MSG_DATA_FILE_NAME_MAX (NV_WATCH_WECHAT_DATA_FILE_NAME_MAX) // (LV_FS_MAX_PATH_LENGTH / 2) +//#define WECHAT_MSG_DATA_FILE_PATH "C:/wechat/" + +#define WECHAT_MSG_DATA_AMR_HEAD_SIZE (6) +#define WECHAT_MSG_DATA_RECORD_DURATION_MAX (16) // seconds +#define WECHAT_MSG_DATA_RECORD_SIZE_MAX (WECHAT_MSG_DATA_RECORD_DURATION_MAX * HAL_AMR_BUFSIZE_PER_SECOND + WECHAT_MSG_DATA_AMR_HEAD_SIZE) + +#define WECHAT_MSG_CHAT_TIME_INTERVAL (3 * 60) /*display the time of current chat msg if more than 3 mins from the previous chat msgs*/ + +#define WECHAT_MSG_SENDING_TIME_MAX (1000 * 3) // ms + + + +typedef enum +{ + WECHAT_CREATED_FROM_APP, + WECHAT_CREATED_FROM_ALBUM, + WECHAT_CREATED_FROM_IMGVIEWER, + WECHAT_CREATED_FROM_MAX, +}lv_wechat_created_from_e; + +typedef struct +{ + lv_watch_obj_ext_t old_ext; + lv_anim_t sending_anim; + TIMER_ID sending_timer_id, result_timer_id; + bool send_result; +} lv_wechat_msg_sending_ext_t; + +typedef struct +{ + lv_watch_obj_ext_t old_ext; + lv_obj_t * label; + uint32_t file_size; +} lv_wechat_msg_recording_ext_t; + +typedef struct +{ + lv_watch_obj_ext_t old_ext; + lv_obj_t * unread_img; + uint8_t item_index; +} lv_wechat_msg_list_item_ext_t; + +typedef struct { + lv_page_ext_t old_ext; + lv_anim_t voice_playing_anim; + bool pressing; + lv_style_t style_cont; + lv_style_t style_label_time; + lv_style_t style_text; + lv_style_t style_label_len_other; + lv_style_t style_label_len_ui; +} lv_wechat_msg_list_ext_t; + +typedef struct +{ + lv_watch_obj_ext_t old_ext; + lv_obj_t * cont; + lv_obj_t * list; // chat list + lv_obj_t * label_no_msg; // mo msg prompt + lv_obj_t * img_emo; + lv_obj_t * img_record; // record button + lv_obj_t * delete_bg; // delete msg + + lv_wechat_created_from_e from; // msg from + + TIMER_ID delete_timer_id; + MCI_EVNET_T event; +}lv_wechat_ext_t; + + + +void wechat_chat_list_set_slide_enable(lv_watch_obj_ext_t * ext, bool enable); +void wechat_msg_info_init(void); +void wechat_msg_voice_item_playing_stop(lv_wechat_ext_t * ext); +void wechat_chat_list_msg_item_style_reset(lv_wechat_ext_t * ext); +void wechat_main_screen_refresh(void); +void wechat_create_event_cb(lv_obj_t * btn, lv_event_t e); + + + +#if 0 + +void voice_msg_call_end(void); +void voice_msg_alarm_end(void); +void voice_msg_speech_recog_end(void); +void voice_msg_alarm_ind(void); + +void voice_msg_audio_ctrl_callback(AUDIO_CTRL_PRIORITY priority); +void voice_msg_shut_down(void); +void * voice_msg_get_ext(lv_watch_Activity_Id_t actId); +uint32_t voice_msg_read_file_size(char * file_name); +void * voice_msg_read_file_data(char * file_name, uint8_t msg_type, uint32_t * data_size); +void voice_msg_fill_chat_id(app_adaptor_voice_msg_chat_id_t * id, voice_msg_contact_t * contact); +void voice_msg_send_photo(void * buf, uint32_t size, voice_msg_contact_t * contact); +void voice_msg_enlarge_photo(void * small_photo); +void app_adaptor_voice_msg_handle_rcv_ind(app_adaptor_voice_msg_t * msg); +void app_adaptor_voice_msg_handle_send_cnf(watch_app_adp_voice_msg_result_t result); + void * para); + + +/*extern phone api*/ +bool phone_is_monitor_on(void); + +#endif + + +#endif + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/2.sdk/gui/lv_watch/lv_apps/wechat/wechat_ui.c b/2.sdk/gui/lv_watch/lv_apps/wechat/wechat_ui.c new file mode 100644 index 00000000..c3efb71f --- /dev/null +++ b/2.sdk/gui/lv_watch/lv_apps/wechat/wechat_ui.c @@ -0,0 +1,1620 @@ + + + +/********************* +* INCLUDES +*********************/ +#include "lv_watch.h" + +#ifdef __MMI_WECHAT_SUPPORT__ + + + +static lv_signal_cb_t ancient_scrl_signal; + +static uint8_t s_wechat_msg_init_flag = 0; +static nv_watch_wechat_msg_info_t * s_wechat_msg_info = NULL; +static nv_watch_wechat_msg_item_info_t s_wechat_msg_item_info = {0}; +static uint8_t s_wechat_play_anim_count = 0; +char s_wechat_selected_item_index = -1; + + + +#ifdef __WECHAT_DEBUG__ +bool mmi_protocol_action_talk(char * file_buf) +{ + //for debug + + return true; +} +#endif + + +void wechat_msg_info_nv_write(void) +{ + uint32_t nv_data_length = sizeof(nv_watch_wechat_msg_info_t); + + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, NV_SECTION_UI_WEHAT_MSG); + + if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_WEHAT_MSG, 0, nv_data_length, (uint8_t *)s_wechat_msg_info)) + { + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: NV_SECTION_UI_WEHAT_MSG write fail\n", __FUNCTION__, __LINE__); + } +} + +void wechat_msg_info_init(void) +{ + if(0 == s_wechat_msg_init_flag) + { + uint32_t nv_data_length = sizeof(nv_watch_wechat_msg_info_t); + + s_wechat_msg_info = (nv_watch_wechat_msg_info_t *)lv_mem_alloc(nv_data_length); + if(NULL == s_wechat_msg_info) + { + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: memory alloc fail\n", __FUNCTION__, __LINE__); + return; + } + _lv_memset_00(s_wechat_msg_info, nv_data_length); + + if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_WEHAT_MSG, 0, nv_data_length, (uint8_t *)s_wechat_msg_info)) + { + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: NV_SECTION_UI_WEHAT_MSG read fail\n", __FUNCTION__, __LINE__); + //lv_mem_free(s_wechat_msg_info); + //s_wechat_msg_info = NULL; + } + + s_wechat_msg_init_flag = 1; + } +} + +uint8_t wechat_msg_info_count_get(void) +{ + uint8_t msg_count = s_wechat_msg_info->msg_count; + + return msg_count; +} + +uint8_t wechat_msg_info_index_item_msg_from_get(uint8_t msg_index) +{ + // 0-slef; 1-other + uint8_t msg_from = s_wechat_msg_info->msg_item[msg_index].msg_from; + + return msg_from; +} + +void wechat_msg_info_index_item_get(uint8_t msg_index, nv_watch_wechat_msg_item_info_t ** msg_item) +{ + *msg_item = &(s_wechat_msg_info->msg_item[msg_index]); +} + +void wechat_msg_info_index_item_delete(uint8_t msg_index) +{ + if(msg_index >= s_wechat_msg_info->msg_count) + return; + + uint8_t i = 0; + uint32_t msg_item_info_size = sizeof(nv_watch_wechat_msg_item_info_t); + + lv_fs_remove(s_wechat_msg_info->msg_item[msg_index].msg_data_full_file_name); + _lv_memset_00(&(s_wechat_msg_info->msg_item[msg_index]), msg_item_info_size); + + if(msg_index < s_wechat_msg_info->msg_count - 1) + { + for(i = msg_index; i < s_wechat_msg_info->msg_count; i++) + { + _lv_memcpy(&(s_wechat_msg_info->msg_item[i]), &(s_wechat_msg_info->msg_item[i + 1]), msg_item_info_size); + } + } + s_wechat_msg_info->msg_count--; +} + +void wechat_msg_info_new_item_add(nv_watch_wechat_msg_item_info_t * msg_item) +{ + uint32_t msg_item_info_size = sizeof(nv_watch_wechat_msg_item_info_t); + + if(NV_WATCH_WECHAT_NUM_MAX <= s_wechat_msg_info->msg_count) + { + lv_fs_remove(s_wechat_msg_info->msg_item[0].msg_data_full_file_name); + _lv_memset_00(&(s_wechat_msg_info->msg_item[0]), msg_item_info_size); + + uint8_t i = 0; + for(i = 0; i < NV_WATCH_WECHAT_NUM_MAX - 1; i++) + { + _lv_memcpy(&(s_wechat_msg_info->msg_item[i]), &(s_wechat_msg_info->msg_item[i + 1]), msg_item_info_size); + } + s_wechat_msg_info->msg_count--; + } + + s_wechat_msg_info->msg_count++; + _lv_memcpy(&(s_wechat_msg_info->msg_item[s_wechat_msg_info->msg_count - 1]), msg_item, msg_item_info_size); +} + +void * wechat_actId_ext_get(lv_watch_Activity_Id_t actId) +{ + lv_obj_t * activity_obj = lv_watch_get_activity_obj(actId); + if(NULL == activity_obj) + return NULL; + + lv_obj_t * obj = NULL; + lv_watch_get_child_obj(activity_obj, lv_watch_obj_signal, &obj); + if(NULL == obj) + return NULL; + + if(obj) + { + void * ext = lv_obj_get_ext_attr(obj); + return ext; + } + return NULL; +} + +void wechat_actId_screen_delete(lv_watch_Activity_Id_t act_id) +{ + lv_obj_t * activity_obj = lv_watch_get_activity_obj(act_id); + if(NULL == activity_obj) + return NULL; + + lv_watch_activity_ext_t * ext = lv_obj_get_ext_attr(activity_obj); + //LV_ASSERT_MEM(ext); + if(ext->prepare_destory) + { + ext->prepare_destory(activity_obj); + } + lv_obj_del(activity_obj); + + return; +} + +void wechat_common_screen_prepare_destory(lv_obj_t * activity_obj) +{ + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_watch_png_cache_all_free(); +} + +void wechat_prepare_destory(lv_obj_t * activity_obj) +{ + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_watch_png_cache_all_free(); + + wechat_msg_info_nv_write(); + + lv_wechat_ext_t * ext = wechat_actId_ext_get(ACT_ID_WECHAT_MAIN); + //LV_ASSERT_MEM(ext); + if(NULL == ext) + return ; + + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + if(WECHAT_CREATED_FROM_ALBUM == ext->from) + { + album_photo_share_flag_reset(); + } + else if(WECHAT_CREATED_FROM_IMGVIEWER == ext->from) + { + imgviewer_photo_share_flag_reset(); + } + + if(NULL != ext->delete_timer_id) + { + Hal_Timer_Stop(ext->delete_timer_id); + ext->delete_timer_id = NULL; + } + + wechat_msg_voice_item_playing_stop(ext); + wechat_chat_list_msg_item_style_reset(ext); + + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); +} + +void wechat_chat_list_set_slide_enable(lv_watch_obj_ext_t * ext, bool enable) +{ + if(enable) + { + ext->slide_enable = 1; /*enable to slide to the right*/ + } + else + { + ext->slide_enable = 0; /*disable to slide to the right*/ + } +} + +bool wechat_msg_voice_is_playing(void) +{ + bool result = false; + + lv_wechat_ext_t * ext = wechat_actId_ext_get(ACT_ID_WECHAT_MAIN); + if(NULL != ext && NULL != ext->list) + { + lv_wechat_msg_list_ext_t * list_page_ext = lv_obj_get_ext_attr(ext->list); + if(NULL != list_page_ext->voice_playing_anim.var) + { + result = true; + } + } + + return result; +} + +bool wechat_msg_voice_is_recording(void) +{ + bool result = false; + + if(lv_watch_get_activity_obj(ACT_ID_WECHAT_RECORDING)) + { + result = true; + } + + return result; +} + +void wechat_receive_audio_play_audio_ctrl_callback(AUDIO_CTRL_PRIORITY priority) +{ + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: priority=%d\n", __FUNCTION__, __LINE__, priority); + + if(AUDIO_CTRL_PRIORITY_5 == priority) + { + + } + else if(AUDIO_CTRL_PRIORITY_5 > priority) + { + Hal_NFFS_File_Play_End(); + Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_5); + } +} + +void wechat_receive_audio_play_over_cb(void *para) +{ + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + Hal_NFFS_File_Play_End(); + Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_5); +} + +void wechat_msg_receive_from_server(nv_watch_wechat_msg_item_info_t * wechat_msg_item_info) +{ + wechat_msg_info_new_item_add(wechat_msg_item_info); + + if(false == wechat_msg_voice_is_playing() && false == wechat_msg_voice_is_recording()) + { + //prompt + if(AUDIO_CTRL_PRIORITY_5 == Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_5, wechat_receive_audio_play_audio_ctrl_callback)) + { + Hal_NFFS_File_Play_Onetime(AUDIO_WECHAT_RECEIVE, (HAL_SPEAKER_GAIN)query_current_volume(), wechat_receive_audio_play_over_cb, 0); + } + + Hal_Vibrator_Play_Onetime(NULL, 1000); + + if(lv_watch_get_activity_obj(ACT_ID_WECHAT_MAIN)) + { + wechat_main_screen_refresh(); + } + } +} + +bool wechat_msg_send_to_server(void) +{ + bool result = false; // true-success; false-fail + lv_fs_file_t file_p; + lv_fs_res_t res; + uint32_t file_size = 0, bytes_read = 0; + char * file_buf = NULL; + + res = lv_fs_open(&file_p, s_wechat_msg_item_info.msg_data_full_file_name, LV_FS_MODE_RD); + if(LV_FS_RES_OK != res) + { + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: errno=%d\n", __FUNCTION__, __LINE__, res); + lv_fs_close(&file_p); + + return false; + } + + lv_fs_size(&file_p, &file_size); + file_buf = lv_mem_alloc(file_size + 1); + _lv_memset_00(file_buf, file_size + 1); + res = lv_fs_read(&file_p, file_buf, file_size, &bytes_read); + lv_fs_close(&file_p); + if(LV_FS_RES_OK != res) + { + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: errno=%d\n", __FUNCTION__, __LINE__, res); + + result = false; + } + else + { + if(true == mmi_protocol_action_talk(file_buf)) + { + wechat_msg_info_new_item_add(&s_wechat_msg_item_info); + result = true; + } + else + { + lv_fs_remove(s_wechat_msg_item_info.msg_data_full_file_name); + result = false; + } + } + lv_mem_free(file_buf); + _lv_memset_00(&s_wechat_msg_item_info, sizeof(nv_watch_wechat_msg_item_info_t)); + + return result; +} + +void wechat_msg_item_delete_success_timer_cb(void *para) +{ + lv_wechat_ext_t * ext = (lv_wechat_ext_t *)para; + + if(NULL != ext->delete_timer_id) + { + Hal_Timer_Stop(ext->delete_timer_id); + ext->delete_timer_id = NULL; + } + + lv_obj_del(ext->delete_bg); + wechat_main_screen_refresh(); +} + +void wechat_msg_item_delete_ok_btn_event_cb(lv_obj_t * obj, lv_event_t e) +{ + if(LV_EVENT_CLICKED == e) + { + lv_wechat_ext_t * ext = (lv_wechat_ext_t *)wechat_actId_ext_get(ACT_ID_WECHAT_MAIN); + if(NULL != ext && NULL != ext->delete_bg) + { + lv_obj_clean(ext->delete_bg); + + //lv_obj_t * img = lv_img_create(ext->delete_bg, NULL); + //lv_img_set_src(img, ICON_COMMON_SUCCESS); + //lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, LV_VER_RES / 4); + + lv_obj_t * label_prompt = lv_label_create(ext->delete_bg, NULL); + lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font30_black); + lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_DEL_SUCCESS); + lv_obj_align(label_prompt, ext->delete_bg, LV_ALIGN_CENTER, 0, -30); + + wechat_msg_info_index_item_delete(s_wechat_selected_item_index); + + ext->delete_timer_id = Hal_Timer_Start(1000 * 2, wechat_msg_item_delete_success_timer_cb, ext, false); + } + } +} + +void wechat_msg_item_delete_cancel_btn_event_cb(lv_obj_t * obj, lv_event_t e) +{ + if(LV_EVENT_CLICKED == e) + { + lv_wechat_ext_t * ext = (lv_wechat_ext_t *)wechat_actId_ext_get(ACT_ID_WECHAT_MAIN); + if(NULL != ext && NULL != ext->delete_bg) + { + lv_obj_del(ext->delete_bg); + } + } +} + +void wechat_chat_list_msg_item_delete_create(void) +{ + lv_wechat_ext_t * ext = (lv_wechat_ext_t *)wechat_actId_ext_get(ACT_ID_WECHAT_MAIN); + if(NULL != ext && NULL != ext->cont) + { + ext->delete_bg = lv_cont_create(ext->cont, NULL); + + lv_obj_set_size(ext->delete_bg, LV_HOR_RES, LV_VER_RES); + lv_obj_set_style_local_bg_color(ext->delete_bg, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0xB6, 0xF7, 0xFF)); + + lv_obj_t * label_prompt = lv_label_create(ext->delete_bg, NULL); + lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font30_black); + lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_DEL_Q); + lv_obj_align(label_prompt, ext->delete_bg, LV_ALIGN_CENTER, 0, -30); + + lv_obj_t * btn_cancel = lv_btn_create(ext->delete_bg, NULL); + lv_obj_set_size(btn_cancel, 100, 56); + lv_obj_set_style_local_bg_color(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0x47, 0xA6, 0xFF)); + lv_obj_set_style_local_radius(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 30); + lv_obj_set_style_local_bg_color(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_PRESSED, lv_color_make(0x47, 0xA6, 0xFF)); + lv_obj_set_style_local_radius(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_PRESSED, 30); + lv_obj_align(btn_cancel, NULL, LV_ALIGN_IN_BOTTOM_LEFT, 10, -20); + lv_obj_set_event_cb(btn_cancel, wechat_msg_item_delete_cancel_btn_event_cb); + + lv_obj_t * label_cancel = lv_label_create(btn_cancel, NULL); + lv_obj_add_style(label_cancel, LV_LABEL_PART_MAIN, &lv_watch_font30); + lv_label_set_text_id(label_cancel, WATCH_TEXT_ID_CANCEL); + + lv_obj_t * btn_ok = lv_btn_create(ext->delete_bg, btn_cancel); + lv_obj_set_style_local_bg_color(btn_ok, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0xFF, 0x6F, 0x91)); + lv_obj_set_style_local_radius(btn_ok, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 30); + lv_obj_set_style_local_bg_color(btn_ok, LV_BTN_PART_MAIN, LV_STATE_PRESSED, lv_color_make(0xFF, 0x6F, 0x91)); + lv_obj_set_style_local_radius(btn_ok, LV_BTN_PART_MAIN, LV_STATE_PRESSED, 30); + lv_obj_align(btn_ok, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, -10, -20); + lv_obj_set_event_cb(btn_ok, wechat_msg_item_delete_ok_btn_event_cb); + + lv_obj_t * label_ok = lv_label_create(btn_ok, label_cancel); + lv_label_set_text_id(label_ok, WATCH_TEXT_ID_OK); + } +} + +void wechat_msg_sending_anim_cb(lv_anim_t * a) +{ + lv_obj_t * img = a->var; + + switch(s_wechat_play_anim_count % 3) + { + case 0: + lv_img_set_src(img, ICON_WECHAT_SENDING_PROMPT1); + break; + + case 1: + lv_img_set_src(img, ICON_WECHAT_SENDING_PROMPT2); + break; + + case 2: + lv_img_set_src(img, ICON_WECHAT_SENDING_PROMPT3); + break; + + default: + break; + } + s_wechat_play_anim_count++; +} + +void wechat_msg_sending_result_screen_timeout(void *para) +{ + lv_wechat_msg_sending_ext_t * sending_ext = (lv_wechat_msg_sending_ext_t *)para; + + if(NULL != sending_ext->result_timer_id) + { + Hal_Timer_Stop(sending_ext->result_timer_id); + sending_ext->result_timer_id = NULL; + } + + //delete sending screen + lv_watch_del_interface(ACT_ID_WECHAT_SENDING); + //return main list screen + wechat_main_screen_refresh(); +} + +void wechat_msg_sending_screen_timeout(void *para) +{ + lv_wechat_msg_sending_ext_t * sending_ext = (lv_wechat_msg_sending_ext_t *)para; + + if(NULL != sending_ext->sending_timer_id) + { + Hal_Timer_Stop(sending_ext->sending_timer_id); + sending_ext->sending_timer_id = NULL; + } + + if(NULL != sending_ext->sending_anim.var) + { + lv_obj_t * img_bkg = lv_obj_get_parent(sending_ext->sending_anim.var); + lv_img_set_src(img_bkg, ((true == sending_ext->send_result) ? ICON_WECHAT_SENDING_SUCC : ICON_WECHAT_SENDING_FAILED)); + + lv_anim_del(sending_ext->sending_anim.var, NULL); + lv_obj_del(sending_ext->sending_anim.var); + sending_ext->sending_anim.var = NULL; + } + + sending_ext->result_timer_id = Hal_Timer_Start(1000 * 2, wechat_msg_sending_result_screen_timeout, sending_ext, FALSE); +} + +void wechat_msg_sending_screen_prepare_destory(lv_obj_t * activity_obj) +{ + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_watch_png_cache_all_free(); + + lv_wechat_msg_sending_ext_t * sending_ext = (lv_wechat_msg_sending_ext_t *)wechat_actId_ext_get(ACT_ID_WECHAT_SENDING); + if(NULL != sending_ext) + { + if(NULL != sending_ext->sending_timer_id) + { + Hal_Timer_Stop(sending_ext->sending_timer_id); + sending_ext->sending_timer_id = NULL; + } + if(NULL != sending_ext->result_timer_id) + { + Hal_Timer_Stop(sending_ext->result_timer_id); + sending_ext->result_timer_id = NULL; + } + + if(NULL != sending_ext->sending_anim.var) + { + lv_anim_del(sending_ext->sending_anim.var, NULL); + sending_ext->sending_anim.var = NULL; + } + } +} + +lv_obj_t * wechat_msg_sending_screen_create(lv_obj_t * activity_obj) +{ + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + if(NULL == activity_obj) + { + lv_watch_activity_ext_t activity_ext = {0}; + + activity_ext.actId = ACT_ID_WECHAT_SENDING; + activity_ext.create = wechat_msg_sending_screen_create; + activity_ext.prepare_destory = wechat_msg_sending_screen_prepare_destory; + activity_obj = lv_watch_creat_activity_obj(&activity_ext); + LV_ASSERT_MEM(activity_obj); + } + + lv_obj_t * obj = lv_watch_obj_create(activity_obj); + LV_ASSERT_MEM(obj); + + lv_wechat_msg_sending_ext_t * sending_ext = (lv_wechat_msg_sending_ext_t *)lv_obj_allocate_ext_attr(obj, sizeof(lv_wechat_msg_sending_ext_t)); + LV_ASSERT_MEM(sending_ext); + sending_ext->send_result = wechat_msg_send_to_server(); + sending_ext->sending_timer_id = Hal_Timer_Start(1000 * 3, wechat_msg_sending_screen_timeout, sending_ext, FALSE); + + lv_obj_t * img_bkg = lv_img_create(obj, NULL); + lv_img_set_src(img_bkg, ICON_WECHAT_SENDING_BG); + lv_obj_align(img_bkg, obj, LV_ALIGN_CENTER, 0, 0); + + lv_obj_t * img_sending = lv_img_create(img_bkg, NULL); + lv_img_set_src(img_sending, ICON_WECHAT_SENDING_PROMPT3); + lv_obj_align(img_sending, img_bkg, LV_ALIGN_IN_BOTTOM_MID, 0, -20); + + lv_anim_t * a = &(sending_ext->sending_anim); + lv_anim_init(a); + lv_anim_set_var(a, img_sending); + //lv_anim_set_exec_cb(a, (lv_anim_exec_xcb_t)wechat_msg_sending_anim_exec_cb); + lv_anim_set_start_cb(a, (lv_anim_ready_cb_t)wechat_msg_sending_anim_cb); + lv_anim_set_repeat_count(a, LV_ANIM_REPEAT_INFINITE); + lv_anim_set_repeat_delay(a, 500); + lv_anim_start(a); + s_wechat_play_anim_count = 0; + + return obj; +} + +void wechat_msg_recording_release_event_cb(lv_obj_t * obj, lv_event_t e) +{ + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: event=%d\n", __FUNCTION__, __LINE__, e); + +#if 0 + if(LV_EVENT_RELEASED == e) //(LV_EVENT_CLICKED == e) + { + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_watch_del_interface(ACT_ID_WECHAT_RECORDING); + wechat_msg_sending_screen_create(NULL); + } +#endif +} + +void wechat_msg_recording_anim(lv_anim_t * a) +{ + lv_obj_t * img = a->var; + + switch(s_wechat_play_anim_count % 5) + { + case 0: + lv_img_set_src(img, ICON_WECHAT_RECORDING1); + break; + case 1: + lv_img_set_src(img, ICON_WECHAT_RECORDING2); + break; + case 2: + lv_img_set_src(img, ICON_WECHAT_RECORDING3); + break; + case 3: + lv_img_set_src(img, ICON_WECHAT_RECORDING4); + break; + case 4: + lv_img_set_src(img, ICON_WECHAT_RECORDING5); + break; + default: + break; + } + s_wechat_play_anim_count++; + + if(0 == (s_wechat_play_anim_count % 4)) + { + lv_wechat_msg_recording_ext_t * recording_ext = (lv_wechat_msg_recording_ext_t *)wechat_actId_ext_get(ACT_ID_WECHAT_RECORDING); + if(NULL == recording_ext) + return; + + int8_t count_down = WECHAT_MSG_DATA_RECORD_DURATION_MAX - s_wechat_play_anim_count / 4; + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: count down=%d\n", __FUNCTION__, __LINE__, count_down); + + if(0 == count_down) + { + Hal_File_Record_Stop_Req(&(recording_ext->file_size)); + recording_ext->file_size = 0; + Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_5); + + //wechat_chat_list_set_slide_enable(&ext->old_ext, true); /*reset slide_enable at the end of recording*/ + lv_watch_del_interface(ACT_ID_WECHAT_RECORDING); + wechat_msg_sending_screen_create(NULL); + } + else + { + const char * content = lv_lang_get_text(WATCH_TEXT_ID_RELEASE_SENDING); + uint8_t len = strlen(content) + 8; + char * text = (char *)lv_mem_alloc(len); + snprintf(text, len, "%s %d", content, count_down); + lv_label_set_text(recording_ext->label, text); + lv_mem_free(text); + lv_obj_align(recording_ext->label, img, LV_ALIGN_OUT_BOTTOM_MID, 0, 6); + } + } +} + +void wechat_msg_same_priority_task_end(void) +{ +#if 0 + bool wakeup = false; + + if(wakeup) + { + if(0 == Hal_Pm_Get_State()) + { + Hal_Pm_WakeUp(); + watch_set_lcd_status(true); + } + else + { + watch_set_lcd_status(true); + watch_wakeup_time_reset(); + } + } +#endif +} + +void wechat_msg_recording_audio_ctrl_callback(AUDIO_CTRL_PRIORITY priority) +{ + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: priority=%d\n", __FUNCTION__, __LINE__, priority); + + if(AUDIO_CTRL_PRIORITY_5 == priority) + { + if(false == watch_is_ready()) + { + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + return; + } + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + //wechat_msg_same_priority_task_end(); + } + else if(AUDIO_CTRL_PRIORITY_5 > priority) + { + lv_wechat_msg_recording_ext_t * recording_ext = (lv_wechat_msg_recording_ext_t *)wechat_actId_ext_get(ACT_ID_WECHAT_RECORDING); + if(NULL != recording_ext) + { + Hal_File_Record_Stop_Req(&(recording_ext->file_size)); + recording_ext->file_size = 0; + } + Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_5); + + lv_watch_del_interface(ACT_ID_WECHAT_RECORDING); + + lv_wechat_ext_t * ext = wechat_actId_ext_get(ACT_ID_WECHAT_MAIN); + if(NULL != ext) + { + wechat_chat_list_set_slide_enable(&ext->old_ext, false); /*prevent to slide out while recording*/ + } + } +} + +void wechat_msg_recording_cb(MCI_EVNET_T event , MCI_INFO_T info_type, int32_t value) +{ + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: event=%d\n", __FUNCTION__, __LINE__, event); + + lv_wechat_ext_t * ext = (lv_wechat_ext_t *)wechat_actId_ext_get(ACT_ID_WECHAT_MAIN); + if(NULL == ext) + return ; + + if(0 == ext->old_ext.element_click_en) + { + /*sliding to the right, not click button*/ + return; + } + + wechat_chat_list_set_slide_enable(&ext->old_ext, false); /*prevent to slide out while recording*/ + + switch(ext->event) + { + case MCI_EVENT_EOS: + wechat_chat_list_set_slide_enable(&ext->old_ext, true); /*reset slide_enable at the end of recording*/ + lv_watch_del_interface(ACT_ID_WECHAT_RECORDING); + wechat_msg_sending_screen_create(NULL); + break; + + case MCI_EVENT_ERROR: + lv_wechat_msg_recording_ext_t * recording_ext = (lv_wechat_msg_recording_ext_t *)wechat_actId_ext_get(ACT_ID_WECHAT_RECORDING); + if(NULL != recording_ext) + { + Hal_File_Record_Stop_Req(&(recording_ext->file_size)); + recording_ext->file_size = 0; + } + Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_5); + lv_fs_remove(s_wechat_msg_item_info.msg_data_full_file_name); + lv_watch_del_interface(ACT_ID_WECHAT_RECORDING); + wechat_chat_list_set_slide_enable(&ext->old_ext, true); /*reset slide_enable at the end of recording*/ + break; + + case MCI_EVENT_INFO: + break; + + default: + break; + } +} + +void wechat_msg_recording_screen_create(void) +{ + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_watch_activity_ext_t activity_ext = {0}; + + activity_ext.actId = ACT_ID_WECHAT_RECORDING; + activity_ext.create = NULL; + activity_ext.prepare_destory = wechat_common_screen_prepare_destory; + lv_obj_t * activity_obj = lv_watch_creat_activity_obj(&activity_ext); + LV_ASSERT_MEM(activity_obj); + + lv_obj_t * obj = lv_watch_obj_create(activity_obj); + LV_ASSERT_MEM(obj); + + lv_wechat_msg_recording_ext_t * recording_ext = lv_obj_allocate_ext_attr(obj, sizeof(lv_wechat_msg_recording_ext_t)); + LV_ASSERT_MEM(recording_ext); + + lv_obj_t * cont = lv_cont_create(obj, NULL); + lv_obj_set_size(cont, lv_obj_get_width(obj), lv_obj_get_height(obj)); + lv_obj_align(cont, obj, LV_ALIGN_CENTER, 0, 0); + lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(194, 252, 252)); + lv_obj_set_click(cont, true); + lv_obj_set_event_cb(cont, wechat_msg_recording_release_event_cb); + lv_obj_add_protect(cont, LV_PROTECT_PRESS_LOST); + + lv_obj_t * img = lv_img_create(cont, NULL); + lv_img_set_src(img, ICON_WECHAT_RECORDING1); + lv_obj_align(img, cont, LV_ALIGN_IN_TOP_MID, 0, 36); + + recording_ext->label = lv_label_create(cont, NULL); + lv_obj_add_style(recording_ext->label, LV_LABEL_PART_MAIN, &lv_watch_font20_black); + const char * rel_snd = lv_lang_get_text(WATCH_TEXT_ID_RELEASE_SENDING); + uint8_t len = strlen(rel_snd) + 4; + char * text = (char *)lv_mem_alloc(len); + snprintf(text, len, "%s %d", rel_snd, WECHAT_MSG_DATA_RECORD_DURATION_MAX); + lv_label_set_text(recording_ext->label, text); + lv_mem_free(text); + lv_obj_align(recording_ext->label, img, LV_ALIGN_OUT_BOTTOM_MID, 0, 6); + + lv_obj_t * img_release_snd = lv_img_create(cont, NULL); + lv_img_set_src(img_release_snd, ICON_WECHAT_RECORD_BUTTON_PRESSED); + lv_obj_align(img_release_snd, cont, LV_ALIGN_IN_BOTTOM_MID, 0, -8); + + lv_anim_t a; + lv_anim_init(&a); + lv_anim_set_var(&a, img); + lv_anim_set_start_cb(&a, (lv_anim_ready_cb_t)wechat_msg_recording_anim); + lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE); + lv_anim_set_time(&a, 249); + lv_anim_start(&a); + s_wechat_play_anim_count = 0; + + lv_obj_t * label_warning = lv_label_create(cont, NULL); + lv_obj_set_style_local_text_font(label_warning, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_THEME_WATCH_NIGHT_FONT_SMALL); + lv_obj_set_style_local_text_color(label_warning, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_RED); + //lv_label_set_long_mode(label_warning, LV_LABEL_LONG_BREAK); + //lv_obj_set_width(label_warning, lv_obj_get_width(obj) * 2 / 3); + lv_label_set_text_id(label_warning, WATCH_TEXT_ID_SLIDE_UP_WARNING); + lv_label_set_align(label_warning, LV_LABEL_ALIGN_CENTER); + lv_obj_align(label_warning, cont, LV_ALIGN_IN_TOP_MID, 0, 8); + + //fill info + _lv_memset_00(&s_wechat_msg_item_info, sizeof(nv_watch_wechat_msg_item_info_t)); +#if 0 + //system crashed. unknown reason //20230327 + Hal_Rtc_Gettime(&(s_wechat_msg_item_info.msg_time)); +#else + hal_rtc_t cur_time; + Hal_Rtc_Gettime(&cur_time); + s_wechat_msg_item_info.msg_time.tm_year = cur_time.tm_year; + s_wechat_msg_item_info.msg_time.tm_mon = cur_time.tm_mon; + s_wechat_msg_item_info.msg_time.tm_mday = cur_time.tm_mday; + s_wechat_msg_item_info.msg_time.tm_hour = cur_time.tm_hour; + s_wechat_msg_item_info.msg_time.tm_min = cur_time.tm_min; + s_wechat_msg_item_info.msg_time.tm_sec = cur_time.tm_sec; +#endif + s_wechat_msg_item_info.msg_type = WECHAT_MSG_TYPE_VOICE; + sprintf(s_wechat_msg_item_info.msg_data_full_file_name, "C:/wechat_%04d%02d%02d_%02d%02d%02d", /*WECHAT_MSG_DATA_FILE_PATH, */ + s_wechat_msg_item_info.msg_time.tm_year, s_wechat_msg_item_info.msg_time.tm_mon, s_wechat_msg_item_info.msg_time.tm_mday, + s_wechat_msg_item_info.msg_time.tm_hour, s_wechat_msg_item_info.msg_time.tm_min, s_wechat_msg_item_info.msg_time.tm_sec); + + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: msg_from=%d, file_name=%s\n", __FUNCTION__, __LINE__, + s_wechat_msg_item_info.msg_from, s_wechat_msg_item_info.msg_data_full_file_name); + + //recording + if(AUDIO_CTRL_PRIORITY_5 == Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_5, wechat_msg_recording_audio_ctrl_callback)) + { + Hal_File_Record_Start_Req(s_wechat_msg_item_info.msg_data_full_file_name, wechat_msg_recording_cb); + } + + return; +} + +void wechat_msg_record_button_event_cb(lv_obj_t * obj, lv_event_t e) +{ + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: event=%d\n", __FUNCTION__, __LINE__, e); + + if(LV_EVENT_LONG_PRESSED == e) + { + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_wechat_ext_t * ext = wechat_actId_ext_get(ACT_ID_WECHAT_MAIN); + if(NULL == ext) + return ; + + if(0 == ext->old_ext.element_click_en) + { + /*sliding to the right, not click button*/ + return; + } + + wechat_chat_list_set_slide_enable(&ext->old_ext, false); /*prevent to slide out while recording*/ + + wechat_msg_voice_item_playing_stop(ext); + wechat_msg_recording_screen_create(); + } + else if(LV_EVENT_CLICKED == e || LV_EVENT_PRESS_LOST == e) + { + if(lv_watch_get_activity_obj(ACT_ID_WECHAT_RECORDING)) + { + lv_wechat_ext_t * ext = wechat_actId_ext_get(ACT_ID_WECHAT_MAIN); + if(NULL == ext) + return ; + + lv_wechat_msg_recording_ext_t * recording_ext = (lv_wechat_msg_recording_ext_t *)wechat_actId_ext_get(ACT_ID_WECHAT_RECORDING); + if(NULL == recording_ext) + return NULL; + + wechat_chat_list_set_slide_enable(&ext->old_ext, true); /*reset slide_enable at the end of recording*/ + + lv_indev_t * indev = lv_indev_get_act(); + if(indev) + { + lv_coord_t point_y = indev->proc.types.pointer.last_point.y; + lv_coord_t img_record_top = obj->coords.y1; + if(point_y < (img_record_top - 20)) + { + /*last point is above img, consider as sliding up and cancel recording*/ + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: indev_y=%d, img_y=%d\n", __FUNCTION__, __LINE__, point_y, img_record_top); + + Hal_File_Record_Stop_Req(&(recording_ext->file_size)); + recording_ext->file_size = 0; + Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_5); + lv_fs_remove(s_wechat_msg_item_info.msg_data_full_file_name); + lv_watch_del_interface(ACT_ID_WECHAT_RECORDING); + //return main list screen + wechat_main_screen_refresh(); + + return; + } + } + + Hal_File_Record_Stop_Req(&(recording_ext->file_size)); + recording_ext->file_size = 0; + Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_5); + lv_watch_del_interface(ACT_ID_WECHAT_RECORDING); + wechat_msg_sending_screen_create(NULL); + } + } + else if(LV_EVENT_PRESSED == e) + { + lv_wechat_ext_t * ext = wechat_actId_ext_get(ACT_ID_WECHAT_MAIN); + if(NULL == ext) + return ; + + wechat_msg_voice_item_playing_stop(ext); + } +} + +void wechat_msg_voice_item_playing_stop(lv_wechat_ext_t * ext) +{ + if(NULL == ext || NULL == ext->list) + return; + + lv_wechat_msg_list_ext_t * list_page_ext = lv_obj_get_ext_attr(ext->list); + if(NULL == list_page_ext) + return; + + if(NULL != list_page_ext->voice_playing_anim.var) + { + lv_obj_t * bubble_img = lv_obj_get_parent(list_page_ext->voice_playing_anim.var); + + Hal_File_Play_End(); + Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_5); + + lv_anim_del(list_page_ext->voice_playing_anim.var, NULL); + list_page_ext->voice_playing_anim.var = NULL; + + uint8_t msg_from = wechat_msg_info_index_item_msg_from_get(s_wechat_selected_item_index); + lv_img_set_src(list_page_ext->voice_playing_anim.var, (0 == msg_from) ? ICON_WECHAT_MY_VOICE_ITEM_PLAYING3 : ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING3); + } +} + +void wechat_chat_list_msg_item_style_reset(lv_wechat_ext_t * ext) +{ + if(NULL == ext || NULL == ext->list) + return; + + lv_wechat_msg_list_ext_t * list_page_ext = lv_obj_get_ext_attr(ext->list); + if(NULL == list_page_ext) + return; + + lv_style_reset(&(list_page_ext->style_cont)); + lv_style_reset(&(list_page_ext->style_label_time)); + lv_style_reset(&(list_page_ext->style_text)); + lv_style_reset(&(list_page_ext->style_label_len_other)); + lv_style_reset(&(list_page_ext->style_label_len_ui)); +} + +void wechat_chat_list_msg_item_time(char * time_str, hal_rtc_t * cur_time, hal_rtc_t * msg_time, hal_rtc_t * last_msg_time) +{ + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + if(0 == last_msg_time->tm_year) + { + sprintf(time_str, "%d/%d/%d %02d:%02d", msg_time->tm_year, msg_time->tm_mon, msg_time->tm_mday, + msg_time->tm_hour, msg_time->tm_min); + + return; + } + + uint32_t msg_sec = time_to_seconds(msg_time); + uint32_t last_msg_sec = time_to_seconds(last_msg_time); + if(msg_sec < last_msg_sec) + { + sprintf(time_str, "%d/%d/%d %02d:%02d", msg_time->tm_year, msg_time->tm_mon, + msg_time->tm_mday, msg_time->tm_hour, msg_time->tm_min); + } + else if(msg_sec > (last_msg_sec + WECHAT_MSG_CHAT_TIME_INTERVAL)) + { + uint32_t cur_sec = time_to_seconds(cur_time); + if((msg_sec > cur_sec) || (msg_time->tm_year < cur_time->tm_year)) + { + sprintf(time_str, "%d/%d/%d %02d:%02d", msg_time->tm_year, msg_time->tm_mon, + msg_time->tm_mday, msg_time->tm_hour, msg_time->tm_min); + } + else + { + uint32_t today_sec = cur_sec - cur_time->tm_hour * 3600 - cur_time->tm_min * 60 - cur_time->tm_sec; + + if(msg_sec >= today_sec) + { + /*today*/ + sprintf(time_str, "%02d:%02d", msg_time->tm_hour, msg_time->tm_min); + } + else if(msg_sec >= (today_sec - 24 * 3600)) + { + /*yesterday*/ + const char * yesterday = lv_lang_get_text(WATCH_TEXT_ID_YESTERDAY); + + sprintf(time_str, "%s %02d:%02d", yesterday, msg_time->tm_hour, msg_time->tm_min); + } + else + { + uint8_t wday; + if(0 == cur_time->tm_wday) + { + /*today is Sunday*/ + wday = 6; + } + else + { + wday = cur_time->tm_wday - 1; + } + /*the start of a week is monday, the end is sunday*/ + if(msg_sec >= (today_sec - wday * 24 * 3600)) { + /*current week before yesterday*/ + const char * wday_str; + switch(rtc_calc_weekday(msg_time)) + { + case 1: + /*Monday*/ + wday_str = lv_lang_get_text(WATCH_TEXT_ID_MONDAY); + break; + case 2: + /*Tuesday*/ + wday_str = lv_lang_get_text(WATCH_TEXT_ID_TUESDAY); + break; + case 3: + /*Wednesday*/ + wday_str = lv_lang_get_text(WATCH_TEXT_ID_WEDNESDAY); + break; + case 4: + /*Thursday*/ + wday_str = lv_lang_get_text(WATCH_TEXT_ID_THURSDAY); + break; + case 5: + /*Friday*/ + wday_str = lv_lang_get_text(WATCH_TEXT_ID_FRIDAY); + break; + default: + printf("%s: week error\n", __FUNCTION__); + break; + } + + sprintf(time_str, "%s %02d:%02d", wday_str, msg_time->tm_hour, msg_time->tm_min); + } + else + { + sprintf(time_str, "%d/%d %02d:%02d", msg_time->tm_mon, msg_time->tm_mday, msg_time->tm_hour, msg_time->tm_min); + } + } + } + } +} + +void wechat_chat_list_voice_item_playing_anim_cb(lv_anim_t * a) +{ + lv_obj_t * play_img = (lv_obj_t *)a->var; + uint8_t msg_from = wechat_msg_info_index_item_msg_from_get(s_wechat_selected_item_index); + + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: msg_from=%d\n", __FUNCTION__, __LINE__, msg_from); + + switch(s_wechat_play_anim_count % 3) + { + case 0: + lv_img_set_src(play_img, ((0 == msg_from) ? ICON_WECHAT_MY_VOICE_ITEM_PLAYING1 : ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING1)); + break; + + case 1: + lv_img_set_src(play_img, ((0 == msg_from) ? ICON_WECHAT_MY_VOICE_ITEM_PLAYING2 : ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING2)); + break; + + case 2: + lv_img_set_src(play_img, ((0 == msg_from) ? ICON_WECHAT_MY_VOICE_ITEM_PLAYING3 : ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING3)); + break; + + default: + break; + } + s_wechat_play_anim_count++; +} + +void wechat_chat_list_voice_item_playing_audio_ctrl_callback(AUDIO_CTRL_PRIORITY priority) +{ + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: priority=%d\n", __FUNCTION__, __LINE__, priority); + + if(AUDIO_CTRL_PRIORITY_5 == priority) + { + if(false == watch_is_ready()) + { + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + return; + } + + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + //wechat_msg_same_priority_task_end(); + } + else if(AUDIO_CTRL_PRIORITY_5 > priority) + { + lv_wechat_ext_t * ext = wechat_actId_ext_get(ACT_ID_WECHAT_MAIN); + if(NULL != ext) + { + wechat_chat_list_set_slide_enable(&ext->old_ext, false); /*prevent to slide out while recording*/ + wechat_msg_voice_item_playing_stop(ext); + } + } +} + +void wechat_chat_list_voice_item_play_over_cb(void * para) +{ + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + Hal_File_Play_End(); + Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_5); + + lv_wechat_msg_list_ext_t * list_page_ext = (lv_wechat_msg_list_ext_t *)para; + + if(NULL == list_page_ext || NULL == list_page_ext->voice_playing_anim.var) + { + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + return; + } + + uint8_t msg_from = wechat_msg_info_index_item_msg_from_get(s_wechat_selected_item_index); + + lv_anim_del(list_page_ext->voice_playing_anim.var, NULL); + lv_img_set_src(list_page_ext->voice_playing_anim.var, ((0 == msg_from) ? ICON_WECHAT_MY_VOICE_ITEM_PLAYING3 : ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING3)); + list_page_ext->voice_playing_anim.var = NULL; +} + +void wechat_chat_list_voice_item_play_action(lv_wechat_msg_list_ext_t * list_page_ext, lv_obj_t * play_img, lv_obj_t * unread_img) +{ + //display ui + lv_anim_t * a = &(list_page_ext->voice_playing_anim); + + lv_anim_init(a); + lv_anim_set_var(a, play_img); + lv_anim_set_start_cb(a, (lv_anim_ready_cb_t)wechat_chat_list_voice_item_playing_anim_cb); + lv_anim_set_repeat_count(a, LV_ANIM_REPEAT_INFINITE); + lv_anim_set_time(a, 400); + lv_anim_start(a); + s_wechat_play_anim_count = 1; + + nv_watch_wechat_msg_item_info_t * msg_item = NULL; + wechat_msg_info_index_item_get(s_wechat_selected_item_index, &msg_item); + msg_item->unread_flag = 0; + if(NULL != unread_img) + { + lv_obj_del(unread_img); + } + + //play voice + if(AUDIO_CTRL_PRIORITY_5 == Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_5, wechat_chat_list_voice_item_playing_audio_ctrl_callback)) + { + Hal_File_Play_Onetime(msg_item->msg_data_full_file_name, query_current_volume(), wechat_chat_list_voice_item_play_over_cb, list_page_ext, 0); + } +} + +void wechat_chat_list_voice_item_event_cb(lv_obj_t * img, lv_event_t e) +{ + lv_wechat_msg_list_item_ext_t * list_item_ext = (lv_wechat_msg_list_item_ext_t *)lv_obj_get_ext_attr(img); + if(NULL == list_item_ext) + return; + + s_wechat_selected_item_index = list_item_ext->item_index; + + lv_obj_t * scrl = lv_obj_get_parent(img); + lv_obj_t * list_page = lv_obj_get_parent(scrl); + //lv_obj_t * scrl = lv_page_get_scrl(list_page); + + lv_wechat_msg_list_ext_t * list_page_ext = (lv_wechat_msg_list_ext_t *)lv_obj_get_ext_attr(list_page); + if(NULL == list_page_ext) + return; + + if(LV_EVENT_PRESSED == e) + { + list_page_ext->pressing = true; + } + else if((LV_EVENT_LONG_PRESSED == e) && (true == list_page_ext->pressing)) // delete msg item + { + list_page_ext->pressing = false; + + wechat_chat_list_msg_item_delete_create(); + } + else if((LV_EVENT_CLICKED == e) && (true == list_page_ext->pressing)) // playing voice msg + { + list_page_ext->pressing = false; + + lv_obj_t * play_img = lv_obj_get_child_back(img, NULL); + nv_watch_wechat_msg_item_info_t * msg_item = NULL; + wechat_msg_info_index_item_get(s_wechat_selected_item_index, &msg_item); + + if(NULL != list_page_ext->voice_playing_anim.var) // exist voice playing + { + lv_obj_t * old_img = list_page_ext->voice_playing_anim.var; + + //stop old item voice + Hal_File_Play_End(); + Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_5); + + lv_anim_del(list_page_ext->voice_playing_anim.var, NULL); + lv_img_set_src(list_page_ext->voice_playing_anim.var, ((0 == msg_item->msg_from) ? ICON_WECHAT_MY_VOICE_ITEM_PLAYING3 : ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING3)); + list_page_ext->voice_playing_anim.var = NULL; + + //play new item voice + if((play_img != old_img) && (NULL != msg_item->msg_data_full_file_name)) + { + wechat_chat_list_voice_item_play_action(list_page_ext, play_img, list_item_ext->unread_img); + } + } + else if(NULL != msg_item->msg_data_full_file_name) + { + wechat_chat_list_voice_item_play_action(list_page_ext, play_img, list_item_ext->unread_img); + } + } +} + +//display time & content +lv_obj_t * wechat_chat_list_msg_item_add(lv_obj_t * list_page, nv_watch_wechat_msg_item_info_t * msg_item, char * time_str, uint8_t i) +{ + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_obj_t * obj = NULL; + lv_wechat_msg_list_ext_t * list_page_ext = lv_obj_get_ext_attr(list_page); + lv_obj_t * scrl = lv_page_get_scrl(list_page); + lv_obj_t * last_obj = lv_obj_get_child(scrl, NULL); + lv_coord_t obj_h = lv_obj_get_style_pad_top(scrl, LV_STATE_DEFAULT); + + if(NULL != last_obj) + { + obj_h = lv_obj_get_y(last_obj) + lv_obj_get_height(last_obj) + lv_obj_get_style_pad_inner(scrl, LV_STATE_DEFAULT); + } + + if(0 != strlen(time_str)) + { + obj = lv_label_create(list_page, NULL); + + //lv_obj_set_base_dir(obj, LV_BIDI_DIR_LTR); + lv_label_set_text(obj, time_str); + lv_obj_add_style(obj, LV_LABEL_PART_MAIN, &list_page_ext->style_label_time); + lv_obj_align(obj, scrl, LV_ALIGN_IN_TOP_MID, 0, obj_h); + + last_obj = obj; + obj_h = lv_obj_get_y(last_obj) + lv_obj_get_height(last_obj) + lv_obj_get_style_pad_inner(scrl, LV_STATE_DEFAULT); + } + + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: msg_type=%d, file=%s, size=%d\n", __FUNCTION__, __LINE__, + msg_item->msg_type, msg_item->msg_data_full_file_name, msg_item->msg_data_size); + + switch(msg_item->msg_type) + { + case WECHAT_MSG_TYPE_VOICE: + obj = lv_img_create(list_page, NULL); + lv_wechat_msg_list_item_ext_t * list_item_ext = lv_obj_allocate_ext_attr(obj, sizeof(lv_wechat_msg_list_item_ext_t)); + list_item_ext->item_index = i; + list_item_ext->unread_img = NULL; + + lv_obj_t * play_img = lv_img_create(obj, NULL); + lv_obj_t * len_label = lv_label_create(obj, NULL); + uint32_t duration = 0; + + if(LV_FS_RES_OK != Hal_File_Get_AudioDurationTime((const char *)msg_item->msg_data_full_file_name, &duration)) + { + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: read file error. %s\n", __FUNCTION__, __LINE__, msg_item->msg_data_full_file_name); + } + else + { + duration = (duration + 999) / 1000; + } + + if(0 == duration) + { + /*invalid voice*/ + lv_img_set_src(play_img, ICON_WECHAT_VOICE_ITEM_DAMAGE); + lv_label_set_text(len_label, ""); + } + else + { + char len_str[8] = {0}; + sprintf(len_str, "%d S", duration); + lv_label_set_text(len_label, len_str); + } + + if(0 == msg_item->msg_from) // msg from slef + { + lv_obj_add_style(len_label, LV_LABEL_PART_MAIN, &list_page_ext->style_label_len_ui); + lv_img_set_src(obj, ICON_WECHAT_MY_VOICE_ITEM_BG); + lv_obj_align(obj, scrl, LV_ALIGN_IN_TOP_RIGHT, -10, obj_h); + if(0 < duration) + { + lv_img_set_src(play_img, ICON_WECHAT_MY_VOICE_ITEM_PLAYING3); + } + lv_obj_align(play_img, obj, LV_ALIGN_IN_LEFT_MID, 15, 0); + lv_obj_align(len_label, play_img, LV_ALIGN_OUT_RIGHT_MID, 25, 0); + } + else // msg from other + { + lv_obj_add_style(len_label, LV_LABEL_PART_MAIN, &list_page_ext->style_label_len_other); + lv_img_set_src(obj, ICON_WECHAT_OTHER_VOICE_ITEM_BG); + lv_obj_align(obj, scrl, LV_ALIGN_IN_TOP_LEFT, 10, obj_h); + if(0 < duration) + { + lv_img_set_src(play_img, ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING3); + } + lv_obj_align(play_img, obj, LV_ALIGN_IN_RIGHT_MID, -15, 0); + lv_obj_align(len_label, play_img, LV_ALIGN_OUT_LEFT_MID, -25, 0); + if(1 == msg_item->unread_flag) + { + list_item_ext->unread_img = lv_img_create(list_page, NULL); + lv_img_set_src(list_item_ext->unread_img, ICON_WECHAT_UNREAD_FLAG); + lv_obj_align(list_item_ext->unread_img, obj, LV_ALIGN_OUT_RIGHT_MID, 5, 0); + } + } + + lv_obj_set_click(obj, true); + //lv_page_glue_obj(obj, true); + lv_obj_set_event_cb(obj, wechat_chat_list_voice_item_event_cb); + lv_obj_set_adv_hittest(obj, false); + lv_page_focus(list_page, obj, 0); + lv_page_glue_obj(obj, true); + lv_watch_obj_add_element(obj); + break; + + case WECHAT_MSG_TYPE_TEXT: + #if 0 + obj = lv_cont_create(list, NULL); + lv_obj_add_style(obj, LV_CONT_PART_MAIN, &ext->style_cont); + lv_cont_set_fit(obj, true); + #endif + break; + + case WECHAT_MSG_TYPE_EXPRESSION: + case WECHAT_MSG_TYPE_IMAGE: + #if 0 + obj = lv_img_create(list, NULL); + + lv_watch_obj_add_element(obj); + #endif + break; + + default: + break; + } + + return obj; +} + +lv_res_t wechat_chat_list_scrl_signal(lv_obj_t * scrl, lv_signal_t sign, void * param) +{ + lv_res_t res; + + /* Include the ancient signal function */ + res = ancient_scrl_signal(scrl, sign, param); + if(res != LV_RES_OK) + return res; + + if(LV_SIGNAL_COORD_CHG == sign) + { + lv_obj_t * list_page = lv_obj_get_parent(scrl); + lv_wechat_msg_list_ext_t * list_page_ext = (lv_wechat_msg_list_ext_t *)lv_obj_get_ext_attr(list_page); + if(NULL == list_page_ext) + return; + + if(true == list_page_ext->pressing) + { + list_page_ext->pressing = false; + } + } + + return LV_RES_OK; +} + +void wechat_chat_list_create(lv_obj_t * obj, lv_wechat_ext_t * ext) +{ + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_obj_t * list_page = lv_page_create(obj, NULL); + lv_wechat_msg_list_ext_t * list_page_ext = lv_obj_allocate_ext_attr(list_page, sizeof(lv_wechat_msg_list_ext_t)); + if(NULL == ext) + return; + + lv_obj_set_size(list_page, lv_obj_get_width(obj), lv_obj_get_height(obj) - 5 - lv_obj_get_height(ext->img_record) - 8); + lv_page_set_scrollbar_mode(list_page, LV_SCROLLBAR_MODE_OFF); + lv_obj_set_style_local_bg_opa(list_page, LV_PAGE_PART_BG, LV_STATE_DEFAULT, LV_OPA_0); + lv_obj_set_style_local_border_opa(list_page, LV_PAGE_PART_BG, LV_STATE_DEFAULT, LV_OPA_0); + lv_obj_set_style_local_outline_width(list_page, LV_PAGE_PART_BG, LV_STATE_DEFAULT, 0); + lv_obj_set_style_local_pad_bottom(list_page, LV_PAGE_PART_SCROLLABLE, LV_STATE_DEFAULT, 4); + lv_obj_set_style_local_pad_top(list_page, LV_PAGE_PART_SCROLLABLE, LV_STATE_DEFAULT, 2); + lv_obj_set_style_local_pad_inner(list_page, LV_PAGE_PART_SCROLLABLE, LV_STATE_DEFAULT, 8); + lv_obj_set_style_local_bg_color(list_page, LV_PAGE_PART_SCROLLBAR, LV_STATE_DEFAULT, lv_color_make(16, 112, 194)); + lv_obj_set_style_local_pad_inner(list_page, LV_PAGE_PART_SCROLLBAR, LV_STATE_DEFAULT, LV_DPI / 20); + lv_obj_set_style_local_pad_left(list_page, LV_PAGE_PART_SCROLLBAR, LV_STATE_DEFAULT, 0); + lv_obj_set_style_local_pad_right(list_page, LV_PAGE_PART_SCROLLBAR, LV_STATE_DEFAULT, 0); + lv_obj_set_style_local_radius(list_page, LV_PAGE_PART_SCROLLBAR, LV_STATE_DEFAULT, 0); + + lv_style_init(&(list_page_ext->style_label_time)); + lv_style_copy(&(list_page_ext->style_label_time), &lv_watch_font20); + lv_style_set_text_color(&(list_page_ext->style_label_time), LV_STATE_DEFAULT, lv_color_make(20, 187, 242)); + + lv_style_init(&(list_page_ext->style_text)); + lv_style_copy(&(list_page_ext->style_text), &lv_style_pretty); + lv_style_set_bg_color(&(list_page_ext->style_text), LV_STATE_DEFAULT, lv_color_make(0xFF, 0xE1, 0xE1)); + lv_style_set_border_width(&(list_page_ext->style_text), LV_STATE_DEFAULT, 0); + lv_style_set_shadow_width(&(list_page_ext->style_text), LV_STATE_DEFAULT, 0); + + lv_style_init(&(list_page_ext->style_label_len_other)); + lv_style_copy(&(list_page_ext->style_label_len_other), &lv_watch_font20); + lv_style_set_text_color(&(list_page_ext->style_label_len_other), LV_STATE_DEFAULT, lv_color_make(202, 134, 255)); + + lv_style_init(&(list_page_ext->style_label_len_ui)); + lv_style_copy(&(list_page_ext->style_label_len_ui), &lv_watch_font20); + lv_style_set_text_color(&(list_page_ext->style_label_len_ui), LV_STATE_DEFAULT, lv_color_make(108, 189, 5)); + + lv_style_init(&(list_page_ext->style_cont)); + lv_style_set_pad_top(&(list_page_ext->style_cont), LV_STATE_DEFAULT, 8); + lv_style_set_pad_bottom(&(list_page_ext->style_cont), LV_STATE_DEFAULT, 8); + lv_style_set_pad_left(&(list_page_ext->style_cont), LV_STATE_DEFAULT, 8); + lv_style_set_pad_right(&(list_page_ext->style_cont), LV_STATE_DEFAULT, 8); + + lv_page_set_scrl_layout(list_page, LV_LAYOUT_OFF); + lv_page_set_scrollable_fit2(list_page, LV_FIT_NONE, LV_FIT_TIGHT); + + lv_obj_t * scrl = lv_page_get_scrollable(list_page); + ancient_scrl_signal = lv_obj_get_signal_cb(scrl); + lv_obj_set_signal_cb(scrl, wechat_chat_list_scrl_signal); + + lv_watch_obj_add_element(list_page); + lv_watch_obj_add_element(scrl); + + _lv_memset_00(&(list_page_ext->voice_playing_anim), sizeof(lv_anim_t)); + list_page_ext->pressing = false; + ext->list = list_page; + + uint8_t i = 0; + uint8_t msg_count = wechat_msg_info_count_get(); + hal_rtc_t cur_time = {0}, last_msg_item_time = {0}, msg_time = {0}; + //lv_wechat_msg_item_t * msg_item = (lv_wechat_msg_item_t *)_lv_ll_get_head(ext->msg_list); + + Hal_Rtc_Gettime(&cur_time); + for(i = 0; i < msg_count; i++) + { + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: i=%d, msg_count=%d\n", __FUNCTION__, __LINE__, i, msg_count); + + char time_str[32] = {0}; + nv_watch_wechat_msg_item_info_t * msg_item = NULL; + + wechat_msg_info_index_item_get(i, &msg_item); + _lv_memcpy(&msg_time, &(msg_item->msg_time), sizeof(hal_rtc_t)); + wechat_chat_list_msg_item_time(time_str, &cur_time, &msg_time, &last_msg_item_time); + _lv_memcpy(&last_msg_item_time, &(msg_item->msg_time), sizeof(hal_rtc_t)); + + wechat_chat_list_msg_item_add(list_page, msg_item, time_str, i); + } + + if((lv_obj_get_height(list_page) - lv_obj_get_style_pad_top(list_page, LV_LIST_PART_BG) * 2) > lv_obj_get_height(scrl)) + { + lv_cont_set_layout(scrl, LV_LAYOUT_OFF); + } +} + +void wechat_no_network_create(lv_obj_t * obj) +{ + lv_obj_t * img = lv_img_create(obj, NULL); + //lv_obj_set_size(img, lv_obj_get_width(obj), lv_obj_get_height(obj)); + lv_img_set_src(img, ICON_WECHAT_NO_NETWORK); + lv_obj_align(img, obj, LV_ALIGN_CENTER, 0, 0); + lv_obj_set_click(img, false); +} + +void wechat_main_screen_refresh(void) +{ + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_wechat_ext_t * ext = wechat_actId_ext_get(ACT_ID_WECHAT_MAIN); + if(NULL == ext) + return; + + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + wechat_msg_voice_item_playing_stop(ext); + + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + wechat_chat_list_msg_item_style_reset(ext); + if(NULL != ext->list) + { + lv_obj_del(ext->list); + ext->list = NULL; + } + + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + uint8_t msg_count = wechat_msg_info_count_get(); + if(0 == msg_count) + { + + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_obj_set_hidden(ext->label_no_msg, false); + } + else + { + + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_obj_set_hidden(ext->label_no_msg, true); + + wechat_chat_list_create(ext->cont, ext); + } +} + +lv_obj_t * wechat_create(lv_obj_t * activity_obj, lv_wechat_created_from_e from) +{ + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + if(activity_obj == NULL) + { + lv_watch_activity_ext_t activity_ext; + + _lv_memset_00(&activity_ext, sizeof(lv_watch_activity_ext_t)); + activity_ext.actId = ACT_ID_WECHAT_MAIN; + activity_ext.create = wechat_create; //NULL; + activity_ext.prepare_destory = wechat_prepare_destory; + activity_obj = lv_watch_creat_activity_obj(&activity_ext); + LV_ASSERT_MEM(activity_obj); + } + + lv_obj_t * obj = lv_watch_obj_create(activity_obj); + if(NULL == obj) + return; + /*Allocate the tab type specific extended data*/ + lv_wechat_ext_t * ext = lv_obj_allocate_ext_attr(obj, sizeof(lv_wechat_ext_t)); + if(NULL == ext) + return; + +#ifndef __WECHAT_DEBUG__ + if((false == watch_modem_sim_present_check_req()) + || (MMI_MODEM_SIGNAL_BAR_0 == watch_modem_get_signal_bar_req())) + { + wechat_no_network_create(obj); + return obj; + } +#endif + + lv_obj_t * cont = lv_cont_create(obj, NULL); + lv_obj_set_size(cont, lv_obj_get_width(obj), lv_obj_get_height(obj)); + lv_obj_align(cont, obj, LV_ALIGN_CENTER, 0, 0); + lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(194, 252, 252)); + lv_watch_obj_add_element(cont); + + ext->cont = cont; + ext->list = NULL; + ext->from = from; + + //create no msg label + ext->label_no_msg = lv_label_create(cont, NULL); + lv_obj_add_style(ext->label_no_msg, LV_LABEL_PART_MAIN, &lv_watch_font30_black); + lv_label_set_text_id(ext->label_no_msg, WATCH_TEXT_ID_NO_VOICE_MSG); + //lv_label_set_align(ext->label_no_msg, LV_LABEL_ALIGN_CENTER); + lv_obj_align(ext->label_no_msg, cont, LV_ALIGN_CENTER, 0, -10); + + ext->img_record = lv_img_create(cont, NULL); + lv_img_set_src(ext->img_record, ICON_WECHAT_RECORD_BUTTON); + lv_obj_set_click(ext->img_record, true); + lv_obj_set_event_cb(ext->img_record, wechat_msg_record_button_event_cb); + lv_obj_set_adv_hittest(ext->img_record, false); + lv_watch_obj_add_element(ext->img_record); + + lv_obj_align(ext->img_record, cont, LV_ALIGN_IN_BOTTOM_MID, 0, -8); + + uint8_t msg_count = wechat_msg_info_count_get(); + if(0 == msg_count) + { + lv_obj_set_hidden(ext->label_no_msg, false); + } + else + { + lv_obj_set_hidden(ext->label_no_msg, true); + + wechat_chat_list_create(cont, ext); + } + + return obj; +} + +void wechat_create_event_cb(lv_obj_t * btn, lv_event_t e) +{ + (void)btn; + if(LV_EVENT_CLICKED == e) { + lv_watch_png_cache_all_free(); + lv_obj_t * obj = wechat_create(NULL, WECHAT_CREATED_FROM_APP); + LV_ASSERT_MEM(obj); + } +} + +#if 0 +void wechat_chat_list_empty_create(lv_obj_t * obj, lv_wechat_ext_t * ext) +{ + WECHAT_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + //create no msg label + ext->label_no_msg = lv_label_create(obj, NULL); + lv_obj_add_style(ext->label_no_msg, LV_LABEL_PART_MAIN, &lv_watch_font30_black); + lv_label_set_text_id(ext->label_no_msg, WATCH_TEXT_ID_NO_VOICE_MSG); + lv_obj_align(ext->label_no_msg, obj, LV_ALIGN_CENTER, 0, -10); + + ext->img_emo = lv_img_create(obj, NULL); + lv_img_set_src(ext->img_emo, ICON_SEND_EMO); + lv_obj_set_click(ext->img_emo, true); + //lv_obj_set_event_cb(ext->img_emo, wechat_chat_list_send_expression_event_cb); + lv_obj_set_adv_hittest(ext->img_emo, false); + lv_watch_obj_add_element(ext->img_emo); + + ext->img_record = lv_img_create(obj, NULL); + lv_img_set_src(ext->img_record, ICON_WECHAT_RECORD_BUTTON); + lv_obj_set_click(ext->img_record, true); + lv_obj_set_event_cb(ext->img_record, wechat_msg_record_button_event_cb); + lv_obj_set_adv_hittest(ext->img_record, false); + lv_watch_obj_add_element(ext->img_record); + + lv_obj_align(ext->img_emo, obj, LV_ALIGN_IN_BOTTOM_LEFT, 14, -8); + lv_obj_align(ext->img_record, obj, LV_ALIGN_IN_BOTTOM_RIGHT, -14, -8); +} +#endif + +#endif diff --git a/2.sdk/gui/lv_watch/lv_theme_watch_night.c b/2.sdk/gui/lv_watch/lv_theme_watch_night.c index 965e91db..370e0475 100644 --- a/2.sdk/gui/lv_watch/lv_theme_watch_night.c +++ b/2.sdk/gui/lv_watch/lv_theme_watch_night.c @@ -228,12 +228,37 @@ lv_style_t lv_watch_black_tight; lv_style_t lv_watch_chat_list_btn_rel_style; lv_style_t lv_watch_chat_list_btn_pr_style; +#ifdef __MMI_ZHSX_SUPPORT__ +lv_style_t lv_watch_font22; +lv_style_t lv_watch_font22_black; +lv_style_t lv_watch_font22_gray; +lv_style_t lv_watch_font22_yellow; +lv_style_t lv_watch_font24; +lv_style_t lv_watch_font24_black; +lv_style_t lv_watch_font24_gray; +lv_style_t lv_watch_font24_yellow; +lv_style_t lv_watch_font26; +lv_style_t lv_watch_font26_black; +lv_style_t lv_watch_font26_gray; +lv_style_t lv_watch_font26_yellow; +lv_style_t lv_watch_font28; +lv_style_t lv_watch_font28_black; +lv_style_t lv_watch_font28_gray; +lv_style_t lv_watch_font28_yellow; +#endif + #ifdef USE_FONT_TTF lv_font_t lv_font_ttf_20; lv_font_t lv_font_ttf_30; lv_font_t lv_font_ttf_12; lv_font_t lv_font_ttf_14; lv_font_t lv_font_ttf_40; +#ifdef __MMI_ZHSX_SUPPORT__ +lv_font_t lv_font_ttf_22; +lv_font_t lv_font_ttf_24; +lv_font_t lv_font_ttf_26; +lv_font_t lv_font_ttf_28; +#endif #elif defined USE_FONT_BIN lv_font_t *lv_font_droidSansFallbackFull_20 = NULL; lv_font_t *lv_font_droidSansFallbackFull_30_compressed = NULL; @@ -1027,6 +1052,72 @@ static void lv_theme_watch_set_private_style(void) lv_style_set_text_color(&lv_watch_font40_yellow, LV_STATE_DEFAULT, LV_COLOR_YELLOW); lv_style_set_text_font(&lv_watch_font40_yellow, LV_STATE_DEFAULT, LV_THEME_WATCH_NIGHT_FONT_40); +#ifdef __MMI_ZHSX_SUPPORT__ + style_init_reset(&lv_watch_font22); + lv_style_set_text_color(&lv_watch_font22, LV_STATE_DEFAULT, LV_COLOR_WHITE); + lv_style_set_text_font(&lv_watch_font22, LV_STATE_DEFAULT, &lv_font_ttf_22); + + style_init_reset(&lv_watch_font22_yellow); + lv_style_set_text_color(&lv_watch_font22_yellow, LV_STATE_DEFAULT, LV_COLOR_YELLOW); + lv_style_set_text_font(&lv_watch_font22_yellow, LV_STATE_DEFAULT, &lv_font_ttf_22); + + style_init_reset(&lv_watch_font22_black); + lv_style_set_text_color(&lv_watch_font22_black, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_style_set_text_font(&lv_watch_font22_black, LV_STATE_DEFAULT, &lv_font_ttf_22); + + style_init_reset(&lv_watch_font22_gray); + lv_style_set_text_color(&lv_watch_font22_gray, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_style_set_text_font(&lv_watch_font22_gray, LV_STATE_DEFAULT, &lv_font_ttf_22); + + style_init_reset(&lv_watch_font24); + lv_style_set_text_color(&lv_watch_font24, LV_STATE_DEFAULT, LV_COLOR_WHITE); + lv_style_set_text_font(&lv_watch_font24, LV_STATE_DEFAULT, &lv_font_ttf_24); + + style_init_reset(&lv_watch_font24_yellow); + lv_style_set_text_color(&lv_watch_font24_yellow, LV_STATE_DEFAULT, LV_COLOR_YELLOW); + lv_style_set_text_font(&lv_watch_font24_yellow, LV_STATE_DEFAULT, &lv_font_ttf_24); + + style_init_reset(&lv_watch_font24_black); + lv_style_set_text_color(&lv_watch_font24_black, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_style_set_text_font(&lv_watch_font24_black, LV_STATE_DEFAULT, &lv_font_ttf_24); + + style_init_reset(&lv_watch_font24_gray); + lv_style_set_text_color(&lv_watch_font24_gray, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_style_set_text_font(&lv_watch_font24_gray, LV_STATE_DEFAULT, &lv_font_ttf_24); + + style_init_reset(&lv_watch_font26); + lv_style_set_text_color(&lv_watch_font26, LV_STATE_DEFAULT, LV_COLOR_WHITE); + lv_style_set_text_font(&lv_watch_font26, LV_STATE_DEFAULT, &lv_font_ttf_26); + + style_init_reset(&lv_watch_font26_yellow); + lv_style_set_text_color(&lv_watch_font26_yellow, LV_STATE_DEFAULT, LV_COLOR_YELLOW); + lv_style_set_text_font(&lv_watch_font26_yellow, LV_STATE_DEFAULT, &lv_font_ttf_26); + + style_init_reset(&lv_watch_font26_black); + lv_style_set_text_color(&lv_watch_font26_black, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_style_set_text_font(&lv_watch_font26_black, LV_STATE_DEFAULT, &lv_font_ttf_26); + + style_init_reset(&lv_watch_font26_gray); + lv_style_set_text_color(&lv_watch_font26_gray, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_style_set_text_font(&lv_watch_font26_gray, LV_STATE_DEFAULT, &lv_font_ttf_26); + + style_init_reset(&lv_watch_font28); + lv_style_set_text_color(&lv_watch_font28, LV_STATE_DEFAULT, LV_COLOR_WHITE); + lv_style_set_text_font(&lv_watch_font28, LV_STATE_DEFAULT, &lv_font_ttf_28); + + style_init_reset(&lv_watch_font28_yellow); + lv_style_set_text_color(&lv_watch_font28_yellow, LV_STATE_DEFAULT, LV_COLOR_YELLOW); + lv_style_set_text_font(&lv_watch_font28_yellow, LV_STATE_DEFAULT, &lv_font_ttf_28); + + style_init_reset(&lv_watch_font28_black); + lv_style_set_text_color(&lv_watch_font28_black, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_style_set_text_font(&lv_watch_font28_black, LV_STATE_DEFAULT, &lv_font_ttf_28); + + style_init_reset(&lv_watch_font28_gray); + lv_style_set_text_color(&lv_watch_font28_gray, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_style_set_text_font(&lv_watch_font28_gray, LV_STATE_DEFAULT, &lv_font_ttf_28); +#endif + /*lv_watch_style_transp*/ style_init_reset(&lv_watch_style_transp); lv_style_copy(&lv_watch_style_transp, &lv_style_transp); @@ -1124,6 +1215,12 @@ lv_theme_t * lv_theme_watch_night_init(void) lv_freetype_font_init(&lv_font_ttf_12, LV_FONT_TTF, 12); lv_freetype_font_init(&lv_font_ttf_14, LV_FONT_TTF, 14); lv_freetype_font_init(&lv_font_ttf_40, LV_FONT_TTF, 40); + #ifdef __MMI_ZHSX_SUPPORT__ + lv_freetype_font_init(&lv_font_ttf_22, LV_FONT_TTF, 22); + lv_freetype_font_init(&lv_font_ttf_24, LV_FONT_TTF, 24); + lv_freetype_font_init(&lv_font_ttf_26, LV_FONT_TTF, 26); + lv_freetype_font_init(&lv_font_ttf_28, LV_FONT_TTF, 28); + #endif #elif defined USE_FONT_BIN // load from font bin file from resource lv_font_droidSansFallbackFull_20 = lv_font_load(LV_FONT_DROIDSANSFALLBACKFULL_20_BIN); diff --git a/2.sdk/gui/lv_watch/lv_theme_watch_night.h b/2.sdk/gui/lv_watch/lv_theme_watch_night.h index 2905508d..29a9ffa8 100644 --- a/2.sdk/gui/lv_watch/lv_theme_watch_night.h +++ b/2.sdk/gui/lv_watch/lv_theme_watch_night.h @@ -54,6 +54,12 @@ LV_FONT_DECLARE(lv_font_ttf_12) LV_FONT_DECLARE(lv_font_ttf_14) LV_FONT_DECLARE(lv_font_ttf_40) LV_FONT_DECLARE(lv_font_spec_symbols_ttf_20) +#ifdef __MMI_ZHSX_SUPPORT__ +LV_FONT_DECLARE(lv_font_ttf_22) +LV_FONT_DECLARE(lv_font_ttf_24) +LV_FONT_DECLARE(lv_font_ttf_26) +LV_FONT_DECLARE(lv_font_ttf_28) +#endif #define LV_THEME_WATCH_NIGHT_FONT_20 &lv_font_ttf_20 #define LV_THEME_WATCH_NIGHT_FONT_30 &lv_font_ttf_30 #define LV_THEME_WATCH_NIGHT_FONT_12 &lv_font_ttf_12 @@ -116,6 +122,25 @@ extern lv_style_t lv_watch_cont_opa1; extern lv_style_t lv_watch_cont_opa2; extern lv_style_t lv_watch_cb_styles; +#ifdef __MMI_ZHSX_SUPPORT__ +extern lv_style_t lv_watch_font22; +extern lv_style_t lv_watch_font22_black; +extern lv_style_t lv_watch_font22_gray; +extern lv_style_t lv_watch_font22_yellow; +extern lv_style_t lv_watch_font24; +extern lv_style_t lv_watch_font24_black; +extern lv_style_t lv_watch_font24_gray; +extern lv_style_t lv_watch_font24_yellow; +extern lv_style_t lv_watch_font26; +extern lv_style_t lv_watch_font26_black; +extern lv_style_t lv_watch_font26_gray; +extern lv_style_t lv_watch_font26_yellow; +extern lv_style_t lv_watch_font28; +extern lv_style_t lv_watch_font28_black; +extern lv_style_t lv_watch_font28_gray; +extern lv_style_t lv_watch_font28_yellow; +#endif + extern lv_style_t lv_watch_image; extern lv_style_t lv_watch_image_opa1; extern lv_style_t lv_watch_black_tight; diff --git a/2.sdk/gui/lv_watch/lv_watch.c b/2.sdk/gui/lv_watch/lv_watch.c index 139bc21c..26c684b7 100644 --- a/2.sdk/gui/lv_watch/lv_watch.c +++ b/2.sdk/gui/lv_watch/lv_watch.c @@ -15,9 +15,9 @@ /********************* * DEFINES *********************/ -#ifndef USE_POWER_ON_GIF -#define USE_POWER_ON_GIF 0 -#endif +//#ifndef USE_POWER_ON_GIF +//#define USE_POWER_ON_GIF 0 +//#endif /********************** * TYPEDEFS @@ -174,6 +174,10 @@ void watch_power_on_req(void) //init steps from nv when power on asl_pedometer_poweron_on_init(); +#ifdef __MMI_WECHAT_SUPPORT__ + wechat_msg_info_init(); +#endif + if((HAL_POWERUP_ONKEY == reason) || (HAL_POWERUP_REBOOT == reason)) { // unknow is for soft reboot watch_powerup_onkey_common_process(); @@ -398,13 +402,13 @@ static void main_task(lv_task_t * task) if(activity_obj == NULL) return; //lv_obj_set_style(activity_obj, &lv_style_plain); - power_on_gif = gif_open(activity_obj, "R:/gif/anim_power_on.gif", 1); + power_on_gif = gif_open(activity_obj, ANIM_POWER_ON, 1); /*fix: when power on, audio is very stuck when ril init*/ //printf("set AudioHAL_SetResBufCnt 20\n"); AudioHAL_SetResBufCnt(20); - Hal_NFFS_File_Play_Onetime("R:/audio/audio_power_on.mid", (HAL_SPEAKER_GAIN)query_current_volume(), poweron_play_callback, 0); + Hal_NFFS_File_Play_Onetime(AUDIO_POWER_ON, (HAL_SPEAKER_GAIN)query_current_volume(), poweron_play_callback, 0); } if(power_on_gif->once_done) { diff --git a/2.sdk/gui/lv_watch/lv_watch.h b/2.sdk/gui/lv_watch/lv_watch.h index 8f1854e2..3c38516f 100644 --- a/2.sdk/gui/lv_watch/lv_watch.h +++ b/2.sdk/gui/lv_watch/lv_watch.h @@ -164,6 +164,21 @@ extern "C" { #include "../../product/craneg_modem/softutil/fotacomm/inc/fota_interface.h" #endif +#ifdef __MMI_WECHAT_SUPPORT__ +#include "lv_apps/wechat/wechat.h" +#endif +#ifdef __MMI_HEALTH_MEASURE_HEART_SUPPORT__ +#include "lv_apps/health_measure/health_heart_rate.h" +#endif +#ifdef __MMI_HEALTH_MEASURE_SPO2_SUPPORT__ +#include "lv_apps/health_measure/health_spo2.h" +#endif +#ifdef __MMI_HEALTH_MEASURE_TEMPERATURE_SUPPORT__ +#include "lv_apps/health_measure/health_temperature.h" +#endif + + + //simware end /********************* diff --git a/2.sdk/gui/lv_watch/lv_watch_res.h b/2.sdk/gui/lv_watch/lv_watch_res.h index ee2dfdae..18e358f2 100644 --- a/2.sdk/gui/lv_watch/lv_watch_res.h +++ b/2.sdk/gui/lv_watch/lv_watch_res.h @@ -14,6 +14,16 @@ extern "C" { LV_IMG_DECLARE(img_poweron_logo); #define ICON_POWERON_LOGO &img_poweron_logo +#if USE_POWER_ON_GIF +#define ANIM_POWER_ON "R:/gif/anim_power_on.gif" +#endif +#define AUDIO_POWER_ON "R:/audio/audio_power_on.mid" + +#if USE_POWER_OFF_GIF +#define ANIM_POWER_OFF "R:/gif/anim_power_off.gif" +#endif +#define AUDIO_POWER_OFF "R:/audio/audio_power_off.mid" + //launcher #define ICON_BACKGROUND "R:/png/background/img_background1.png" #if LV_WATCH_SIMULATOR_360 @@ -62,7 +72,7 @@ LV_IMG_DECLARE(img_poweron_logo); //primary_menu #define ICON_SETTING "R:/png/primary_function/icon_settings.png" #define ICON_WECHAT "R:/png/primary_function/icon_wechat.png" -#define ICON_TELEPHONE "R:/png/primary_function/icon_telephone.png" +#define ICON_CALLLOG "R:/png/primary_function/ICON_CALLLOG.png" #define ICON_CAMERA "R:/png/primary_function/icon_camera.png" #define ICON_MAKEFRIENDS "R:/png/primary_function/icon_makefriends.png" #define ICON_DIALPAD "R:/png/primary_function/icon_dialpad.png" @@ -91,6 +101,7 @@ LV_IMG_DECLARE(img_poweron_logo); #define ICON_ACTIVITY "R:/png/primary_function/icon_activity.png" #define ICON_ALIPAY "R:/png/primary_function/icon_alipay.png" #define ICON_SMS_MSG "R:/png/primary_function/icon_sms.png" +#define ICON_PHONEBOOK "R:/png/primary_function/ICON_PHONEBOOK.png" //setting #define ICON_SETTING_DAIL_FORMAT_SWITCH "R:/png/setting/icon_setting_dail_format_switch.png" @@ -144,10 +155,10 @@ LV_IMG_DECLARE(img_poweron_logo); #define ICON_SETTING_TAB_UP_GRAY "R:/png/setting/icon_setting_tab_up_gray.png" #define ICON_NO_MESSAGE "R:/png/setting/icon_message.png" -#if USE_POWER_OFF_GIF -#define ANIM_POWER_OFF "R:/gif/anim_power_off.gif" -#define AUDIO_POWER_OFF "R:/audio/audio_power_off.mid" -#endif +//#if USE_POWER_OFF_GIF +//#define ANIM_POWER_OFF "R:/gif/anim_power_off.gif" +//#define AUDIO_POWER_OFF "R:/audio/audio_power_off.mid" +//#endif #define AUDIO_SETTING_AUDIO_MSG "R:/audio/audio_msg.amr" @@ -348,11 +359,12 @@ LV_IMG_DECLARE(img_poweron_logo); #define ICON_LONG_TOUCH_SPK "R:/png/speech_recog/icon_long_touch_spk.png" // audio -#define AUDIO_POWER_ON "R:/audio/audio_power_on.mid" -#define AUDIO_POWER_OFF "R:/audio/audio_power_off.mid" +//#define AUDIO_POWER_ON "R:/audio/audio_power_on.mid" +//#define AUDIO_POWER_OFF "R:/audio/audio_power_off.mid" #define AUDIO_MSG "R:/audio/audio_msg.amr" // voice msg +#if USE_LV_WATCH_VOICE_MSG != 0 #define ICON_EXPRESSION_TEST "R:/png/voice_msg/icon_expression_test.png" #define ICON_BKG "R:/png/voice_msg/icon_bkg.png" #define ICON_NONET_DEBT "R:/png/voice_msg/icon_nonet_debt.png" @@ -389,6 +401,7 @@ LV_IMG_DECLARE(img_poweron_logo); #define ICON_TOUCH_SPK "R:/png/voice_msg/icon_touch_spk.png" #define ICON_VOICE_DAMAGE "R:/png/voice_msg/icon_voice_damage.png" #define ICON_BACK_BLUE "R:/png/voice_msg/icon_back_blue.png" +#endif //calculater #define ICON_0 "R:/png/calculator/icon_0.png" @@ -639,6 +652,66 @@ LV_IMG_DECLARE(img_poweron_logo); #define MESSAGE_BG1 "R:/png/sms_msg/message_bg1.png" #define MES_SHORTMES "R:/png/sms_msg/mes_shortmes.png" + +#ifdef __MMI_ZHSX_SUPPORT__ +//common +#define ICON_COMMON_BG_BLACK "R:/png/common/ICON_COMMON_BG_BLACK.png" +#define ICON_COMMON_BG_WHITE "R:/png/common/ICON_COMMON_BG_WHITE.png" +#define ICON_COMMON_SUCCESS "R:/png/common/ICON_COMMON_SUCCESS.png" + +#endif + +// wechat +#ifdef __MMI_WECHAT_SUPPORT__ +#define ICON_WECHAT_NO_NETWORK "R:/png/wechat/ICON_WECHAT_NO_NETWORK.png" +#define ICON_WECHAT_TEXT_ITEM_BG "R:/png/wechat/ICON_WECHAT_TEXT_ITEM_BG.png" +#define ICON_WECHAT_RECORD_BUTTON "R:/png/wechat/ICON_WECHAT_RECORD_BUTTON.png" +#define ICON_WECHAT_RECORD_BUTTON_PRESSED "R:/png/wechat/ICON_WECHAT_RECORD_BUTTON_PRESSED.png" +#define ICON_WECHAT_MY_VOICE_ITEM_BG "R:/png/wechat/ICON_WECHAT_MY_VOICE_ITEM_BG.png" +#define ICON_WECHAT_MY_VOICE_ITEM_PLAYING1 "R:/png/wechat/ICON_WECHAT_MY_VOICE_ITEM_PLAYING1.png" +#define ICON_WECHAT_MY_VOICE_ITEM_PLAYING2 "R:/png/wechat/ICON_WECHAT_MY_VOICE_ITEM_PLAYING2.png" +#define ICON_WECHAT_MY_VOICE_ITEM_PLAYING3 "R:/png/wechat/ICON_WECHAT_MY_VOICE_ITEM_PLAYING3.png" +#define ICON_WECHAT_OTHER_VOICE_ITEM_BG "R:/png/wechat/ICON_WECHAT_OTHER_VOICE_ITEM_BG.png" +#define ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING1 "R:/png/wechat/ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING1.png" +#define ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING2 "R:/png/wechat/ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING2.png" +#define ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING3 "R:/png/wechat/ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING3.png" +#define ICON_WECHAT_VOICE_ITEM_DAMAGE "R:/png/wechat/ICON_WECHAT_VOICE_ITEM_DAMAGE.png" +#define ICON_WECHAT_RECORDING1 "R:/png/wechat/ICON_WECHAT_RECORDING1.png" +#define ICON_WECHAT_RECORDING2 "R:/png/wechat/ICON_WECHAT_RECORDING2.png" +#define ICON_WECHAT_RECORDING3 "R:/png/wechat/ICON_WECHAT_RECORDING3.png" +#define ICON_WECHAT_RECORDING4 "R:/png/wechat/ICON_WECHAT_RECORDING4.png" +#define ICON_WECHAT_RECORDING5 "R:/png/wechat/ICON_WECHAT_RECORDING5.png" +#define ICON_WECHAT_SENDING_BG "R:/png/wechat/ICON_WECHAT_SENDING_BG.png" +#define ICON_WECHAT_SENDING_PROMPT1 "R:/png/wechat/ICON_WECHAT_SENDING_PROMPT1.png" +#define ICON_WECHAT_SENDING_PROMPT2 "R:/png/wechat/ICON_WECHAT_SENDING_PROMPT2.png" +#define ICON_WECHAT_SENDING_PROMPT3 "R:/png/wechat/ICON_WECHAT_SENDING_PROMPT3.png" +#define ICON_WECHAT_SENDING_SUCC "R:/png/wechat/ICON_WECHAT_SENDING_SUCC.png" +#define ICON_WECHAT_SENDING_FAILED "R:/png/wechat/ICON_WECHAT_SENDING_FAILED.png" +#define ICON_WECHAT_SEND_EMO "R:/png/wechat/ICON_WECHAT_SEND_EMO.png" +#define ICON_WECHAT_UNREAD_FLAG "R:/png/wechat/ICON_WECHAT_UNREAD_FLAG.png" + +#define AUDIO_WECHAT_RECEIVE "R:/audio/audio_wechat_receive.mid" +#endif + +//healthy measure +#ifdef __MMI_HEALTH_MEASURE_HEART_SUPPORT__ +#define ANIM_HEART_RATE_MEASURING "R:/gif/anim_heart_rate_measuring.gif" +#define ICON_HEART_RATE_MEASURE_DONE "R:/png/health_measure/icon_heart_rate_measure_done.png" +#define ICON_HEART_RATE_MEASURE_FAIL "R:/png/health_measure/icon_heart_rate_measure_fail.png" +#endif +#ifdef __MMI_HEALTH_MEASURE_SPO2_SUPPORT__ +#define ICON_SPO2 "R:/png/primary_function/ICON_SPO2.png" +#define ANIM_SPO2_MEASURING "R:/gif/anim_spo2_measuring.gif" +#define ICON_SPO2_MEASURE_DONE "R:/png/health_measure/icon_spo2_measure_done.png" +#define ICON_SPO2_MEASURE_FAIL "R:/png/health_measure/icon_spo2_measure_fail.png" +#endif +#ifdef __MMI_HEALTH_MEASURE_TEMPERATURE_SUPPORT__ +#define ICON_TEMPERATURE "R:/png/primary_function/ICON_TEMPERATURE.png" +#define ICON_TEMPERATURE_MEASURE_BG "R:/png/health_measure/icon_temperature_measure_bg.png" +#endif + + + //font #ifdef USE_FONT_TTF /* YH2312F.ttf include 60 special symbols from FontAwesome5-Solid+Brands+Regular_simple.ttf, see lv_symbol_def.h */ diff --git a/2.sdk/gui/lv_watch/resource/ext/png/poweron/img_poweron_logo.png b/2.sdk/gui/lv_watch/resource/ext/png/poweron/img_poweron_logo.png index 62c2284d..14e9dc0a 100644 Binary files a/2.sdk/gui/lv_watch/resource/ext/png/poweron/img_poweron_logo.png and b/2.sdk/gui/lv_watch/resource/ext/png/poweron/img_poweron_logo.png differ diff --git a/2.sdk/gui/lv_watch/resource/gif/anim_heart_rate_measuring.gif b/2.sdk/gui/lv_watch/resource/gif/anim_heart_rate_measuring.gif new file mode 100644 index 00000000..5b3cb0a0 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/gif/anim_heart_rate_measuring.gif differ diff --git a/2.sdk/gui/lv_watch/resource/gif/anim_power_off.gif b/2.sdk/gui/lv_watch/resource/gif/anim_power_off.gif index d40a86da..8bb85b3d 100644 Binary files a/2.sdk/gui/lv_watch/resource/gif/anim_power_off.gif and b/2.sdk/gui/lv_watch/resource/gif/anim_power_off.gif differ diff --git a/2.sdk/gui/lv_watch/resource/gif/anim_power_on.gif b/2.sdk/gui/lv_watch/resource/gif/anim_power_on.gif index 57c1df12..401c404b 100644 Binary files a/2.sdk/gui/lv_watch/resource/gif/anim_power_on.gif and b/2.sdk/gui/lv_watch/resource/gif/anim_power_on.gif differ diff --git a/2.sdk/gui/lv_watch/resource/gif/anim_spo2_measuring.gif b/2.sdk/gui/lv_watch/resource/gif/anim_spo2_measuring.gif new file mode 100644 index 00000000..727917f4 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/gif/anim_spo2_measuring.gif differ diff --git a/2.sdk/gui/lv_watch/resource/png/background/_img_background1.png b/2.sdk/gui/lv_watch/resource/png/background/_img_background1.png new file mode 100644 index 00000000..cc277fbd Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/background/_img_background1.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/background/_img_background2.png b/2.sdk/gui/lv_watch/resource/png/background/_img_background2.png new file mode 100644 index 00000000..bd2bc9ab Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/background/_img_background2.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/background/img_background1.png b/2.sdk/gui/lv_watch/resource/png/background/img_background1.png index cc277fbd..b465ac78 100644 Binary files a/2.sdk/gui/lv_watch/resource/png/background/img_background1.png and b/2.sdk/gui/lv_watch/resource/png/background/img_background1.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/common/ICON_COMMON_BG_BLACK.png b/2.sdk/gui/lv_watch/resource/png/common/ICON_COMMON_BG_BLACK.png new file mode 100644 index 00000000..b465ac78 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/common/ICON_COMMON_BG_BLACK.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/common/ICON_COMMON_BG_WHITE.png b/2.sdk/gui/lv_watch/resource/png/common/ICON_COMMON_BG_WHITE.png new file mode 100644 index 00000000..bd2bc9ab Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/common/ICON_COMMON_BG_WHITE.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/common/ICON_COMMON_SUCCESS.png b/2.sdk/gui/lv_watch/resource/png/common/ICON_COMMON_SUCCESS.png new file mode 100644 index 00000000..8859f43f Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/common/ICON_COMMON_SUCCESS.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial/buildin_dial_list.db b/2.sdk/gui/lv_watch/resource/png/dial/buildin_dial_list.db index 9a31bf5b..da028564 100644 --- a/2.sdk/gui/lv_watch/resource/png/dial/buildin_dial_list.db +++ b/2.sdk/gui/lv_watch/resource/png/dial/buildin_dial_list.db @@ -1,10 +1,14 @@ -style1 -R:/png/dial_style1/style1_watch.json -default -R:/png/dial_default/default_watch.json +default_digit +R:/png/dial_default_ambient/am_digit.json rokcket R:/png/dial_rocket/rocket_watch.json dolphin R:/png/dial_dolphin/dolphin_watch.json bear R:/png/dial_bear/bear_watch.json +style1 +R:/png/dial_style1/style1_watch.json +dial_style3 +R:/png/dial_style3/dial_style3.json +dial_style4 +R:/png/dial_style4/dial_style4.json diff --git a/2.sdk/gui/lv_watch/resource/png/dial_bear/_icon_bear.png b/2.sdk/gui/lv_watch/resource/png/dial_bear/_icon_bear.png new file mode 100644 index 00000000..ca6c9146 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_bear/_icon_bear.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_bear/bear_watch.json b/2.sdk/gui/lv_watch/resource/png/dial_bear/bear_watch.json index 11d2a410..6b888aca 100644 --- a/2.sdk/gui/lv_watch/resource/png/dial_bear/bear_watch.json +++ b/2.sdk/gui/lv_watch/resource/png/dial_bear/bear_watch.json @@ -7,7 +7,7 @@ { "element_pos": { "x": 120, - "y": 0 + "y": 40 }, "element_cnt": 1, "act_type": 2, diff --git a/2.sdk/gui/lv_watch/resource/png/dial_bear/icon_bear.png b/2.sdk/gui/lv_watch/resource/png/dial_bear/icon_bear.png index ca6c9146..c0ec851b 100644 Binary files a/2.sdk/gui/lv_watch/resource/png/dial_bear/icon_bear.png and b/2.sdk/gui/lv_watch/resource/png/dial_bear/icon_bear.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_default_ambient/_am_digit_bg.png b/2.sdk/gui/lv_watch/resource/png/dial_default_ambient/_am_digit_bg.png new file mode 100644 index 00000000..f6215b4d Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_default_ambient/_am_digit_bg.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_default_ambient/am_digit.json b/2.sdk/gui/lv_watch/resource/png/dial_default_ambient/am_digit.json index e7ee60f5..b5b175e6 100644 --- a/2.sdk/gui/lv_watch/resource/png/dial_default_ambient/am_digit.json +++ b/2.sdk/gui/lv_watch/resource/png/dial_default_ambient/am_digit.json @@ -2,12 +2,12 @@ "name": "数字时钟", "preview_img": "R:/png/dial_default_ambient/am_digit_pre.png", "bg_img": "R:/png/dial_default_ambient/am_digit_bg.png", - "configurable": 2, + "configurable": 0, "element_ll": [ { "element_pos": { "x": 0, - "y": 75 + "y": 85 }, "element_cnt": 1, "act_type": 1, diff --git a/2.sdk/gui/lv_watch/resource/png/dial_default_ambient/am_digit_bg.png b/2.sdk/gui/lv_watch/resource/png/dial_default_ambient/am_digit_bg.png index f6215b4d..b465ac78 100644 Binary files a/2.sdk/gui/lv_watch/resource/png/dial_default_ambient/am_digit_bg.png and b/2.sdk/gui/lv_watch/resource/png/dial_default_ambient/am_digit_bg.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_dolphin/dolphin_watch.json b/2.sdk/gui/lv_watch/resource/png/dial_dolphin/dolphin_watch.json index 67ddacd0..489b37f3 100644 --- a/2.sdk/gui/lv_watch/resource/png/dial_dolphin/dolphin_watch.json +++ b/2.sdk/gui/lv_watch/resource/png/dial_dolphin/dolphin_watch.json @@ -7,7 +7,7 @@ { "element_pos": { "x": 25, - "y": 50 + "y": 70 }, "element_cnt": 1, "act_type": 1, @@ -216,7 +216,7 @@ { "element_pos": { "x": 25, - "y": 190 + "y": 220 }, "element_cnt": 1, "act_type": 5, @@ -292,8 +292,8 @@ }, { "element_pos": { - "x": 115, - "y": 190 + "x": 110, + "y": 220 }, "element_cnt": 1, "act_type": 4, diff --git a/2.sdk/gui/lv_watch/resource/png/dial_dolphin/icon_dolphin.png b/2.sdk/gui/lv_watch/resource/png/dial_dolphin/icon_dolphin.png index e04e5e9d..78127d73 100644 Binary files a/2.sdk/gui/lv_watch/resource/png/dial_dolphin/icon_dolphin.png and b/2.sdk/gui/lv_watch/resource/png/dial_dolphin/icon_dolphin.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_dolphin/icon_dolphin0024.png b/2.sdk/gui/lv_watch/resource/png/dial_dolphin/icon_dolphin0024.png new file mode 100644 index 00000000..06d3a4f7 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_dolphin/icon_dolphin0024.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_dolphin/icon_dolphin008.png b/2.sdk/gui/lv_watch/resource/png/dial_dolphin/icon_dolphin008.png new file mode 100644 index 00000000..e04e5e9d Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_dolphin/icon_dolphin008.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_rocket/_icon_rocket.png b/2.sdk/gui/lv_watch/resource/png/dial_rocket/_icon_rocket.png new file mode 100644 index 00000000..1edc0bc7 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_rocket/_icon_rocket.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_rocket/icon_rocket.png b/2.sdk/gui/lv_watch/resource/png/dial_rocket/icon_rocket.png index 1edc0bc7..6a29ff97 100644 Binary files a/2.sdk/gui/lv_watch/resource/png/dial_rocket/icon_rocket.png and b/2.sdk/gui/lv_watch/resource/png/dial_rocket/icon_rocket.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_rocket/rocket_watch.json b/2.sdk/gui/lv_watch/resource/png/dial_rocket/rocket_watch.json index aa30cb9e..f534e2dd 100644 --- a/2.sdk/gui/lv_watch/resource/png/dial_rocket/rocket_watch.json +++ b/2.sdk/gui/lv_watch/resource/png/dial_rocket/rocket_watch.json @@ -7,7 +7,7 @@ { "element_pos": { "x": 120, - "y": 40 + "y": 70 }, "element_cnt": 1, "act_type": 1, @@ -102,7 +102,7 @@ "img_type": 12, "img_pos": { "x": 44, - "y": 95 + "y": 100 }, "sub_img_cnt": 10, "sub_img_ll": [ @@ -142,7 +142,7 @@ "img_type": 13, "img_pos": { "x": 72, - "y": 95 + "y": 100 }, "sub_img_cnt": 10, "sub_img_ll": [ @@ -216,7 +216,7 @@ { "element_pos": { "x": 100, - "y": 185 + "y": 225 }, "element_cnt": 1, "act_type": 5, @@ -307,7 +307,7 @@ { "element_pos": { "x": 190, - "y": 185 + "y": 225 }, "element_cnt": 1, "act_type": 4, diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style1/bg.png b/2.sdk/gui/lv_watch/resource/png/dial_style1/bg.png index 71c43384..401f3849 100644 Binary files a/2.sdk/gui/lv_watch/resource/png/dial_style1/bg.png and b/2.sdk/gui/lv_watch/resource/png/dial_style1/bg.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style1/style1_watch.json b/2.sdk/gui/lv_watch/resource/png/dial_style1/style1_watch.json index 66e7ea9d..93baf9da 100644 --- a/2.sdk/gui/lv_watch/resource/png/dial_style1/style1_watch.json +++ b/2.sdk/gui/lv_watch/resource/png/dial_style1/style1_watch.json @@ -1,6 +1,6 @@ { - "name": "rocket", - "preview_img": "R:/png/dial_style1/bg.png", + "name": "style1", + "preview_img": "R:/png/dial_style1/view.png", "bg_img": "R:/png/dial_style1/bg.png", "configurable": 0, "element_ll": @@ -402,7 +402,7 @@ "label_cnt": 1, "label_ll": [ { - "label_type": 18, + "label_type": 17, "text": "10249", "text_color": { "r": 255, @@ -464,7 +464,7 @@ "label_cnt": 1, "label_ll": [ { - "label_type": 25, + "label_type": 24, "text": "123", "text_color": { "r": 255, diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style1/view.png b/2.sdk/gui/lv_watch/resource/png/dial_style1/view.png new file mode 100644 index 00000000..d4d08278 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style1/view.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/0.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/0.png new file mode 100644 index 00000000..b63f4d30 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/0.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/1.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/1.png new file mode 100644 index 00000000..23ce1cb9 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/1.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/2.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/2.png new file mode 100644 index 00000000..75606130 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/2.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/3.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/3.png new file mode 100644 index 00000000..8aa96644 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/3.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/4.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/4.png new file mode 100644 index 00000000..86c53aaa Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/4.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/5.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/5.png new file mode 100644 index 00000000..67ee008e Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/5.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/6.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/6.png new file mode 100644 index 00000000..c028667b Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/6.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/7.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/7.png new file mode 100644 index 00000000..bc794b97 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/7.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/8.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/8.png new file mode 100644 index 00000000..f2580de8 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/8.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/9.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/9.png new file mode 100644 index 00000000..b0737826 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/9.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/bg.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/bg.png new file mode 100644 index 00000000..b465ac78 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/bg.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/cloundy.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/cloundy.png new file mode 100644 index 00000000..bc1edac1 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/cloundy.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/degree.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/degree.png new file mode 100644 index 00000000..080a3fbf Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/degree.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/dial_style2.json b/2.sdk/gui/lv_watch/resource/png/dial_style2/dial_style2.json new file mode 100644 index 00000000..aa30cb9e --- /dev/null +++ b/2.sdk/gui/lv_watch/resource/png/dial_style2/dial_style2.json @@ -0,0 +1,357 @@ +{ + "name": "rocket", + "preview_img": "R:/png/dial_rocket/icon_dial_rocket.png", + "bg_img": "R:/png/dial_rocket/icon_rocket.png", + "configurable": 0, + "element_ll": [ + { + "element_pos": { + "x": 120, + "y": 40 + }, + "element_cnt": 1, + "act_type": 1, + "layer": 0, + "element_dsc_ll": [ + { + "element_type": 1, + "element_name": "数字时钟", + "img_cnt": 4, + "img_ll": [ + { + "img_type": 10, + "img_pos": { + "x": 0, + "y": 0 + }, + "sub_img_cnt": 10, + "sub_img_ll": [ + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_0.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_1.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_2.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_3.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_4.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_5.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_6.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_7.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_8.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_9.png" + } + ] + }, + { + "img_type": 11, + "img_pos": { + "x": 50, + "y": 0 + }, + "sub_img_cnt": 10, + "sub_img_ll": [ + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_0.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_1.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_2.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_3.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_4.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_5.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_6.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_7.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_8.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_9.png" + } + ] + }, + { + "img_type": 12, + "img_pos": { + "x": 44, + "y": 95 + }, + "sub_img_cnt": 10, + "sub_img_ll": [ + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_s_0.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_s_1.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_s_2.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_s_3.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_s_4.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_s_5.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_s_6.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_s_7.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_s_8.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_s_9.png" + } + ] + }, + { + "img_type": 13, + "img_pos": { + "x": 72, + "y": 95 + }, + "sub_img_cnt": 10, + "sub_img_ll": [ + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_s_0.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_s_1.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_s_2.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_s_3.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_s_4.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_s_5.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_s_6.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_s_7.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_s_8.png" + }, + { + "sub_img": "R:/png/dial_rocket/icon_rocket_digital_s_9.png" + } + ] + } + ], + "label_cnt": 0, + "label_ll": [ + { + "label_type": 5, + "text": "", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 25, + "y": 190 + }, + "font_size": 20 + } + ], + "bar": { + "bar_type": 0, + "bar_pos": { + "x": 8, + "y": 9 + }, + "bar_color": { + "r": 77, + "g": 88, + "b": 99 + }, + "bar_w": 11, + "bar_h": 12 + } + } + ] + }, + { + "element_pos": { + "x": 100, + "y": 185 + }, + "element_cnt": 1, + "act_type": 5, + "layer": 0, + "element_dsc_ll": [ + { + "element_type": 5, + "element_name": "日期", + "img_cnt": 0, + "img_ll": [ + ], + "label_cnt": 4, + "label_ll": [ + { + "label_type": 8, + "text": "", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 0, + "y": 0 + }, + "font_size": 20 + }, + { + "label_type": 10, + "text": "月", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 25, + "y": 0 + }, + "font_size": 20 + }, + { + "label_type": 9, + "text": "", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 45, + "y": 0 + }, + "font_size": 20 + }, + { + "label_type": 10, + "text": "日", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 70, + "y": 0 + }, + "font_size": 20 + } + ], + "bar": { + "bar_type": 0, + "bar_pos": { + "x": 8, + "y": 9 + }, + "bar_color": { + "r": 77, + "g": 88, + "b": 99 + }, + "bar_w": 11, + "bar_h": 12 + } + } + ] + }, + { + "element_pos": { + "x": 190, + "y": 185 + }, + "element_cnt": 1, + "act_type": 4, + "layer": 0, + "element_dsc_ll": [ + { + "element_type": 4, + "element_name": "星期", + "img_cnt": 0, + "img_ll": [ + ], + "label_cnt": 1, + "label_ll": [ + { + "label_type": 5, + "text": "", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 0, + "y": 0 + }, + "font_size": 20 + } + ], + "bar": { + "bar_type": 0, + "bar_pos": { + "x": 8, + "y": 9 + }, + "bar_color": { + "r": 77, + "g": 88, + "b": 99 + }, + "bar_w": 11, + "bar_h": 12 + } + } + ] + } + ] +} diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/fri.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/fri.png new file mode 100644 index 00000000..e080f60a Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/fri.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/mon.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/mon.png new file mode 100644 index 00000000..3e9729c8 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/mon.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/pre.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/pre.png new file mode 100644 index 00000000..3f8b20c2 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/pre.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/rain.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/rain.png new file mode 100644 index 00000000..26a5e63a Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/rain.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/sat.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/sat.png new file mode 100644 index 00000000..1dadb7b8 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/sat.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/snow.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/snow.png new file mode 100644 index 00000000..b1b9abd7 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/snow.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/sun.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/sun.png new file mode 100644 index 00000000..4461b249 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/sun.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/sunny.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/sunny.png new file mode 100644 index 00000000..3663868f Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/sunny.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/thu.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/thu.png new file mode 100644 index 00000000..06223678 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/thu.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/tue.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/tue.png new file mode 100644 index 00000000..e8becc59 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/tue.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style2/wed.png b/2.sdk/gui/lv_watch/resource/png/dial_style2/wed.png new file mode 100644 index 00000000..1cbbe77f Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style2/wed.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/0.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/0.png new file mode 100644 index 00000000..71fcf0c2 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/0.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/1.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/1.png new file mode 100644 index 00000000..2cf69117 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/1.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/2.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/2.png new file mode 100644 index 00000000..6fe6967c Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/2.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/3.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/3.png new file mode 100644 index 00000000..e51f3434 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/3.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/4.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/4.png new file mode 100644 index 00000000..cd611e97 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/4.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/5.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/5.png new file mode 100644 index 00000000..d1592989 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/5.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/6.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/6.png new file mode 100644 index 00000000..dd2e3d3f Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/6.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/7.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/7.png new file mode 100644 index 00000000..3051da3d Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/7.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/8.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/8.png new file mode 100644 index 00000000..5424cf2a Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/8.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/9.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/9.png new file mode 100644 index 00000000..3745f21b Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/9.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/bg.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/bg.png new file mode 100644 index 00000000..b465ac78 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/bg.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie.png new file mode 100644 index 00000000..3a27a618 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/0.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/0.png new file mode 100644 index 00000000..dc172818 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/0.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/1.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/1.png new file mode 100644 index 00000000..6e274780 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/1.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/10.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/10.png new file mode 100644 index 00000000..9b6213d6 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/10.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/2.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/2.png new file mode 100644 index 00000000..cad28043 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/2.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/3.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/3.png new file mode 100644 index 00000000..c61eb6da Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/3.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/4.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/4.png new file mode 100644 index 00000000..b96cf764 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/4.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/5.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/5.png new file mode 100644 index 00000000..eb1032ef Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/5.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/6.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/6.png new file mode 100644 index 00000000..5a861908 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/6.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/7.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/7.png new file mode 100644 index 00000000..42e75f5f Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/7.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/8.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/8.png new file mode 100644 index 00000000..64ae9f33 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/8.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/9.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/9.png new file mode 100644 index 00000000..7623c9c5 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/9.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/colon.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/colon.png new file mode 100644 index 00000000..3d1ca9c1 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/colon.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/dial_style3.json b/2.sdk/gui/lv_watch/resource/png/dial_style3/dial_style3.json new file mode 100644 index 00000000..31517579 --- /dev/null +++ b/2.sdk/gui/lv_watch/resource/png/dial_style3/dial_style3.json @@ -0,0 +1,627 @@ +{ + "name": "dial_style3", + "preview_img": "R:/png/dial_style3/pre.png", + "bg_img": "R:/png/dial_style3/bg.png", + "configurable": 0, + "element_ll": [ + { + "element_pos": { + "x": 32, + "y": 127 + }, + "element_cnt": 1, + "act_type": 1, + "layer": 0, + "element_dsc_ll": [ + { + "element_type": 1, + "element_name": "数字时钟", + "img_cnt": 5, + "img_ll": [ + { + "img_type": 10, + "img_pos": { + "x": 0, + "y": 0 + }, + "sub_img_cnt": 10, + "sub_img_ll": [ + { + "sub_img": "R:/png/dial_style3/0.png" + }, + { + "sub_img": "R:/png/dial_style3/1.png" + }, + { + "sub_img": "R:/png/dial_style3/2.png" + }, + { + "sub_img": "R:/png/dial_style3/3.png" + }, + { + "sub_img": "R:/png/dial_style3/4.png" + }, + { + "sub_img": "R:/png/dial_style3/5.png" + }, + { + "sub_img": "R:/png/dial_style3/6.png" + }, + { + "sub_img": "R:/png/dial_style3/7.png" + }, + { + "sub_img": "R:/png/dial_style3/8.png" + }, + { + "sub_img": "R:/png/dial_style3/9.png" + } + ] + }, + { + "img_type": 11, + "img_pos": { + "x": 40, + "y": 0 + }, + "sub_img_cnt": 10, + "sub_img_ll": [ + { + "sub_img": "R:/png/dial_style3/0.png" + }, + { + "sub_img": "R:/png/dial_style3/1.png" + }, + { + "sub_img": "R:/png/dial_style3/2.png" + }, + { + "sub_img": "R:/png/dial_style3/3.png" + }, + { + "sub_img": "R:/png/dial_style3/4.png" + }, + { + "sub_img": "R:/png/dial_style3/5.png" + }, + { + "sub_img": "R:/png/dial_style3/6.png" + }, + { + "sub_img": "R:/png/dial_style3/7.png" + }, + { + "sub_img": "R:/png/dial_style3/8.png" + }, + { + "sub_img": "R:/png/dial_style3/9.png" + } + ] + }, + { + "img_type": 12, + "img_pos": { + "x": 94, + "y": 0 + }, + "sub_img_cnt": 10, + "sub_img_ll": [ + { + "sub_img": "R:/png/dial_style3/0.png" + }, + { + "sub_img": "R:/png/dial_style3/1.png" + }, + { + "sub_img": "R:/png/dial_style3/2.png" + }, + { + "sub_img": "R:/png/dial_style3/3.png" + }, + { + "sub_img": "R:/png/dial_style3/4.png" + }, + { + "sub_img": "R:/png/dial_style3/5.png" + }, + { + "sub_img": "R:/png/dial_style3/6.png" + }, + { + "sub_img": "R:/png/dial_style3/7.png" + }, + { + "sub_img": "R:/png/dial_style3/8.png" + }, + { + "sub_img": "R:/png/dial_style3/9.png" + } + ] + }, + { + "img_type": 13, + "img_pos": { + "x": 134, + "y": 0 + }, + "sub_img_cnt": 10, + "sub_img_ll": [ + { + "sub_img": "R:/png/dial_style3/0.png" + }, + { + "sub_img": "R:/png/dial_style3/1.png" + }, + { + "sub_img": "R:/png/dial_style3/2.png" + }, + { + "sub_img": "R:/png/dial_style3/3.png" + }, + { + "sub_img": "R:/png/dial_style3/4.png" + }, + { + "sub_img": "R:/png/dial_style3/5.png" + }, + { + "sub_img": "R:/png/dial_style3/6.png" + }, + { + "sub_img": "R:/png/dial_style3/7.png" + }, + { + "sub_img": "R:/png/dial_style3/8.png" + }, + { + "sub_img": "R:/png/dial_style3/9.png" + } + ] + }, + { + "img_type": 16, + "img_pos": { + "x": 80, + "y": 0 + }, + "sub_img_cnt": 1, + "sub_img_ll": [ + { + "sub_img": "R:/png/dial_style3/colon.png" + } + ] + } + ], + "label_cnt": 0, + "label_ll": [ + { + "label_type": 5, + "text": "", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 25, + "y": 190 + }, + "font_size": 20 + } + ], + "bar": { + "bar_type": 0, + "bar_pos": { + "x": 8, + "y": 9 + }, + "bar_color": { + "r": 77, + "g": 88, + "b": 99 + }, + "bar_w": 11, + "bar_h": 12 + } + } + ] + }, + { + "element_pos": { + "x": 40, + "y": 35 + }, + "element_cnt": 1, + "act_type": 5, + "layer": 0, + "element_dsc_ll": [ + { + "element_type": 5, + "element_name": "日期", + "img_cnt": 0, + "img_ll": [ + ], + "label_cnt": 3, + "label_ll": [ + { + "label_type": 9, + "text": "", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 0, + "y": 0 + }, + "font_size": 20 + }, + { + "label_type": 10, + "text": "/", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 25, + "y": 0 + }, + "font_size": 20 + }, + { + "label_type": 8, + "text": "", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 35, + "y": 0 + }, + "font_size": 20 + } + ], + "bar": { + "bar_type": 0, + "bar_pos": { + "x": 8, + "y": 9 + }, + "bar_color": { + "r": 77, + "g": 88, + "b": 99 + }, + "bar_w": 11, + "bar_h": 12 + } + } + ] + }, + { + "element_pos": { + "x": 40, + "y": 60 + }, + "element_cnt": 1, + "act_type": 4, + "layer": 0, + "element_dsc_ll": [ + { + "element_type": 4, + "element_name": "星期", + "img_cnt": 0, + "img_ll": [ + ], + "label_cnt": 1, + "label_ll": [ + { + "label_type": 5, + "text": "", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 0, + "y": 0 + }, + "font_size": 20 + } + ], + "bar": { + "bar_type": 0, + "bar_pos": { + "x": 8, + "y": 9 + }, + "bar_color": { + "r": 77, + "g": 88, + "b": 99 + }, + "bar_w": 11, + "bar_h": 12 + } + } + ] + }, + { + "element_pos": { + "x": 120, + "y": 20 + }, + "element_cnt": 1, + "act_type": 7, + "layer": 0, + "element_dsc_ll": [ + { + "element_type": 7, + "element_name": "卡路里", + "img_cnt": 2, + "img_ll": [ + { + "img_type": 70, + "img_pos": { + "x": 30, + "y": 30 + }, + "sub_img_cnt": 1, + "sub_img_ll": [ + { + "sub_img": "R:/png/dial_style3/calorie.png" + } + ] + }, + { + "img_type": 75, + "img_pos": { + "x": 0, + "y": 0 + }, + "sub_img_cnt": 11, + "sub_img_ll": [ + { + "sub_img": "R:/png/dial_style3/calorie/0.png" + }, + { + "sub_img": "R:/png/dial_style3/calorie/1.png" + }, + { + "sub_img": "R:/png/dial_style3/calorie/2.png" + }, + { + "sub_img": "R:/png/dial_style3/calorie/3.png" + }, + { + "sub_img": "R:/png/dial_style3/calorie/4.png" + }, + { + "sub_img": "R:/png/dial_style3/calorie/5.png" + }, + { + "sub_img": "R:/png/dial_style3/calorie/6.png" + }, + { + "sub_img": "R:/png/dial_style3/calorie/7.png" + }, + { + "sub_img": "R:/png/dial_style3/calorie/8.png" + }, + { + "sub_img": "R:/png/dial_style3/calorie/9.png" + }, + { + "sub_img": "R:/png/dial_style3/calorie/10.png" + } + ] + } + ], + "label_cnt": 2, + "label_ll": [ + { + "label_type": 15, + "text": "", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 0, + "y": 50 + }, + "font_size": 20 + }, + { + "label_type": 16, + "text": "KCAL", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 0, + "y": 70 + }, + "font_size": 12 + } + ], + "bar": { + "bar_type": 0, + "bar_pos": { + "x": 8, + "y": 9 + }, + "bar_color": { + "r": 77, + "g": 88, + "b": 99 + }, + "bar_w": 11, + "bar_h": 12 + } + } + ] + }, + { + "element_pos": { + "x": 20, + "y": 210 + }, + "element_cnt": 1, + "act_type": 13, + "layer": 0, + "element_dsc_ll": [ + { + "element_type": 13, + "element_name": "心率", + "img_cnt": 2, + "img_ll": [ + { + "img_type": 130, + "img_pos": { + "x": 30, + "y": 30 + }, + "sub_img_cnt": 1, + "sub_img_ll": [ + { + "sub_img": "R:/png/dial_style3/heart.png" + } + ] + }, + { + "img_type": 135, + "img_pos": { + "x": 0, + "y": 0 + }, + "sub_img_cnt": 1, + "sub_img_ll": [ + + { + "sub_img": "R:/png/dial_style3/heart_image.png" + } + ] + } + ], + "label_cnt": 2, + "label_ll": [ + { + "label_type": 24, + "text": "", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 55, + "y": 0 + }, + "font_size": 20 + }, + { + "label_type": 25, + "text": "BPM", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 60, + "y": 25 + }, + "font_size": 12 + } + ], + "bar": { + "bar_type": 0, + "bar_pos": { + "x": 8, + "y": 9 + }, + "bar_color": { + "r": 77, + "g": 88, + "b": 99 + }, + "bar_w": 11, + "bar_h": 12 + } + } + ] + }, + { + "element_pos": { + "x": 150, + "y": 230 + }, + "element_cnt": 1, + "act_type": 8, + "layer": 0, + "element_dsc_ll": [ + { + "element_type": 8, + "element_name": "计步", + "img_cnt": 1, + "img_ll": [ + { + "img_type": 80, + "img_pos": { + "x": 10, + "y": 0 + }, + "sub_img_cnt": 1, + "sub_img_ll": [ + { + "sub_img": "R:/png/dial_style3/step.png" + } + ] + } + ], + "label_cnt": 1, + "label_ll": [ + { + "label_type": 17, + "text": "", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 0, + "y": 30 + }, + "font_size": 20 + } + ], + "bar": { + "bar_type": 0, + "bar_pos": { + "x": 8, + "y": 9 + }, + "bar_color": { + "r": 77, + "g": 88, + "b": 99 + }, + "bar_w": 11, + "bar_h": 12 + } + } + ] + } + ] +} diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/heart.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/heart.png new file mode 100644 index 00000000..fd43add4 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/heart.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/heart_image.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/heart_image.png new file mode 100644 index 00000000..651f1c9c Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/heart_image.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/pre.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/pre.png new file mode 100644 index 00000000..7b4356b8 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/pre.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style3/step.png b/2.sdk/gui/lv_watch/resource/png/dial_style3/step.png new file mode 100644 index 00000000..acbeba2b Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style3/step.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style4/0.png b/2.sdk/gui/lv_watch/resource/png/dial_style4/0.png new file mode 100644 index 00000000..107ebb9b Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style4/0.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style4/1.png b/2.sdk/gui/lv_watch/resource/png/dial_style4/1.png new file mode 100644 index 00000000..d9b24846 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style4/1.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style4/2.png b/2.sdk/gui/lv_watch/resource/png/dial_style4/2.png new file mode 100644 index 00000000..6626142e Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style4/2.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style4/3.png b/2.sdk/gui/lv_watch/resource/png/dial_style4/3.png new file mode 100644 index 00000000..a4de1f27 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style4/3.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style4/4.png b/2.sdk/gui/lv_watch/resource/png/dial_style4/4.png new file mode 100644 index 00000000..c0acb3f0 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style4/4.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style4/5.png b/2.sdk/gui/lv_watch/resource/png/dial_style4/5.png new file mode 100644 index 00000000..6641b3a0 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style4/5.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style4/6.png b/2.sdk/gui/lv_watch/resource/png/dial_style4/6.png new file mode 100644 index 00000000..fe577709 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style4/6.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style4/7.png b/2.sdk/gui/lv_watch/resource/png/dial_style4/7.png new file mode 100644 index 00000000..de2ae6d1 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style4/7.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style4/8.png b/2.sdk/gui/lv_watch/resource/png/dial_style4/8.png new file mode 100644 index 00000000..d5047068 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style4/8.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style4/9.png b/2.sdk/gui/lv_watch/resource/png/dial_style4/9.png new file mode 100644 index 00000000..f54ed4ea Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style4/9.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style4/bg.png b/2.sdk/gui/lv_watch/resource/png/dial_style4/bg.png new file mode 100644 index 00000000..b465ac78 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style4/bg.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style4/colon.png b/2.sdk/gui/lv_watch/resource/png/dial_style4/colon.png new file mode 100644 index 00000000..e6cdfc5a Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style4/colon.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style4/dial_style4.json b/2.sdk/gui/lv_watch/resource/png/dial_style4/dial_style4.json new file mode 100644 index 00000000..f26327b6 --- /dev/null +++ b/2.sdk/gui/lv_watch/resource/png/dial_style4/dial_style4.json @@ -0,0 +1,508 @@ +{ + "name": "dial_style4", + "preview_img": "R:/png/dial_style4/pre.png", + "bg_img": "R:/png/dial_style4/bg.png", + "configurable": 0, + "element_ll": [ + { + "element_pos": { + "x": 0, + "y": 45 + }, + "element_cnt": 1, + "act_type": 1, + "layer": 0, + "element_dsc_ll": [ + { + "element_type": 1, + "element_name": "数字时钟", + "img_cnt": 4, + "img_ll": [ + { + "img_type": 10, + "img_pos": { + "x": 5, + "y": 0 + }, + "sub_img_cnt": 10, + "sub_img_ll": [ + { + "sub_img": "R:/png/dial_style4/0.png" + }, + { + "sub_img": "R:/png/dial_style4/1.png" + }, + { + "sub_img": "R:/png/dial_style4/2.png" + }, + { + "sub_img": "R:/png/dial_style4/3.png" + }, + { + "sub_img": "R:/png/dial_style4/4.png" + }, + { + "sub_img": "R:/png/dial_style4/5.png" + }, + { + "sub_img": "R:/png/dial_style4/6.png" + }, + { + "sub_img": "R:/png/dial_style4/7.png" + }, + { + "sub_img": "R:/png/dial_style4/8.png" + }, + { + "sub_img": "R:/png/dial_style4/9.png" + } + ] + }, + { + "img_type": 11, + "img_pos": { + "x": 57, + "y": 0 + }, + "sub_img_cnt": 10, + "sub_img_ll": [ + { + "sub_img": "R:/png/dial_style4/0.png" + }, + { + "sub_img": "R:/png/dial_style4/1.png" + }, + { + "sub_img": "R:/png/dial_style4/2.png" + }, + { + "sub_img": "R:/png/dial_style4/3.png" + }, + { + "sub_img": "R:/png/dial_style4/4.png" + }, + { + "sub_img": "R:/png/dial_style4/5.png" + }, + { + "sub_img": "R:/png/dial_style4/6.png" + }, + { + "sub_img": "R:/png/dial_style4/7.png" + }, + { + "sub_img": "R:/png/dial_style4/8.png" + }, + { + "sub_img": "R:/png/dial_style4/9.png" + } + ] + }, + { + "img_type": 12, + "img_pos": { + "x": 131, + "y": 0 + }, + "sub_img_cnt": 10, + "sub_img_ll": [ + { + "sub_img": "R:/png/dial_style4/0.png" + }, + { + "sub_img": "R:/png/dial_style4/1.png" + }, + { + "sub_img": "R:/png/dial_style4/2.png" + }, + { + "sub_img": "R:/png/dial_style4/3.png" + }, + { + "sub_img": "R:/png/dial_style4/4.png" + }, + { + "sub_img": "R:/png/dial_style4/5.png" + }, + { + "sub_img": "R:/png/dial_style4/6.png" + }, + { + "sub_img": "R:/png/dial_style4/7.png" + }, + { + "sub_img": "R:/png/dial_style4/8.png" + }, + { + "sub_img": "R:/png/dial_style4/9.png" + } + ] + }, + { + "img_type": 13, + "img_pos": { + "x": 183, + "y": 0 + }, + "sub_img_cnt": 10, + "sub_img_ll": [ + { + "sub_img": "R:/png/dial_style4/0.png" + }, + { + "sub_img": "R:/png/dial_style4/1.png" + }, + { + "sub_img": "R:/png/dial_style4/2.png" + }, + { + "sub_img": "R:/png/dial_style4/3.png" + }, + { + "sub_img": "R:/png/dial_style4/4.png" + }, + { + "sub_img": "R:/png/dial_style4/5.png" + }, + { + "sub_img": "R:/png/dial_style4/6.png" + }, + { + "sub_img": "R:/png/dial_style4/7.png" + }, + { + "sub_img": "R:/png/dial_style4/8.png" + }, + { + "sub_img": "R:/png/dial_style4/9.png" + } + ] + }, + { + "img_type": 16, + "img_pos": { + "x": 109, + "y": 0 + }, + "sub_img_cnt": 1, + "sub_img_ll": [ + { + "sub_img": "R:/png/dial_style4/colon.png" + } + ] + } + ], + "label_cnt": 0, + "label_ll": [ + { + "label_type": 5, + "text": "", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 25, + "y": 190 + }, + "font_size": 20 + } + ], + "bar": { + "bar_type": 0, + "bar_pos": { + "x": 8, + "y": 9 + }, + "bar_color": { + "r": 77, + "g": 88, + "b": 99 + }, + "bar_w": 11, + "bar_h": 12 + } + } + ] + }, + { + "element_pos": { + "x": 40, + "y": 250 + }, + "element_cnt": 1, + "act_type": 5, + "layer": 0, + "element_dsc_ll": [ + { + "element_type": 5, + "element_name": "日期", + "img_cnt": 0, + "img_ll": [ + ], + "label_cnt": 5, + "label_ll": [ + { + "label_type": 7, + "text": "", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 0, + "y": 0 + }, + "font_size": 28 + }, + { + "label_type": 10, + "text": "-", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 65, + "y": 0 + }, + "font_size": 28 + }, + { + "label_type": 8, + "text": "", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 80, + "y": 0 + }, + "font_size": 28 + }, + { + "label_type": 10, + "text": "-", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 115, + "y": 0 + }, + "font_size": 28 + }, + { + "label_type": 9, + "text": "", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 130, + "y": 0 + }, + "font_size": 28 + } + ], + "bar": { + "bar_type": 0, + "bar_pos": { + "x": 8, + "y": 9 + }, + "bar_color": { + "r": 77, + "g": 88, + "b": 99 + }, + "bar_w": 11, + "bar_h": 12 + } + } + ] + }, + { + "element_pos": { + "x": 50, + "y": 215 + }, + "element_cnt": 1, + "act_type": 4, + "layer": 0, + "element_dsc_ll": [ + { + "element_type": 4, + "element_name": "星期", + "img_cnt": 0, + "img_ll": [ + ], + "label_cnt": 1, + "label_ll": [ + { + "label_type": 5, + "text": "", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 0, + "y": 0 + }, + "font_size": 24 + } + ], + "bar": { + "bar_type": 0, + "bar_pos": { + "x": 8, + "y": 9 + }, + "bar_color": { + "r": 77, + "g": 88, + "b": 99 + }, + "bar_w": 11, + "bar_h": 12 + } + } + ] + }, + { + "element_pos": { + "x": 50, + "y": 150 + }, + "element_cnt": 1, + "act_type": 8, + "layer": 0, + "element_dsc_ll": [ + { + "element_type": 8, + "element_name": "计步", + "img_cnt": 1, + "img_ll": [ + { + "img_type": 80, + "img_pos": { + "x": 0, + "y": 0 + }, + "sub_img_cnt": 1, + "sub_img_ll": [ + { + "sub_img": "R:/png/dial_style4/step.png" + } + ] + } + ], + "label_cnt": 1, + "label_ll": [ + { + "label_type": 17, + "text": "", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": -5, + "y": 30 + }, + "font_size": 20 + } + ], + "bar": { + "bar_type": 0, + "bar_pos": { + "x": 8, + "y": 9 + }, + "bar_color": { + "r": 77, + "g": 88, + "b": 99 + }, + "bar_w": 11, + "bar_h": 12 + } + } + ] + }, + { + "element_pos": { + "x": 120, + "y": 150 + }, + "element_cnt": 1, + "act_type": 15, + "layer": 0, + "element_dsc_ll": [ + { + "element_type": 15, + "element_name": "自定义", + "img_cnt": 1, + "img_ll": [ + { + "img_type": 150, + "img_pos": { + "x": 0, + "y": 0 + }, + "sub_img_cnt": 1, + "sub_img_ll": [ + { + "sub_img": "R:/png/dial_style4/icon.png" + } + ] + } + ], + "label_cnt": 0, + "label_ll": [ + { + "label_type": 5, + "text": "", + "text_color": { + "r": 255, + "g": 255, + "b": 255 + }, + "text_pos": { + "x": 30, + "y": 220 + }, + "font_size": 20 + } + ], + "bar": { + "bar_type": 0, + "bar_pos": { + "x": 8, + "y": 9 + }, + "bar_color": { + "r": 77, + "g": 88, + "b": 99 + }, + "bar_w": 11, + "bar_h": 12 + } + } + ] + } + ] +} diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style4/icon.png b/2.sdk/gui/lv_watch/resource/png/dial_style4/icon.png new file mode 100644 index 00000000..d394ae62 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style4/icon.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style4/pre.png b/2.sdk/gui/lv_watch/resource/png/dial_style4/pre.png new file mode 100644 index 00000000..50e4b13d Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style4/pre.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/dial_style4/step.png b/2.sdk/gui/lv_watch/resource/png/dial_style4/step.png new file mode 100644 index 00000000..385213b6 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_style4/step.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/health_measure/icon_heart_rate_measure_done.png b/2.sdk/gui/lv_watch/resource/png/health_measure/icon_heart_rate_measure_done.png new file mode 100644 index 00000000..379a1d7e Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/health_measure/icon_heart_rate_measure_done.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/health_measure/icon_heart_rate_measure_fail.png b/2.sdk/gui/lv_watch/resource/png/health_measure/icon_heart_rate_measure_fail.png new file mode 100644 index 00000000..8f54b604 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/health_measure/icon_heart_rate_measure_fail.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/health_measure/icon_spo2_measure_done.png b/2.sdk/gui/lv_watch/resource/png/health_measure/icon_spo2_measure_done.png new file mode 100644 index 00000000..b960ff2c Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/health_measure/icon_spo2_measure_done.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/health_measure/icon_spo2_measure_fail.png b/2.sdk/gui/lv_watch/resource/png/health_measure/icon_spo2_measure_fail.png new file mode 100644 index 00000000..3485e059 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/health_measure/icon_spo2_measure_fail.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/health_measure/icon_temperature_measure_bg.png b/2.sdk/gui/lv_watch/resource/png/health_measure/icon_temperature_measure_bg.png new file mode 100644 index 00000000..194fac38 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/health_measure/icon_temperature_measure_bg.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/primary_function/ICON_CALLLOG.png b/2.sdk/gui/lv_watch/resource/png/primary_function/ICON_CALLLOG.png new file mode 100644 index 00000000..b0d385de Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/primary_function/ICON_CALLLOG.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/primary_function/ICON_PHONEBOOK.png b/2.sdk/gui/lv_watch/resource/png/primary_function/ICON_PHONEBOOK.png new file mode 100644 index 00000000..87f2989d Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/primary_function/ICON_PHONEBOOK.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/primary_function/ICON_SPO2.png b/2.sdk/gui/lv_watch/resource/png/primary_function/ICON_SPO2.png new file mode 100644 index 00000000..7e8f2ff2 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/primary_function/ICON_SPO2.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/primary_function/ICON_STEP.png b/2.sdk/gui/lv_watch/resource/png/primary_function/ICON_STEP.png new file mode 100644 index 00000000..51572f07 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/primary_function/ICON_STEP.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/primary_function/ICON_TEMPERATURE.png b/2.sdk/gui/lv_watch/resource/png/primary_function/ICON_TEMPERATURE.png new file mode 100644 index 00000000..e7365f15 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/primary_function/ICON_TEMPERATURE.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_activity.png b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_activity.png index df017af9..79a63133 100644 Binary files a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_activity.png and b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_activity.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_aiknowledge.png b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_aiknowledge.png index 6bf69c84..38e1bea6 100644 Binary files a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_aiknowledge.png and b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_aiknowledge.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_alarm.png b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_alarm.png index 2e96473d..c8f26ee6 100644 Binary files a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_alarm.png and b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_alarm.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_answeredquestions.png b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_answeredquestions.png index 4137139c..28acd3ef 100644 Binary files a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_answeredquestions.png and b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_answeredquestions.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_calculator.png b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_calculator.png index 1db8d8b1..83ff24df 100644 Binary files a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_calculator.png and b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_calculator.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_calendar.png b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_calendar.png index 1010e372..cc30ff2b 100644 Binary files a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_calendar.png and b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_calendar.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_dialpad.png b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_dialpad.png index a021426c..aada7350 100644 Binary files a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_dialpad.png and b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_dialpad.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_makefriends.png b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_makefriends.png index 908e46a3..13dd015d 100644 Binary files a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_makefriends.png and b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_makefriends.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_message.png b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_message.png index 1441c624..3f6ec80f 100644 Binary files a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_message.png and b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_message.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_music.png b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_music.png index 0ee60228..5faacebe 100644 Binary files a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_music.png and b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_music.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_timer.png b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_timer.png index 2e96473d..0e0a682e 100644 Binary files a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_timer.png and b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_timer.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_weather.png b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_weather.png index 5454718b..103f0181 100644 Binary files a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_weather.png and b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_weather.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/primary_function/icon_weather00.png b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_weather00.png new file mode 100644 index 00000000..5454718b Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/primary_function/icon_weather00.png differ diff --git "a/2.sdk/gui/lv_watch/resource/png/primary_function/\350\241\200\345\216\213.png" "b/2.sdk/gui/lv_watch/resource/png/primary_function/\350\241\200\345\216\213.png" new file mode 100644 index 00000000..61de959d Binary files /dev/null and "b/2.sdk/gui/lv_watch/resource/png/primary_function/\350\241\200\345\216\213.png" differ diff --git a/2.sdk/gui/lv_watch/resource/png/stopwatch/icon_stopwatch_background.png b/2.sdk/gui/lv_watch/resource/png/stopwatch/icon_stopwatch_background.png index 1eb6252d..fb2c524c 100644 Binary files a/2.sdk/gui/lv_watch/resource/png/stopwatch/icon_stopwatch_background.png and b/2.sdk/gui/lv_watch/resource/png/stopwatch/icon_stopwatch_background.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_MY_VOICE_ITEM_BG.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_MY_VOICE_ITEM_BG.png new file mode 100644 index 00000000..2ed1a5f0 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_MY_VOICE_ITEM_BG.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_MY_VOICE_ITEM_PLAYING1.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_MY_VOICE_ITEM_PLAYING1.png new file mode 100644 index 00000000..71ed9009 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_MY_VOICE_ITEM_PLAYING1.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_MY_VOICE_ITEM_PLAYING2.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_MY_VOICE_ITEM_PLAYING2.png new file mode 100644 index 00000000..0a965122 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_MY_VOICE_ITEM_PLAYING2.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_MY_VOICE_ITEM_PLAYING3.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_MY_VOICE_ITEM_PLAYING3.png new file mode 100644 index 00000000..1142859d Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_MY_VOICE_ITEM_PLAYING3.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_NO_NETWORK.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_NO_NETWORK.png new file mode 100644 index 00000000..ad8b6fd3 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_NO_NETWORK.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_OTHER_VOICE_ITEM_BG.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_OTHER_VOICE_ITEM_BG.png new file mode 100644 index 00000000..8f9b7b43 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_OTHER_VOICE_ITEM_BG.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING1.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING1.png new file mode 100644 index 00000000..776f2168 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING1.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING2.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING2.png new file mode 100644 index 00000000..e8361ed3 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING2.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING3.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING3.png new file mode 100644 index 00000000..5d6f491c Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING3.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORDING1.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORDING1.png new file mode 100644 index 00000000..67013c4e Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORDING1.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORDING2.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORDING2.png new file mode 100644 index 00000000..58396080 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORDING2.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORDING3.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORDING3.png new file mode 100644 index 00000000..228d6d29 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORDING3.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORDING4.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORDING4.png new file mode 100644 index 00000000..2a6acb12 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORDING4.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORDING5.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORDING5.png new file mode 100644 index 00000000..b91916b8 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORDING5.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORD_BUTTON.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORD_BUTTON.png new file mode 100644 index 00000000..03de46b3 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORD_BUTTON.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORD_BUTTON_PRESSED.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORD_BUTTON_PRESSED.png new file mode 100644 index 00000000..61a42868 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORD_BUTTON_PRESSED.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_BG.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_BG.png new file mode 100644 index 00000000..515ca029 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_BG.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_FAILED.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_FAILED.png new file mode 100644 index 00000000..a8b30953 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_FAILED.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_PROMPT1.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_PROMPT1.png new file mode 100644 index 00000000..75429969 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_PROMPT1.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_PROMPT2.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_PROMPT2.png new file mode 100644 index 00000000..72af6383 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_PROMPT2.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_PROMPT3.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_PROMPT3.png new file mode 100644 index 00000000..7cffd8ee Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_PROMPT3.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_SUCC.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_SUCC.png new file mode 100644 index 00000000..a968a738 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_SUCC.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_TEXT_ITEM_BG.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_TEXT_ITEM_BG.png new file mode 100644 index 00000000..219c1b41 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_TEXT_ITEM_BG.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_UNREAD_FLAG.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_UNREAD_FLAG.png new file mode 100644 index 00000000..e8e89f3a Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_UNREAD_FLAG.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_VOICE_ITEM_DAMAGE.png b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_VOICE_ITEM_DAMAGE.png new file mode 100644 index 00000000..1bb84f8a Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_VOICE_ITEM_DAMAGE.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/icon_bkg.png b/2.sdk/gui/lv_watch/resource/png/wechat/icon_bkg.png new file mode 100644 index 00000000..ce1c1e06 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/icon_bkg.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/icon_expression_test.png b/2.sdk/gui/lv_watch/resource/png/wechat/icon_expression_test.png new file mode 100644 index 00000000..17f12033 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/icon_expression_test.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/icon_nonet_debt2.png b/2.sdk/gui/lv_watch/resource/png/wechat/icon_nonet_debt2.png new file mode 100644 index 00000000..bbe0e1fa Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/icon_nonet_debt2.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/wechat/icon_send_emo.png b/2.sdk/gui/lv_watch/resource/png/wechat/icon_send_emo.png new file mode 100644 index 00000000..b4e5d7c1 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/icon_send_emo.png differ diff --git a/2.sdk/product/craneg_modem/config/watch/lv_watch_conf.h b/2.sdk/product/craneg_modem/config/watch/lv_watch_conf.h index 104da8cf..4bf7d556 100644 --- a/2.sdk/product/craneg_modem/config/watch/lv_watch_conf.h +++ b/2.sdk/product/craneg_modem/config/watch/lv_watch_conf.h @@ -37,7 +37,7 @@ #define USE_LV_WATCH_WEATHER 1 #define USE_LV_WATCH_PEDOMETER 1 #define USE_LV_WATCH_BODYINFO 1 -#define USE_LV_WATCH_RECORD 1 +#define USE_LV_WATCH_RECORD 0 //1 #define USE_LV_WATCH_PHONEBOOK 1 #define USE_LV_WATCH_PHONE 1 #define USE_LV_WATCH_SETTING 1 @@ -52,7 +52,7 @@ #define USE_LV_WATCH_DIAL_DOLPHIN 1 #define USE_LV_WATCH_DIAL_ROCKET 1 #define USE_LV_WATCH_DIAL_BEAR 1 -#define USE_LV_WATCH_MAKE_FRIENDS 1 +#define USE_LV_WATCH_MAKE_FRIENDS 0 // 1 #define USE_LV_WATCH_QRCODE 0 #define USE_LV_WATCH_QRCODE_SCAN 0 #define USE_LV_WATCH_STOPWATCH 1 @@ -70,7 +70,7 @@ #define USE_LV_WATCH_VOICE_MSG 1 #define USE_LV_WATCH_RESTART_AND_RESET 1 #define USE_LV_WATCH_CAMERA 1 -#define USE_LV_WATCH_SPEECH_RECOG 1 +#define USE_LV_WATCH_SPEECH_RECOG 0 // 1 #define USE_LV_WATCH_ALBUM 1 #define USE_LV_WATCH_ENGINEER_MODE 1 #define USE_LV_WATCH_CTA 1 @@ -164,4 +164,29 @@ #define USE_LV_WATCH_WAKE_UP_SHORT_TIME 1 + +//CHENG_MODIFY +#define __CHENG_DEBUG__ + +#define __MMI_ZHSX_SUPPORT__ + +#if 1 //def MMI_WECHAT_SUPPORT +#define __MMI_WECHAT_SUPPORT__ +#endif + +#if 1 //def MMI_HEALTH_MEASURE_HEART_SUPPORT +#define __MMI_HEALTH_MEASURE_HEART_SUPPORT__ +#endif + +#if 1 //def MMI_HEALTH_MEASURE_SPO2_SUPPORT +#define __MMI_HEALTH_MEASURE_SPO2_SUPPORT__ +#endif + +#if 1 //def MMI_HEALTH_MEASURE_TEMPERATURE_SUPPORT +#define __MMI_HEALTH_MEASURE_TEMPERATURE_SUPPORT__ +#endif + +//CHENG_MODIFY + + #endif /*LV_WATCH_CONF_H*/ diff --git a/2.sdk/product/craneg_modem/lv_gui_main.c b/2.sdk/product/craneg_modem/lv_gui_main.c index 8a1274a6..0bbd8475 100644 --- a/2.sdk/product/craneg_modem/lv_gui_main.c +++ b/2.sdk/product/craneg_modem/lv_gui_main.c @@ -1349,9 +1349,6 @@ int ui_init_phase1(void) return 0; } -#ifndef __CHENG_DEBUG__ -#define __CHENG_DEBUG__ -#endif int ui_init_phase2(void) {