240X320 size modify
authorCCC <2393524978@qq.com>
Mon, 3 Apr 2023 06:38:28 +0000 (14:38 +0800)
committerCCC <2393524978@qq.com>
Mon, 3 Apr 2023 06:38:28 +0000 (14:38 +0800)
187 files changed:
2.sdk/gui/lv_watch/CMakeLists.txt
2.sdk/gui/lv_watch/framework/language/lang_ch.c
2.sdk/gui/lv_watch/framework/language/lang_en.c
2.sdk/gui/lv_watch/framework/nvm/ui_nvm.h
2.sdk/gui/lv_watch/framework/nvm/ui_nvm_api.c
2.sdk/gui/lv_watch/include/ui_activity_id.h
2.sdk/gui/lv_watch/include/ui_nvm_interface.h
2.sdk/gui/lv_watch/include/ui_textid.h
2.sdk/gui/lv_watch/lv_apps/alarm/alarm_set.c
2.sdk/gui/lv_watch/lv_apps/album/album.c
2.sdk/gui/lv_watch/lv_apps/audio_player/audio_player.c
2.sdk/gui/lv_watch/lv_apps/dial/dial_element.c
2.sdk/gui/lv_watch/lv_apps/health_measure/health_heart_rate.c [new file with mode: 0644]
2.sdk/gui/lv_watch/lv_apps/health_measure/health_heart_rate.h [new file with mode: 0644]
2.sdk/gui/lv_watch/lv_apps/health_measure/health_spo2.c [new file with mode: 0644]
2.sdk/gui/lv_watch/lv_apps/health_measure/health_spo2.h [new file with mode: 0644]
2.sdk/gui/lv_watch/lv_apps/health_measure/health_temperature.c [new file with mode: 0644]
2.sdk/gui/lv_watch/lv_apps/health_measure/health_temperature.h [new file with mode: 0644]
2.sdk/gui/lv_watch/lv_apps/imgviewer/imgviewer.c
2.sdk/gui/lv_watch/lv_apps/pedometer/bodyinfo.c
2.sdk/gui/lv_watch/lv_apps/pedometer/pedometer.c
2.sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu.c
2.sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu_data.c [new file with mode: 0644]
2.sdk/gui/lv_watch/lv_apps/shutdown/shutdown.c
2.sdk/gui/lv_watch/lv_apps/stopwatch/stopwatch.c
2.sdk/gui/lv_watch/lv_apps/timer/timer_clock.c
2.sdk/gui/lv_watch/lv_apps/wechat/wechat.h [new file with mode: 0644]
2.sdk/gui/lv_watch/lv_apps/wechat/wechat_ui.c [new file with mode: 0644]
2.sdk/gui/lv_watch/lv_theme_watch_night.c
2.sdk/gui/lv_watch/lv_theme_watch_night.h
2.sdk/gui/lv_watch/lv_watch.c
2.sdk/gui/lv_watch/lv_watch.h
2.sdk/gui/lv_watch/lv_watch_res.h
2.sdk/gui/lv_watch/resource/ext/png/poweron/img_poweron_logo.png
2.sdk/gui/lv_watch/resource/gif/anim_heart_rate_measuring.gif [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/gif/anim_power_off.gif
2.sdk/gui/lv_watch/resource/gif/anim_power_on.gif
2.sdk/gui/lv_watch/resource/gif/anim_spo2_measuring.gif [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/background/_img_background1.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/background/_img_background2.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/background/img_background1.png
2.sdk/gui/lv_watch/resource/png/common/ICON_COMMON_BG_BLACK.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/common/ICON_COMMON_BG_WHITE.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/common/ICON_COMMON_SUCCESS.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial/buildin_dial_list.db
2.sdk/gui/lv_watch/resource/png/dial_bear/_icon_bear.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_bear/bear_watch.json
2.sdk/gui/lv_watch/resource/png/dial_bear/icon_bear.png
2.sdk/gui/lv_watch/resource/png/dial_default_ambient/_am_digit_bg.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_default_ambient/am_digit.json
2.sdk/gui/lv_watch/resource/png/dial_default_ambient/am_digit_bg.png
2.sdk/gui/lv_watch/resource/png/dial_dolphin/dolphin_watch.json
2.sdk/gui/lv_watch/resource/png/dial_dolphin/icon_dolphin.png
2.sdk/gui/lv_watch/resource/png/dial_dolphin/icon_dolphin0024.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_dolphin/icon_dolphin008.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_rocket/_icon_rocket.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_rocket/icon_rocket.png
2.sdk/gui/lv_watch/resource/png/dial_rocket/rocket_watch.json
2.sdk/gui/lv_watch/resource/png/dial_style1/bg.png
2.sdk/gui/lv_watch/resource/png/dial_style1/style1_watch.json
2.sdk/gui/lv_watch/resource/png/dial_style1/view.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/0.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/1.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/2.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/3.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/4.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/5.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/6.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/7.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/8.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/9.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/bg.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/cloundy.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/degree.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/dial_style2.json [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/fri.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/mon.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/pre.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/rain.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/sat.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/snow.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/sun.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/sunny.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/thu.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/tue.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style2/wed.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/0.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/1.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/2.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/3.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/4.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/5.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/6.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/7.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/8.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/9.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/bg.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/calorie.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/0.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/1.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/10.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/2.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/3.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/4.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/5.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/6.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/7.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/8.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/calorie/9.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/colon.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/dial_style3.json [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/heart.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/heart_image.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/pre.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style3/step.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style4/0.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style4/1.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style4/2.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style4/3.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style4/4.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style4/5.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style4/6.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style4/7.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style4/8.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style4/9.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style4/bg.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style4/colon.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style4/dial_style4.json [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style4/icon.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style4/pre.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/dial_style4/step.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/health_measure/icon_heart_rate_measure_done.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/health_measure/icon_heart_rate_measure_fail.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/health_measure/icon_spo2_measure_done.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/health_measure/icon_spo2_measure_fail.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/health_measure/icon_temperature_measure_bg.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/primary_function/ICON_CALLLOG.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/primary_function/ICON_PHONEBOOK.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/primary_function/ICON_SPO2.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/primary_function/ICON_STEP.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/primary_function/ICON_TEMPERATURE.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/primary_function/icon_activity.png
2.sdk/gui/lv_watch/resource/png/primary_function/icon_aiknowledge.png
2.sdk/gui/lv_watch/resource/png/primary_function/icon_alarm.png
2.sdk/gui/lv_watch/resource/png/primary_function/icon_answeredquestions.png
2.sdk/gui/lv_watch/resource/png/primary_function/icon_calculator.png
2.sdk/gui/lv_watch/resource/png/primary_function/icon_calendar.png
2.sdk/gui/lv_watch/resource/png/primary_function/icon_dialpad.png
2.sdk/gui/lv_watch/resource/png/primary_function/icon_makefriends.png
2.sdk/gui/lv_watch/resource/png/primary_function/icon_message.png
2.sdk/gui/lv_watch/resource/png/primary_function/icon_music.png
2.sdk/gui/lv_watch/resource/png/primary_function/icon_timer.png
2.sdk/gui/lv_watch/resource/png/primary_function/icon_weather.png
2.sdk/gui/lv_watch/resource/png/primary_function/icon_weather00.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/primary_function/血压.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/stopwatch/icon_stopwatch_background.png
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_MY_VOICE_ITEM_BG.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_MY_VOICE_ITEM_PLAYING1.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_MY_VOICE_ITEM_PLAYING2.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_MY_VOICE_ITEM_PLAYING3.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_NO_NETWORK.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_OTHER_VOICE_ITEM_BG.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING1.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING2.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING3.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORDING1.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORDING2.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORDING3.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORDING4.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORDING5.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORD_BUTTON.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_RECORD_BUTTON_PRESSED.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_BG.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_FAILED.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_PROMPT1.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_PROMPT2.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_PROMPT3.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_SENDING_SUCC.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_TEXT_ITEM_BG.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_UNREAD_FLAG.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/ICON_WECHAT_VOICE_ITEM_DAMAGE.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/icon_bkg.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/icon_expression_test.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/icon_nonet_debt2.png [new file with mode: 0644]
2.sdk/gui/lv_watch/resource/png/wechat/icon_send_emo.png [new file with mode: 0644]
2.sdk/product/craneg_modem/config/watch/lv_watch_conf.h
2.sdk/product/craneg_modem/lv_gui_main.c

index 2dca58c..c96b077 100644 (file)
@@ -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
index 2420979..728e1da 100644 (file)
@@ -833,6 +833,21 @@ const void * lang_text_ch[] = {
 
     /*alipay*/
     "已在手机端解绑 请重新绑定",
+        
+    //CHENG_MODIFY
+    "正在测量",
+    "测量完成",
+    "测量失败",
+    "未正确佩戴",
+    "请保持佩戴",
+    "当前体温",
+    "当前腕温",
+    "血氧",
+    "体温",
+
+    //CHENG_MODIFY
+
+
 };
 
 /**
index 5e6075c..b6377e0 100644 (file)
@@ -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
+
+
 };
 
 
index 9141050..20a4b8a 100644 (file)
@@ -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);
index 14557cf..87f76c3 100644 (file)
@@ -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;
index ef4d87d..bd1ebb4 100644 (file)
@@ -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;
index b49d8fc..1303e62 100644 (file)
@@ -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;
index 2242fbf..7158fd1 100644 (file)
@@ -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;
index cb7e3df..d47f70d 100644 (file)
@@ -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);
index afff810..3e82ac7 100644 (file)
@@ -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) {
index b890c1a..0861521 100644 (file)
@@ -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);
index adb0651..dcb1ae5 100644 (file)
@@ -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 (file)
index 0000000..1b4816d
--- /dev/null
@@ -0,0 +1,330 @@
+
+
+
+/*********************
+ *      INCLUDES
+ *********************/
+#include "lv_watch.h"
+
+#ifdef __MMI_HEALTH_MEASURE_HEART_SUPPORT__
+
+#include <stdio.h>
+
+
+
+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 (file)
index 0000000..0fdbacb
--- /dev/null
@@ -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 (file)
index 0000000..084cb68
--- /dev/null
@@ -0,0 +1,324 @@
+
+
+
+/*********************
+ *      INCLUDES
+ *********************/
+#include "lv_watch.h"
+
+#ifdef __MMI_HEALTH_MEASURE_SPO2_SUPPORT__
+
+#include <stdio.h>
+
+
+
+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 (file)
index 0000000..10dc316
--- /dev/null
@@ -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 (file)
index 0000000..983c1d8
--- /dev/null
@@ -0,0 +1,313 @@
+
+
+
+/*********************
+ *      INCLUDES
+ *********************/
+#include "lv_watch.h"
+
+#ifdef __MMI_HEALTH_MEASURE_TEMPERATURE_SUPPORT__
+
+#include <stdio.h>
+
+
+
+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 (file)
index 0000000..3948c48
--- /dev/null
@@ -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
index 42cb5b2..f58d6c8 100644 (file)
@@ -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)
index 2aa7e60..ee1684d 100644 (file)
@@ -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);
index e63ea33..f90f320 100644 (file)
@@ -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));
 
index c3d5560..858cd33 100644 (file)
@@ -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 (file)
index 0000000..409b003
--- /dev/null
@@ -0,0 +1,58 @@
+
+
+
+#include "lv_watch.h"
+
+#if USE_LV_WATCH_PRIMARY_MENU != 0
+
+#include <stdio.h>
+
+
+#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*/
index 7cfd570..e53eef7 100644 (file)
@@ -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);
 
index 0591d28..85e6f24 100644 (file)
@@ -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;
index 525b785..3dd4c51 100644 (file)
@@ -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 (file)
index 0000000..3095e93
--- /dev/null
@@ -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 (file)
index 0000000..c3efb71
--- /dev/null
@@ -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
index 965e91d..370e047 100644 (file)
@@ -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);
index 2905508..29a9ffa 100644 (file)
@@ -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;
index 139bc21..26c684b 100644 (file)
@@ -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) {
index 8f1854e..3c38516 100644 (file)
@@ -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
 
 /*********************
index ee2dfda..18e358f 100644 (file)
@@ -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 */
index 62c2284..14e9dc0 100644 (file)
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 (file)
index 0000000..5b3cb0a
Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/gif/anim_heart_rate_measuring.gif differ
index d40a86d..8bb85b3 100644 (file)
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
index 57c1df1..401c404 100644 (file)
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 (file)
index 0000000..727917f
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 (file)
index 0000000..cc277fb
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 (file)
index 0000000..bd2bc9a
Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/background/_img_background2.png differ
index cc277fb..b465ac7 100644 (file)
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 (file)
index 0000000..b465ac7
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 (file)
index 0000000..bd2bc9a
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 (file)
index 0000000..8859f43
Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/common/ICON_COMMON_SUCCESS.png differ
index 9a31bf5..da02856 100644 (file)
@@ -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 (file)
index 0000000..ca6c914
Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_bear/_icon_bear.png differ
index 11d2a41..6b888ac 100644 (file)
@@ -7,7 +7,7 @@
     {
       "element_pos": {
         "x": 120,
-        "y": 0
+        "y": 40
       },
       "element_cnt": 1,
       "act_type": 2,
index ca6c914..c0ec851 100644 (file)
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 (file)
index 0000000..f6215b4
Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_default_ambient/_am_digit_bg.png differ
index e7ee60f..b5b175e 100644 (file)
@@ -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,
index f6215b4..b465ac7 100644 (file)
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
index 67ddacd..489b37f 100644 (file)
@@ -7,7 +7,7 @@
     {
       "element_pos": {
         "x": 25,
-        "y": 50
+        "y": 70
       },
       "element_cnt": 1,
       "act_type": 1,
     {
       "element_pos": {
         "x": 25,
-        "y": 190
+        "y": 220
       },
       "element_cnt": 1,
       "act_type": 5,
     },
        {
       "element_pos": {
-        "x": 115,
-        "y": 190
+        "x": 110,
+        "y": 220
       },
       "element_cnt": 1,
       "act_type": 4,
index e04e5e9..78127d7 100644 (file)
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 (file)
index 0000000..06d3a4f
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 (file)
index 0000000..e04e5e9
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 (file)
index 0000000..1edc0bc
Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/dial_rocket/_icon_rocket.png differ
index 1edc0bc..6a29ff9 100644 (file)
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
index aa30cb9..f534e2d 100644 (file)
@@ -7,7 +7,7 @@
     {
       "element_pos": {
         "x": 120,
-        "y": 40
+        "y": 70
       },
       "element_cnt": 1,
       "act_type": 1,
               "img_type": 12,
               "img_pos": {
                 "x": 44,
-                "y": 95
+                "y": 100
               },
               "sub_img_cnt": 10,
               "sub_img_ll": [
               "img_type": 13,
               "img_pos": {
                 "x": 72,
-                "y": 95
+                "y": 100
               },
               "sub_img_cnt": 10,
               "sub_img_ll": [
     {
       "element_pos": {
         "x": 100,
-        "y": 185
+        "y": 225
       },
       "element_cnt": 1,
       "act_type": 5,
        {
       "element_pos": {
         "x": 190,
-        "y": 185
+        "y": 225
       },
       "element_cnt": 1,
       "act_type": 4,
index 71c4338..401f384 100644 (file)
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
index 66e7ea9..93baf9d 100644 (file)
@@ -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": 
           "label_cnt": 1,
           "label_ll": [
             {
-              "label_type": 18,
+              "label_type": 17,
               "text": "10249",
               "text_color": {
                 "r": 255,
           "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 (file)
index 0000000..d4d0827
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 (file)
index 0000000..b63f4d3
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 (file)
index 0000000..23ce1cb
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 (file)
index 0000000..7560613
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 (file)
index 0000000..8aa9664
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 (file)
index 0000000..86c53aa
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 (file)
index 0000000..67ee008
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 (file)
index 0000000..c028667
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 (file)
index 0000000..bc794b9
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 (file)
index 0000000..f2580de
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 (file)
index 0000000..b073782
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 (file)
index 0000000..b465ac7
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 (file)
index 0000000..bc1edac
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 (file)
index 0000000..080a3fb
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 (file)
index 0000000..aa30cb9
--- /dev/null
@@ -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 (file)
index 0000000..e080f60
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 (file)
index 0000000..3e9729c
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 (file)
index 0000000..3f8b20c
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 (file)
index 0000000..26a5e63
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 (file)
index 0000000..1dadb7b
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 (file)
index 0000000..b1b9abd
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 (file)
index 0000000..4461b24
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 (file)
index 0000000..3663868
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 (file)
index 0000000..0622367
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 (file)
index 0000000..e8becc5
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 (file)
index 0000000..1cbbe77
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 (file)
index 0000000..71fcf0c
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 (file)
index 0000000..2cf6911
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 (file)
index 0000000..6fe6967
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 (file)
index 0000000..e51f343
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 (file)
index 0000000..cd611e9
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 (file)
index 0000000..d159298
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 (file)
index 0000000..dd2e3d3
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 (file)
index 0000000..3051da3
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 (file)
index 0000000..5424cf2
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 (file)
index 0000000..3745f21
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 (file)
index 0000000..b465ac7
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 (file)
index 0000000..3a27a61
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 (file)
index 0000000..dc17281
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 (file)
index 0000000..6e27478
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 (file)
index 0000000..9b6213d
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 (file)
index 0000000..cad2804
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 (file)
index 0000000..c61eb6d
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 (file)
index 0000000..b96cf76
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 (file)
index 0000000..eb1032e
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 (file)
index 0000000..5a86190
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 (file)
index 0000000..42e75f5
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 (file)
index 0000000..64ae9f3
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 (file)
index 0000000..7623c9c
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 (file)
index 0000000..3d1ca9c
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 (file)
index 0000000..3151757
--- /dev/null
@@ -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 (file)
index 0000000..fd43add
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 (file)
index 0000000..651f1c9
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 (file)
index 0000000..7b4356b
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 (file)
index 0000000..acbeba2
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 (file)
index 0000000..107ebb9
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 (file)
index 0000000..d9b2484
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 (file)
index 0000000..6626142
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 (file)
index 0000000..a4de1f2
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 (file)
index 0000000..c0acb3f
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 (file)
index 0000000..6641b3a
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 (file)
index 0000000..fe57770
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 (file)
index 0000000..de2ae6d
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 (file)
index 0000000..d504706
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 (file)
index 0000000..f54ed4e
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 (file)
index 0000000..b465ac7
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 (file)
index 0000000..e6cdfc5
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 (file)
index 0000000..f26327b
--- /dev/null
@@ -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 (file)
index 0000000..d394ae6
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 (file)
index 0000000..50e4b13
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 (file)
index 0000000..385213b
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 (file)
index 0000000..379a1d7
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 (file)
index 0000000..8f54b60
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 (file)
index 0000000..b960ff2
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 (file)
index 0000000..3485e05
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 (file)
index 0000000..194fac3
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 (file)
index 0000000..b0d385d
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 (file)
index 0000000..87f2989
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 (file)
index 0000000..7e8f2ff
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 (file)
index 0000000..51572f0
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 (file)
index 0000000..e7365f1
Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/primary_function/ICON_TEMPERATURE.png differ
index df017af..79a6313 100644 (file)
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
index 6bf69c8..38e1bea 100644 (file)
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
index 2e96473..c8f26ee 100644 (file)
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
index 4137139..28acd3e 100644 (file)
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
index 1db8d8b..83ff24d 100644 (file)
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
index 1010e37..cc30ff2 100644 (file)
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
index a021426..aada735 100644 (file)
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
index 908e46a..13dd015 100644 (file)
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
index 1441c62..3f6ec80 100644 (file)
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
index 0ee6022..5faaceb 100644 (file)
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
index 2e96473..0e0a682 100644 (file)
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
index 5454718..103f018 100644 (file)
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 (file)
index 0000000..5454718
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/血压.png b/2.sdk/gui/lv_watch/resource/png/primary_function/血压.png
new file mode 100644 (file)
index 0000000..61de959
Binary files /dev/null and "b/2.sdk/gui/lv_watch/resource/png/primary_function/\350\241\200\345\216\213.png" differ
index 1eb6252..fb2c524 100644 (file)
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 (file)
index 0000000..2ed1a5f
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 (file)
index 0000000..71ed900
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 (file)
index 0000000..0a96512
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 (file)
index 0000000..1142859
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 (file)
index 0000000..ad8b6fd
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 (file)
index 0000000..8f9b7b4
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 (file)
index 0000000..776f216
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 (file)
index 0000000..e8361ed
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 (file)
index 0000000..5d6f491
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 (file)
index 0000000..67013c4
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 (file)
index 0000000..5839608
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 (file)
index 0000000..228d6d2
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 (file)
index 0000000..2a6acb1
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 (file)
index 0000000..b91916b
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 (file)
index 0000000..03de46b
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 (file)
index 0000000..61a4286
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 (file)
index 0000000..515ca02
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 (file)
index 0000000..a8b3095
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 (file)
index 0000000..7542996
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 (file)
index 0000000..72af638
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 (file)
index 0000000..7cffd8e
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 (file)
index 0000000..a968a73
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 (file)
index 0000000..219c1b4
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 (file)
index 0000000..e8e89f3
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 (file)
index 0000000..1bb84f8
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 (file)
index 0000000..ce1c1e0
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 (file)
index 0000000..17f1203
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 (file)
index 0000000..bbe0e1f
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 (file)
index 0000000..b4e5d7c
Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/wechat/icon_send_emo.png differ
index 104da8c..4bf7d55 100644 (file)
@@ -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
 
 #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*/
index 8a1274a..0bbd847 100644 (file)
@@ -1349,9 +1349,6 @@ int ui_init_phase1(void)
     return 0;
 }
 
-#ifndef __CHENG_DEBUG__
-#define __CHENG_DEBUG__
-#endif
 
 int ui_init_phase2(void)
 {