gengxin
authorCCC <2393524978@qq.com>
Sat, 9 Dec 2023 08:45:05 +0000 (16:45 +0800)
committerCCC <2393524978@qq.com>
Sat, 9 Dec 2023 08:45:05 +0000 (16:45 +0800)
35 files changed:
2.sdk/project/Z5_DS_Z12XW_QCB/gui/lv_watch/resource/png/setting/ICON_SETTING_NEW_SMS_SILENT.png [new file with mode: 0644]
2.sdk/project/Z5_DS_Z12XW_QCB/product/craneg_modem/config/watch/lv_conf_CUSTOM.h
2.sdk/project/Z5_DS_Z12XW_QCB/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h
2.sdk/project/Z5_Z12/product/craneg_modem/config/watch/lv_conf_CUSTOM.h
2.sdk/project/Z5_Z12/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h
2.sdk/sdk/gui/lv_watch/CMakeLists.txt
2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm.h
2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm_api.c
2.sdk/sdk/gui/lv_watch/include/ui_nvm_interface.h
2.sdk/sdk/gui/lv_watch/lv_apps/call_log/call_log.c
2.sdk/sdk/gui/lv_watch/lv_apps/call_log/call_log.h
2.sdk/sdk/gui/lv_watch/lv_apps/dialpad/dialpad.c
2.sdk/sdk/gui/lv_watch/lv_apps/dialpad/dialpad.h
2.sdk/sdk/gui/lv_watch/lv_apps/launcher/launcher.c
2.sdk/sdk/gui/lv_watch/lv_apps/mmi_remind/mmi_remind.c
2.sdk/sdk/gui/lv_watch/lv_apps/mmi_remind/mmi_remind.h
2.sdk/sdk/gui/lv_watch/lv_apps/phonebook/phonebook.c
2.sdk/sdk/gui/lv_watch/lv_apps/phonebook/phonebook.h
2.sdk/sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu.c
2.sdk/sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu.h
2.sdk/sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu_data.c
2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting.c
2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting.h
2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_ext.c [new file with mode: 0644]
2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_ext.h [new file with mode: 0644]
2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_new_sms_silent.c [new file with mode: 0644]
2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_new_sms_silent.h [new file with mode: 0644]
2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_page_main_menu_tts.c [new file with mode: 0644]
2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_page_main_menu_tts.h [new file with mode: 0644]
2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_sedentary_remind.c [new file with mode: 0644]
2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_sedentary_remind.h [new file with mode: 0644]
2.sdk/sdk/gui/lv_watch/lv_watch.c
2.sdk/sdk/gui/lv_watch/lv_watch_res.h
2.sdk/sdk/gui/lv_watch/mmi_default.h
2.sdk/sdk/gui/lvgl/hal/hal.h

diff --git a/2.sdk/project/Z5_DS_Z12XW_QCB/gui/lv_watch/resource/png/setting/ICON_SETTING_NEW_SMS_SILENT.png b/2.sdk/project/Z5_DS_Z12XW_QCB/gui/lv_watch/resource/png/setting/ICON_SETTING_NEW_SMS_SILENT.png
new file mode 100644 (file)
index 0000000..ccd896d
Binary files /dev/null and b/2.sdk/project/Z5_DS_Z12XW_QCB/gui/lv_watch/resource/png/setting/ICON_SETTING_NEW_SMS_SILENT.png differ
index 2745488..9cc85b1 100644 (file)
@@ -8,18 +8,15 @@
 
 //ui size
 #define USE_LV_WATCH_UI_240_240 1
-#define USE_LV_WATCH_UI_240_240_CIRCLE 1
+#define USE_LV_WATCH_UI_CIRCLE 1
+
 
-// mmi
-#define MMI_PROJECT_Z5_DS_Z12XW_QCB 1
 
 // drv
 #define DRV_PROJECT_Z5_DS_Z12XW_QCB 1
 
 
 
-
-
 #endif
 
 
index fe529ae..2e36580 100644 (file)
 
 #define __MMI_ZHSX_SUPPORT_SMS__
 
+// project mmi
+#define MMI_PROJECT_Z5_DS_Z12XW_QCB
+#define MMI_PROJECT_Z5_DS_Z12_COMMON
+
+
 #if 0 != USE_LV_WATCH_ALIPAY
 #define __MMI_ZHSX_SUPPORT_ALIPAY__
 #endif
 #define __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__
 
 #define __MMI_ZHSX_SUPPORT_PHONEBOOK_LIST_STYLE__
-//#define __MMI_PHONEBOOK_CALLLOG_IN_ONE_MENU__
 
 #define __MMI_ZHSX_SUPPORT_CHECK_SIM_UNBIND__
 
 
 #define __MMI_KEY_BACK_RUN_PHONEBOOK_WHEN_IN_DIAL__
 
-//#define __MMI_SEDENTARY_REMIND_SUPPORT__
+#define __MMI_PAGE_MAIN_MENU_TTS_SUPPORT__
+
+#define __MMI_SEDENTARY_REMIND_SUPPORT__
+
 
-//#define __MMI_PAGE_MAIN_MENU_TTS_SUPPORT__
 
 
 #endif
index 4afcaea..f4dc48b 100644 (file)
@@ -8,18 +8,15 @@
 
 //ui size
 #define USE_LV_WATCH_UI_240_240 1
-#define USE_LV_WATCH_UI_240_240_CIRCLE 1
+#define USE_LV_WATCH_UI_CIRCLE 1
+
 
-// mmi
-#define MMI_PROJECT_Z5_Z12 1
 
 // drv
 #define DRV_PROJECT_Z5_Z12 1
 
 
 
-
-
 #endif
 
 
index 9a10cf3..53021ac 100644 (file)
 #endif
 
 #ifdef USE_OEM_ZFB
-#define USE_LV_WATCH_ALIPAY 0 // 1
+#define USE_LV_WATCH_ALIPAY 1
 #else
 #define USE_LV_WATCH_ALIPAY 0
 #endif
 
 #define __MMI_ZHSX_SUPPORT_SMS__
 
+// project mmi
+#define MMI_PROJECT_Z5_DS_Z12
+#define MMI_PROJECT_Z5_DS_Z12_COMMON
+
+
 #if 0 != USE_LV_WATCH_ALIPAY
 #define __MMI_ZHSX_SUPPORT_ALIPAY__
 #endif
 //#define __MMI_ZHSX_SUPPORT_VIDEO_CALL_TONGXIN__
 
 #define __MMI_WECHAT_SUPPORT__
+#define __MMI_WECHAT_RECEIVE_AUDIO_USE_MP3__
 
 #define __MMI_MAIN_MENU_SWITCH_MENU__
 #define __MMI_MAIN_MENU_ONE_PAGE_STYLE__
index 9484640..1ff1d3c 100644 (file)
@@ -213,7 +213,6 @@ set(lv_watch_sources
        lv_apps/health_measure/health_heart_rate.c
        lv_apps/health_measure/health_spo2.c
        lv_apps/health_measure/health_temperature.c
-       lv_apps/setting/setting_main_menu_switch.c
        lv_apps/tool/tool.c
        lv_apps/mmi_remind/mmi_remind.c
        lv_apps/custom_function/custom_function.c
index b3222f2..df3a006 100644 (file)
@@ -54,9 +54,8 @@ extern "C" {
 #ifdef __MMI_SLEEP_FUNCTION_SUPPORT__
 #define NV_SECTION_UI_SLEEP_TIME_DATA_LEN                      (sizeof(nv_watch_sleep_time_t))
 #endif
-#define NV_SECTION_UI_DIAL_PAD_SWITCH_LEN                      (sizeof(nv_watch_switch_t))
-#define NV_SECTION_UI_WHITE_LIST_SWITCH_LEN                    (sizeof(nv_watch_switch_t))
 #define NV_SECTION_UI_MAIN_MENU_STYLE_LEN                      (sizeof(nv_watch_main_menu_style_t))
+#define NV_SECTION_UI_WATCH_SETTINGS_LEN                       (sizeof(nv_watch_setting_ext_t))
 #ifdef __MMI_ZHSX_SUPPORT_CHECK_SIM_UNBIND__
 #define NV_SECTION_UI_SIM_UNBIND_SWITCH_LEN                    (sizeof(nv_watch_switch_t))
 #define NV_SECTION_UI_SIM_ICCID_DATA_LEN                       (sizeof(nv_watch_sim_iccid_t))
@@ -169,9 +168,8 @@ typedef lv_fs_dir_t  ui_dir_t;
 #ifdef __MMI_SLEEP_FUNCTION_SUPPORT__
 #define NV_SECTION_UI_SLEEP_TIME_DATA_FILE                     "ui_sleep_time_data.nv"
 #endif
-#define NV_SECTION_UI_DIAL_PAD_SWITCH_FILE                     "ui_dial_pad_switch.nv"
-#define NV_SECTION_UI_WHITE_LIST_SWITCH_FILE           "ui_white_list_switch.nv"
 #define NV_SECTION_UI_MAIN_MENU_STYLE_FILE                     "ui_main_menu_style.nv"
+#define NV_SECTION_UI_WATCH_SETTINGS_FILE                      "ui_watch_settings.nv"
 #ifdef __MMI_ZHSX_SUPPORT_CHECK_SIM_UNBIND__
 #define NV_SECTION_UI_SIM_UNBIND_SWITCH_FILE           "ui_sim_unbind_switch.nv"
 #define NV_SECTION_UI_SIM_ICCID_DATA_FILE                      "ui_sim_iccid_data.nv"
index 8a08fe2..4d1859a 100644 (file)
@@ -100,12 +100,10 @@ uint32_t UI_NV_Get_Section_Len(NV_UI_SECTION_ID SectionId)
                case NV_SECTION_UI_SLEEP_TIME_DATA:
                        return (NV_SECTION_LEN(NV_SECTION_UI_SLEEP_TIME_DATA));
        #endif
-               case NV_SECTION_UI_DIAL_PAD_SWITCH:
-                       return (NV_SECTION_LEN(NV_SECTION_UI_DIAL_PAD_SWITCH));
-               case NV_SECTION_UI_WHITE_LIST_SWITCH:
-                       return (NV_SECTION_LEN(NV_SECTION_UI_WHITE_LIST_SWITCH));
                case NV_SECTION_UI_MAIN_MENU_STYLE:
                        return (NV_SECTION_LEN(NV_SECTION_UI_MAIN_MENU_STYLE));
+               case NV_SECTION_UI_WATCH_SETTINGS:
+                       return (NV_SECTION_LEN(NV_SECTION_UI_WATCH_SETTINGS));
        #ifdef __MMI_ZHSX_SUPPORT_CHECK_SIM_UNBIND__
                case NV_SECTION_UI_SIM_UNBIND_SWITCH:
                        return (NV_SECTION_LEN(NV_SECTION_UI_SIM_UNBIND_SWITCH));
@@ -225,12 +223,10 @@ char * UI_NV_Get_Section_path(NV_UI_SECTION_ID SectionId)
                case NV_SECTION_UI_SLEEP_TIME_DATA:
                        return (NV_SECTION_FILE_PATH(NV_SECTION_UI_SLEEP_TIME_DATA));
        #endif
-               case NV_SECTION_UI_DIAL_PAD_SWITCH:
-                       return (NV_SECTION_FILE_PATH(NV_SECTION_UI_DIAL_PAD_SWITCH));
-               case NV_SECTION_UI_WHITE_LIST_SWITCH:
-                       return (NV_SECTION_FILE_PATH(NV_SECTION_UI_WHITE_LIST_SWITCH));
                case NV_SECTION_UI_MAIN_MENU_STYLE:
                        return (NV_SECTION_FILE_PATH(NV_SECTION_UI_MAIN_MENU_STYLE));   
+               case NV_SECTION_UI_WATCH_SETTINGS:
+                       return (NV_SECTION_FILE_PATH(NV_SECTION_UI_WATCH_SETTINGS));
        #ifdef __MMI_ZHSX_SUPPORT_CHECK_SIM_UNBIND__
                case NV_SECTION_UI_SIM_UNBIND_SWITCH:
                        return (NV_SECTION_FILE_PATH(NV_SECTION_UI_SIM_UNBIND_SWITCH));
@@ -311,6 +307,7 @@ uint8_t UI_NV_Reset_Default(NV_UI_SECTION_ID SectionId)
 #endif
        nv_watch_switch_t * mmi_switch_data;
        nv_watch_main_menu_style_t * main_menu_style;
+       nv_watch_setting_ext_t * watch_settings;
 #ifdef __MMI_ZHSX_SUPPORT_CHECK_SIM_UNBIND__
        nv_watch_sim_iccid_t * sim_iccid_data;
 #endif
@@ -539,20 +536,6 @@ uint8_t UI_NV_Reset_Default(NV_UI_SECTION_ID SectionId)
                        TempData = (char *)sleep_time_data;
                        break;
        #endif
-                       
-               case NV_SECTION_UI_DIAL_PAD_SWITCH:
-                       mmi_switch_data = lv_mem_alloc(SectionLen);
-                       memset(mmi_switch_data, 0x0, SectionLen);
-                       mmi_dial_pad_switch_nv_default(mmi_switch_data);
-                       TempData = (char *)mmi_switch_data;
-                       break;
-               
-               case NV_SECTION_UI_WHITE_LIST_SWITCH:
-                       mmi_switch_data = lv_mem_alloc(SectionLen);
-                       memset(mmi_switch_data, 0x0, SectionLen);
-                       mmi_white_list_switch_nv_default(mmi_switch_data);
-                       TempData = (char *)mmi_switch_data;
-                       break;
 
                case NV_SECTION_UI_MAIN_MENU_STYLE:
                        main_menu_style = lv_mem_alloc(SectionLen);
@@ -560,6 +543,13 @@ uint8_t UI_NV_Reset_Default(NV_UI_SECTION_ID SectionId)
                        mmi_main_menu_style_nv_default(main_menu_style);
                        TempData = (char *)main_menu_style;
                        break;
+
+               case NV_SECTION_UI_WATCH_SETTINGS:
+                       watch_settings = lv_mem_alloc(SectionLen);
+                       memset(watch_settings, 0x0, SectionLen);
+                       mmi_watch_setting_ext_data_nv_default(watch_settings);
+                       TempData = (char *)watch_settings;
+                       break;
                        
        #ifdef __MMI_ZHSX_SUPPORT_CHECK_SIM_UNBIND__
                case NV_SECTION_UI_SIM_UNBIND_SWITCH:
index 647a797..90b459f 100644 (file)
@@ -300,6 +300,28 @@ typedef struct
 } __packed nv_watch_main_menu_style_t;
 
 
+typedef struct
+{
+    //uint8_t incoming_call_volume;
+       //uint8_t new_msg_volume;
+       //uint8_t media_volume;
+       //uint8_t power_on_off_volume;
+       uint8_t white_list_switch;
+       uint8_t dial_pad_switch;
+#ifdef __MMI_PAGE_MAIN_MENU_TTS_SUPPORT__
+       uint8_t page_main_menu_tts;
+#endif
+#ifdef __MMI_SEDENTARY_REMIND_SUPPORT__
+       uint8_t sedentary_switch;
+       uint16_t sedentary_minute;
+#endif
+#ifdef __MMI_NEW_SMS_SILENT_SUPPORT__
+       uint8_t new_sms_silent_switch;
+#endif
+
+} __packed nv_watch_setting_ext_t;
+
+
 #ifdef __MMI_ZHSX_SUPPORT_CHECK_SIM_UNBIND__
 #define NV_WATCH_SIM_ICCID_DATA_LEN      (20)
 
@@ -523,9 +545,8 @@ enum
 #ifdef __MMI_SLEEP_FUNCTION_SUPPORT__
        NV_SECTION_UI_SLEEP_TIME_DATA,                                  // nv_watch_sleep_time_t
 #endif
-       NV_SECTION_UI_DIAL_PAD_SWITCH,                                  // nv_watch_switch_t
-       NV_SECTION_UI_WHITE_LIST_SWITCH,                                // nv_watch_switch_t
        NV_SECTION_UI_MAIN_MENU_STYLE,                                  // nv_watch_main_menu_style_t
+       NV_SECTION_UI_WATCH_SETTINGS,                                   // nv_watch_setting_ext_t
 #ifdef __MMI_ZHSX_SUPPORT_CHECK_SIM_UNBIND__
        NV_SECTION_UI_SIM_UNBIND_SWITCH,                                // nv_watch_switch_t
        NV_SECTION_UI_SIM_ICCID_DATA,                                   // nv_watch_sim_iccid_t
index 458eeb1..d883cea 100644 (file)
 
 #ifdef __MMI_ZHSX_SUPPORT__
 
+#ifdef __MMI_PHONEBOOK_CALLLOG_IN_ONE_MENU__
+
+const void * status[] = {
+            (void *)ICON_CALL_LOG_OUTGOING_CALL,
+            (void *)ICON_CALL_LOG_INCOMING_CALL,
+            (void *)ICON_CALL_LOG_MISSED_CALL,
+            (void *)ICON_CALL_LOG_INCOMING_CALL,
+};
+
+static nv_watch_call_log_t * call_log_read_nvm(void)
+{
+    uint32_t length = sizeof(nv_watch_call_log_t);
+    nv_watch_call_log_t * data = (nv_watch_call_log_t *)lv_mem_alloc(length);
+    memset(data, 0, length);
+    if(length != UI_NV_Read_Req(NV_SECTION_UI_CALL_LOG, 0, length, (uint8_t *)data)) {
+        printf("%s: Occur error when reading call log information from NVM\n", __FUNCTION__);
+        lv_mem_free(data);
+        return NULL;
+    }
+    return data;
+}
+
+static void call_log_write_nvm(nv_watch_call_log_t * data)
+{
+    if(NULL == data) return;
+
+    uint32_t length = sizeof(nv_watch_call_log_t);
+    if(length != UI_NV_Write_Req(NV_SECTION_UI_CALL_LOG, 0, length, (uint8_t *)data)) {
+        printf("%s: Occur error when writing call log information to NVM\n", __FUNCTION__);
+        return;
+    }
+    lv_mem_free(data);
+}
+
+static uint8_t call_log_get_log_num(nv_watch_call_log_t * data)
+{
+    uint8_t i = 0;
+    for(i = 0; i < NV_WATCH_MAX_CALL_LOG_NUM; i++) {
+        if('\0' == data->info[i].number[0]) {
+            break;
+        }
+    }
+    return i;
+}
+
+static lv_call_log_obj_ext_t * call_log_get_ext(void)
+{
+       lv_obj_t * tab = mmi_phonebook_calllog_tab_calllog_get();
+       if(NULL == tab)
+               return NULL;
+       
+    lv_call_log_obj_ext_t * ext = lv_obj_get_ext_attr(tab);
+
+    return ext;
+}
+
+void call_log_update_call_log_info(call_status_t call_status, char * number, hal_rtc_t *time)
+{
+    // read from nvm first
+    nv_watch_call_log_t * nvm_call_log_list = call_log_read_nvm();
+    // move call log list
+    memmove(&nvm_call_log_list->info[1], &nvm_call_log_list->info[0], (NV_WATCH_MAX_CALL_LOG_NUM - 1) * sizeof(nv_watch_call_log_info_t));
+    // update call log info
+    memset(&nvm_call_log_list->info[0], 0, sizeof(nv_watch_call_log_info_t));
+    nvm_call_log_list->info[0].call_status = call_status;
+    nvm_call_log_list->info[0].month = time->tm_mon;
+    nvm_call_log_list->info[0].day = time->tm_mday;
+    nvm_call_log_list->info[0].hour = time->tm_hour;
+    nvm_call_log_list->info[0].min = time->tm_min;
+    memcpy(nvm_call_log_list->info[0].number, number, strlen(number));
+    // write to nvm after updating
+    call_log_write_nvm(nvm_call_log_list);
+}
+
+static void call_log_update_call_log_ll(uint8_t call_log_num, nv_watch_call_log_t * call_log_list)
+{
+    lv_call_log_obj_ext_t * ext = call_log_get_ext();
+    LV_ASSERT_MEM(ext);
+
+    uint8_t i = 0;
+    call_log_number_info_t * node = NULL;
+    nv_watch_call_log_info_t * info = NULL;
+
+    for(i = 0; i < call_log_num; i++) {
+        info = &call_log_list->info[i];
+        node = (call_log_number_info_t *)_lv_ll_ins_tail(ext->phone_number_list);
+        node->index = i;
+        node->phone_number = (char *)lv_mem_alloc(NV_CONTACTS_MAX_NUMBER_LEN);
+        memset(node->phone_number, 0, NV_CONTACTS_MAX_NUMBER_LEN);
+        memcpy(node->phone_number, info->number, NV_CONTACTS_MAX_NUMBER_LEN);
+    }
+}
+
+static lv_obj_t * call_log_no_log_info_create(lv_obj_t * obj)
+{
+    lv_obj_t * label = lv_label_create(obj, NULL);
+    lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26); //&lv_watch_font20);
+    lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
+    lv_obj_set_click(label, false);
+    lv_label_set_text_id(label, WATCH_TEXT_ID_NO_CALL_LOG_INFO);
+    lv_obj_align(label, obj, LV_ALIGN_CENTER, 0, -10);
+
+    return label;
+}
+
+static lv_obj_t * call_log_list_create(lv_obj_t * obj)
+{
+    lv_obj_t * title = lv_label_create(obj, NULL);
+    lv_obj_add_style(title, LV_LABEL_PART_MAIN, &lv_watch_font20_gray);
+    lv_label_set_align(title, LV_LABEL_ALIGN_CENTER);
+    lv_obj_set_click(title, false);
+    lv_label_set_text_id(title, WATCH_TEXT_ID_CALL_LOG);
+    lv_obj_align(title, obj, LV_ALIGN_IN_TOP_MID, 0, 10 + 10);
+
+    lv_obj_t * list = lv_list_create(obj, NULL);
+    lv_page_set_edge_flash(list, true);
+    lv_obj_add_style(list, LV_LIST_PART_EDGE_FLASH, &lv_watch_cont_opa1);
+    lv_obj_add_style(list, LV_LIST_PART_BG, &lv_watch_style_transp);
+       lv_list_set_scrollbar_mode(list, LV_SCROLLBAR_MODE_OFF);
+#ifdef USE_LV_WATCH_UI_CIRCLE
+       lv_obj_set_size(list, LV_HOR_RES - 40, LV_VER_RES - lv_obj_get_height(title) - 10 - 20);
+#else
+    lv_obj_set_size(list, LV_HOR_RES, LV_VER_RES - lv_obj_get_height(title)); // - LV_VER_RES / 10);
+#endif
+    lv_obj_align(list, title, LV_ALIGN_OUT_BOTTOM_MID, 0, 5); // 0);
+    lv_watch_obj_add_element(list);
+
+    return list;
+}
+
+static void call_log_log_btn_event_cb(lv_obj_t * btn, lv_event_t e)
+{
+    if(LV_EVENT_CLICKED != e) 
+               return;
+
+    lv_call_log_obj_ext_t * ext = call_log_get_ext();
+    LV_ASSERT_MEM(ext);
+
+    uint8_t index = lv_obj_get_user_data(btn).user_num;
+
+    call_log_number_info_t * node = NULL;
+    node = _lv_ll_get_head(ext->phone_number_list);
+    while(node) 
+       {
+        if(index == node->index) {
+            printf("%s: mo start\n", __FUNCTION__);
+            uint8_t length = strlen(node->phone_number);
+            char * number_mo = (char *)Hal_Mem_Alloc(length + 1);
+            memset(number_mo, 0, length + 1);
+            memcpy(number_mo, node->phone_number, length);
+            phone_voice_call_req(number_mo);
+            break;
+        } else {
+            node = _lv_ll_get_next(ext->phone_number_list, node);
+        }
+    }
+}
+
+static void call_log_content_create(lv_obj_t * list, uint8_t call_log_num, nv_watch_call_log_t * call_log_list)
+{
+    uint8_t i = 0;
+    char time_str[10];
+    phonebook_contact_t * contact_info = NULL;
+    char * tmp_num = NULL;
+    nv_watch_call_log_info_t * info = NULL;
+    lv_obj_t * btn[call_log_num];
+    lv_obj_t * label_number;
+    lv_obj_t * img_status;
+    lv_obj_t * label_time;
+    hal_rtc_t curr_time;
+    memset(&curr_time, 0, sizeof(hal_rtc_t));
+    Hal_Rtc_Gettime(&curr_time);
+
+    for(i = 0; i < call_log_num; i++) 
+       {
+               btn[i] = lv_list_add_btn(list, NULL, NULL);
+               lv_btn_set_layout(btn[i], LV_LAYOUT_ROW_MID);
+               //lv_obj_set_event_cb(btn[i], call_log_log_btn_event_cb);
+               //lv_watch_set_free_num(btn[i], i);
+
+        info = &call_log_list->info[i];
+        tmp_num = (char *)lv_mem_alloc(NV_CONTACTS_MAX_NUMBER_LEN);
+        memset(tmp_num, 0, NV_CONTACTS_MAX_NUMBER_LEN);
+        memcpy(tmp_num, info->number, NV_CONTACTS_MAX_NUMBER_LEN);
+        contact_info = phonebook_get_contact_info(tmp_num);
+        tmp_num = NULL;
+
+               lv_obj_t * cont = lv_cont_create(btn[i], NULL);
+               lv_cont_set_layout(cont, LV_LAYOUT_OFF);
+               lv_obj_set_width(cont, lv_obj_get_width(btn[i]));
+               lv_obj_set_height(cont, 70); //lv_obj_get_height(btn[i]));
+               lv_obj_add_style(cont, LV_CONT_PART_MAIN, &lv_style_transp);
+               lv_page_glue_obj(cont, true);
+               lv_watch_obj_add_element(cont);
+               lv_obj_set_click(cont, true);
+               lv_obj_set_event_cb(cont, call_log_log_btn_event_cb);
+               lv_watch_set_free_num(cont, i);
+
+               label_number = lv_label_create(cont, NULL);
+               lv_obj_add_style(label_number, LV_OBJ_PART_MAIN, &lv_watch_font24);
+               lv_label_set_text(label_number, info->number);
+               lv_label_set_long_mode(label_number, LV_LABEL_LONG_SROLL_CIRC);
+               lv_obj_set_width(label_number, lv_obj_get_width(btn[i]) - 40);
+               if(contact_info) 
+               {
+                       if(contact_info->contact_name)
+                               lv_label_set_text(label_number, contact_info->contact_name);
+                       lv_mem_free(contact_info);
+                       contact_info = NULL;
+               }
+
+               lv_obj_t * cont_status_time =  lv_cont_create(cont, NULL);
+               lv_cont_set_layout(cont_status_time, LV_LAYOUT_ROW_MID);
+               lv_cont_set_fit2(cont_status_time, LV_FIT_TIGHT, LV_FIT_TIGHT);
+               lv_obj_add_style(cont_status_time, LV_CONT_PART_MAIN, &lv_style_transp);
+               lv_page_glue_obj(cont_status_time, true);
+               lv_watch_obj_add_element(cont_status_time);
+
+               if(LV_BIDI_DIR_RTL == lv_obj_get_base_dir(btn[i])) {
+                  lv_obj_align(label_number, cont, LV_ALIGN_IN_TOP_RIGHT, -20, 5);
+                  lv_obj_align(cont_status_time, cont, LV_ALIGN_IN_BOTTOM_RIGHT, -20, -5);
+               } else {
+                  lv_obj_align(label_number, cont, LV_ALIGN_IN_TOP_LEFT, 20, 5);
+                  lv_obj_align(cont_status_time, cont, LV_ALIGN_IN_BOTTOM_LEFT, 20, -5);
+               }
+
+               img_status = lv_img_create(cont_status_time, NULL);
+               lv_img_set_src(img_status, status[info->call_status]);
+
+               if((curr_time.tm_mon == info->month) && (curr_time.tm_mday == info->day)) {
+                       snprintf(time_str, 10, "%02d:%02d", info->hour, info->min);
+               } else {
+                       snprintf(time_str, 10, "%02d/%02d", info->month, info->day);
+               }
+               label_time = lv_label_create(cont_status_time, NULL);
+               lv_label_set_text(label_time, time_str);
+               lv_obj_set_base_dir(label_time, LV_BIDI_DIR_LTR);
+
+               lv_watch_obj_add_element(btn[i]);
+    }
+}
+
+static void call_log_ll_init(void)
+{
+    lv_call_log_obj_ext_t * ext = call_log_get_ext();
+    LV_ASSERT_MEM(ext);
+
+    if(NULL == ext->phone_number_list) {
+        ext->phone_number_list = (lv_ll_t *)lv_mem_alloc(sizeof(lv_ll_t));
+        memset(ext->phone_number_list, 0, sizeof(lv_ll_t));
+        _lv_ll_init(ext->phone_number_list, sizeof(call_log_number_info_t));
+    }
+}
+
+static void call_log_ll_destroy(void)
+{
+    lv_call_log_obj_ext_t * ext = call_log_get_ext();
+    LV_ASSERT_MEM(ext);
+    call_log_number_info_t * node = NULL;
+    call_log_number_info_t * next_node = NULL;
+
+    if(ext->phone_number_list) {
+        node = (call_log_number_info_t *)_lv_ll_get_head(ext->phone_number_list);
+        while(node) {
+            //next node
+            next_node = (call_log_number_info_t *)_lv_ll_get_next(ext->phone_number_list, node);
+            if(node->phone_number) {
+                lv_mem_free(node->phone_number);
+                node->phone_number = NULL;
+            }
+            _lv_ll_remove(ext->phone_number_list, node);
+            lv_mem_free(node);
+            node = next_node;
+        }
+        lv_mem_free(ext->phone_number_list);
+        ext->phone_number_list = NULL;
+    }
+}
+
+void call_log_ui_update(void)
+{
+    lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_CALL_LOG);
+
+    if(true == mmi_phonebook_calllog_is_calllog_tab())
+       {
+        lv_obj_t * obj = lv_obj_get_child_back(lv_obj_get_child_back(activity_obj, NULL), NULL);
+        nv_watch_call_log_t * nvm_call_log_list = call_log_read_nvm();
+        if(NULL == nvm_call_log_list) 
+                       return;
+               
+        uint8_t call_log_num = call_log_get_log_num(nvm_call_log_list);
+        lv_call_log_obj_ext_t * ext = call_log_get_ext();
+        LV_ASSERT_MEM(ext);
+        call_log_ll_destroy();
+        call_log_ll_init();
+        call_log_update_call_log_ll(call_log_num, nvm_call_log_list);
+        if(ext->list) 
+               {
+            lv_list_clean(ext->list);
+        } 
+               else 
+               {
+            if(ext->label_tip) {
+                lv_obj_del(ext->label_tip);
+                ext->label_tip = NULL;
+            }
+            ext->list = call_log_list_create(obj);
+        }
+        call_log_content_create(ext->list, call_log_num, nvm_call_log_list);
+        if(nvm_call_log_list) {
+            lv_mem_free(nvm_call_log_list);
+            nvm_call_log_list = NULL;
+        }
+    }
+}
+
+lv_obj_t * mmi_phonebook_calllog_calllog_create(lv_obj_t * tab)
+{
+    if(NULL == tab)
+        return NULL;
+
+       nv_watch_call_log_t * nvm_call_log_list = call_log_read_nvm();
+       if(NULL == nvm_call_log_list)
+               return NULL;
+
+       lv_call_log_obj_ext_t * ext = lv_obj_allocate_ext_attr(tab, sizeof(lv_call_log_obj_ext_t));
+       LV_ASSERT_MEM(ext);
+       if(NULL == ext) 
+               return NULL;
+       
+       ext->list = NULL;
+       ext->label_tip = NULL;
+       ext->phone_number_list = NULL;
+
+       uint8_t call_log_num = call_log_get_log_num(nvm_call_log_list);
+       if(0 == call_log_num) 
+       {
+               ext->label_tip = call_log_no_log_info_create(tab);
+       } 
+       else 
+       {
+               ext->list = call_log_list_create(tab);
+               call_log_content_create(ext->list, call_log_num, nvm_call_log_list);
+               call_log_ll_init();
+               call_log_update_call_log_ll(call_log_num, nvm_call_log_list);
+       }
+
+       if(nvm_call_log_list) 
+       {
+               lv_mem_free(nvm_call_log_list);
+               nvm_call_log_list = NULL;
+       }
+
+    return tab;
+}
+
+#else
+
 const void * status[] = {
             (void *)ICON_CALL_LOG_OUTGOING_CALL,
             (void *)ICON_CALL_LOG_INCOMING_CALL,
@@ -133,7 +491,7 @@ static lv_obj_t * call_log_list_create(lv_obj_t * obj)
     lv_obj_add_style(list, LV_LIST_PART_EDGE_FLASH, &lv_watch_cont_opa1);
     lv_obj_add_style(list, LV_LIST_PART_BG, &lv_watch_style_transp);
        lv_list_set_scrollbar_mode(list, LV_SCROLLBAR_MODE_OFF);
-#ifdef USE_LV_WATCH_UI_240_240_CIRCLE
+#ifdef USE_LV_WATCH_UI_CIRCLE
        lv_obj_set_size(list, LV_HOR_RES - 40, LV_VER_RES - lv_obj_get_height(title) - 20);
 #else
     lv_obj_set_size(list, LV_HOR_RES, LV_VER_RES - lv_obj_get_height(title)); // - LV_VER_RES / 10);
@@ -399,6 +757,8 @@ void call_log_create_event_cb(lv_obj_t * btn, lv_event_t e)
     }
 }
 
+#endif
+
 #else
 
 /*********************
index 6ea20c2..2baceb6 100644 (file)
@@ -57,9 +57,15 @@ typedef struct {
 /**
  * Create a call log application
  */
+#ifdef __MMI_PHONEBOOK_CALLLOG_IN_ONE_MENU__
+extern void call_log_update_call_log_info(call_status_t call_status, char * number, hal_rtc_t *time);
+extern void call_log_ui_update(void);
+lv_obj_t * mmi_phonebook_calllog_calllog_create(lv_obj_t * tab);
+#else
 extern void call_log_create_event_cb(lv_obj_t * btn, lv_event_t e);
 extern void call_log_update_call_log_info(call_status_t call_status, char * number, hal_rtc_t *time);
 extern void call_log_ui_update(void);
+#endif
 
 /**********************
 *      MACROS
index 9edac5a..25df25c 100644 (file)
@@ -48,51 +48,6 @@ static lv_res_t dialpad_btn_short_click_action(lv_obj_t * btn);
  *   GLOBAL FUNCTIONS
 ***********************/
 
-#ifdef __MMI_ZHSX_SUPPORT__
-
-static nv_watch_switch_t s_dial_pad_switch = {0};
-
-void mmi_dial_pad_switch_nv_write(void)
-{
-       uint32_t nv_data_length = sizeof(nv_watch_switch_t);
-       
-       if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_DIAL_PAD_SWITCH, 0, nv_data_length, (uint8_t *)&s_dial_pad_switch))
-       {
-               printf("[@CHENG_DEBUG][%s][%d]: nv write fail\n", __FUNCTION__, __LINE__);
-       }
-}
-
-void mmi_dial_pad_switch_nv_read(void)
-{
-       uint32_t nv_data_length = sizeof(nv_watch_switch_t);
-       
-       if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_DIAL_PAD_SWITCH, 0, nv_data_length, (uint8_t *)&s_dial_pad_switch))
-       {
-               printf("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__);
-       }
-}
-
-void mmi_dial_pad_switch_nv_default(nv_watch_switch_t * data)
-{
-       data->switch_flag = MMI_DIAL_PAD_SWITCH_DEFAULT;
-}
-
-// 0-close; 1-open
-uint8_t mmi_dial_pad_switch_get(void)
-{
-       return (s_dial_pad_switch.switch_flag);
-}
-
-void mmi_dial_pad_switch_set(uint8_t value)
-{
-       if(0 == value || 1 == value)
-       {
-               s_dial_pad_switch.switch_flag = value;
-               mmi_dial_pad_switch_nv_write();
-       }
-}
-#endif
-
 lv_obj_t * dialpad_create(lv_obj_t * activity_obj)
 {
     lv_dialpad_obj_ext_t * ext = NULL;
index 8e37db0..b8d625f 100644 (file)
@@ -38,11 +38,6 @@ typedef struct {
  **********************/
 lv_obj_t * dialpad_create(lv_obj_t * activity_obj);
 void dialpad_create_event_cb(lv_obj_t * btn, lv_event_t e);
-#ifdef __MMI_ZHSX_SUPPORT__
-void mmi_dial_pad_switch_set(uint8_t value);
-void mmi_dial_pad_switch_nv_read(void);
-void mmi_dial_pad_switch_nv_default(nv_watch_switch_t * data);
-#endif
 
 /**********************
  *      MACROS
index e357a9b..ff0f5de 100644 (file)
@@ -331,6 +331,19 @@ static void launcher_tileview_event_cb(lv_obj_t * tileview, lv_event_t e)
             lv_led_off(launcher_ext->leds[0]);
             lv_obj_set_size(launcher_ext->leds[0], LAUNCHER_TILEVIEW_LED_OFF_WIDTH, LAUNCHER_TILEVIEW_LED_OFF_WIDTH);
         }
+
+       #ifdef __MMI_PAGE_MAIN_MENU_TTS_SUPPORT__
+               uint8_t menu_index = 0;
+               
+               if(LAUNCHER_HOR_SLIDING_LOOP_MODE_ENABLE)
+                       menu_index = ext->act_id.x - 2;
+               else
+                       menu_index = ext->act_id.x - 1;
+
+               printf("[@CHENG_DEBUG][%s][%d]: menu_index=%d\n", __FUNCTION__, __LINE__, menu_index);
+               mmi_page_main_menu_tts_broadcast(menu_index);
+       #endif
+
     }
 }
 
index d7fb4bf..9b35e22 100644 (file)
@@ -7,15 +7,20 @@
 #ifdef __MMI_ZHSX_SUPPORT__
 
 static mmi_remind_type_e s_remind_type = MMI_REMIND_TYPE_MAX;
-static uint32_t s_remind_txt_id = 0;
-static char * s_remind_ring_path = NULL;
+static uint8_t s_remind_index = 0;
+
 static mmi_remind_screen_info_t s_remind_info[] =
 {
 #ifdef __MMI_REMIND_WAKE_UP_SUPPORT__
-       { MMI_REMIND_TYPE_WAKE_UP, WATCH_TEXT_ID_WAKE_UP_PROMPT, AUDIO_REMIND_WAKE_UP},
+       { MMI_REMIND_TYPE_WAKE_UP, WATCH_TEXT_ID_WAKE_UP_PROMPT, AUDIO_REMIND_WAKE_UP, NULL},
 #endif
 #ifdef __MMI_REMIND_SLEEP_SUPPORT__
-       { MMI_REMIND_TYPE_SLEEP, WATCH_TEXT_ID_SLEEP_PROMPT, AUDIO_REMIND_SLEEP},
+       { MMI_REMIND_TYPE_SLEEP, WATCH_TEXT_ID_SLEEP_PROMPT, AUDIO_REMIND_SLEEP, NULL},
+#endif
+       //{MMI_REMIND_TYPE_MEDICINE},
+       //{MMI_REMIND_TYPE_DRINK_WATER},
+#ifdef __MMI_SEDENTARY_REMIND_SUPPORT__
+       {MMI_REMIND_TYPE_SEDENTARY, WATCH_TEXT_ID_SEDENTARY_PROMPT, AUDIO_REMIND_SEDENTARY, ICON_SEDENTARY_REMIND_IMAGE},
 #endif
 
        { MMI_REMIND_TYPE_MAX, 0, NULL},
@@ -135,6 +140,30 @@ void mmi_remind_sleep_screen_active(void)
 }
 #endif
 
+#ifdef __MMI_SEDENTARY_REMIND_SUPPORT__
+
+void mmi_remind_sedentary_screen_content(lv_obj_t * cont)
+{
+       lv_obj_t * img = lv_img_create(cont, NULL);
+       lv_img_set_src(img, s_remind_info[s_remind_index].remind_img_path);
+       lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 20);
+
+       lv_obj_t * label_prompt = lv_label_create(cont, NULL);
+       lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font26);
+    lv_label_set_long_mode(label_prompt, LV_LABEL_LONG_SROLL_CIRC);
+    lv_obj_set_width(label_prompt, LV_HOR_RES - 10);
+       lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
+       lv_label_set_text_id(label_prompt, s_remind_info[s_remind_index].remind_txt_id);
+       lv_obj_align(label_prompt, img, LV_ALIGN_OUT_BOTTOM_MID, 0, 5);
+}
+
+void mmi_remind_sedentary_screen_active(void)
+{
+       s_remind_type = MMI_REMIND_TYPE_SEDENTARY;
+       mmi_remind_screen_active();
+}
+#endif
+
 
 bool mmi_remind_screen_is_active(void)
 {
@@ -237,6 +266,9 @@ static lv_obj_t * mmi_remind_screen_create(lv_obj_t * activity_obj)
        //lv_obj_set_style_local_bg_color(cont, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
        lv_obj_set_click(cont, false);
 
+#ifdef __MMI_SEDENTARY_REMIND_SUPPORT__
+       mmi_remind_sedentary_screen_content(cont);
+#else
        hal_rtc_t cur_time;
        char time_str[8] = {0};
        
@@ -250,8 +282,9 @@ static lv_obj_t * mmi_remind_screen_create(lv_obj_t * activity_obj)
        lv_obj_align(label_time, NULL, LV_ALIGN_IN_TOP_MID, 0, 50);
 
        lv_obj_t * label_prompt = lv_label_create(cont, label_time);
-       lv_label_set_text_id(label_prompt, s_remind_txt_id);
+       lv_label_set_text_id(label_prompt, s_remind_info[s_remind_index].remind_txt_id);
        lv_obj_align(label_prompt, label_time, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
+#endif
 
        lv_obj_t * btn = lv_btn_create(cont, NULL);
        lv_obj_set_size(btn, 100, 56);
@@ -259,15 +292,19 @@ static lv_obj_t * mmi_remind_screen_create(lv_obj_t * activity_obj)
        lv_obj_set_style_local_radius(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 30);
        lv_obj_set_style_local_bg_color(btn, LV_BTN_PART_MAIN, LV_STATE_PRESSED, lv_color_make(0x47, 0xA6, 0xFF));
        lv_obj_set_style_local_radius(btn, LV_BTN_PART_MAIN, LV_STATE_PRESSED, 30);
+#ifdef USE_LV_WATCH_UI_CIRCLE
+       lv_obj_align(btn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -15);
+#else
        lv_obj_align(btn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -20);
+#endif
        lv_obj_set_event_cb(btn, mmi_remind_btn_event_cb);
 
        lv_obj_t * label = lv_label_create(btn, NULL);
        lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font26);
        lv_label_set_text_id(label, WATCH_TEXT_ID_OK);
 
-       /* start timer (1 min) */
-       ext->timer_id = Hal_Timer_Start(1000 * 60, mmi_remind_screen_timeout, NULL, false);
+       /* start timer (30 s) */
+       ext->timer_id = Hal_Timer_Start(1000 * MMI_REMIND_SCREEN_DURATION_SECOND, mmi_remind_screen_timeout, NULL, false);
 
        watch_set_suspend_enable(false, ACT_ID_REMIND, 0);
 
@@ -290,15 +327,17 @@ void mmi_remind_audio_ctrl_callback(AUDIO_CTRL_PRIORITY priority)
 
 void mmi_ui_msg_update_remind(void)
 {
+       char * ring_path = s_remind_info[s_remind_index].remind_ring_path;
+       
     if(AUDIO_CTRL_PRIORITY_REMIND == Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_REMIND, mmi_remind_audio_ctrl_callback))
     {
        #ifdef __MMI_CUSTOM_HENG_AI__
                if(0 == mmi_heng_ai_wake_ring_type_get())
-               Hal_NFFS_File_Play_Repeat(s_remind_ring_path, query_current_volume());
+               Hal_NFFS_File_Play_Repeat(ring_path, query_current_volume());
                else
                        Hal_Vibrator_Play_Repeat();     
        #else
-        Hal_NFFS_File_Play_Repeat(s_remind_ring_path, query_current_volume());
+        Hal_NFFS_File_Play_Repeat(ring_path, query_current_volume());
                Hal_Vibrator_Play_Repeat();
        #endif
                
@@ -332,8 +371,7 @@ void mmi_remind_screen_active(void)
                
                if(s_remind_info[i].remind_type == s_remind_type)
                {
-                       s_remind_txt_id = s_remind_info[i].remind_txt_id;
-                       s_remind_ring_path = s_remind_info[i].remind_ring_path;
+                       s_remind_index = i;
                        break;
                }
 
index 0ccdf21..75e0712 100644 (file)
@@ -23,10 +23,16 @@ extern "C" {
 
 #ifdef __MMI_ZHSX_SUPPORT__
 
+#define MMI_REMIND_SCREEN_DURATION_SECOND      (30) // second
+
+
 typedef enum
 {
        MMI_REMIND_TYPE_WAKE_UP,
        MMI_REMIND_TYPE_SLEEP,
+       MMI_REMIND_TYPE_MEDICINE,
+       MMI_REMIND_TYPE_DRINK_WATER,
+       MMI_REMIND_TYPE_SEDENTARY,
 
        MMI_REMIND_TYPE_MAX
 }mmi_remind_type_e;
@@ -36,6 +42,7 @@ typedef struct
        mmi_remind_type_e remind_type;
        uint32_t remind_txt_id;
        char * remind_ring_path;
+       void * remind_img_path;
 }mmi_remind_screen_info_t;
 
 typedef struct 
index b458687..864e322 100644 (file)
@@ -75,7 +75,11 @@ void phonebook_init(void)
 void phonebook_create_btn_event_cb(lv_obj_t * btn, lv_event_t e)
 {
 #ifdef __MMI_ZHSX_SUPPORT_PHONEBOOK_LIST_STYLE__
+       #ifdef __MMI_PHONEBOOK_CALLLOG_IN_ONE_MENU__
+       mmi_phonebook_calllog_create_event_cb(btn, e);
+       #else
        mmi_phonebook_create_event_cb(btn, e);
+       #endif
 
 #else
     (void)btn;
@@ -1155,6 +1159,373 @@ static lv_obj_t * phonebook_create(lv_obj_t * activity_obj)
 
 #ifdef __MMI_ZHSX_SUPPORT_PHONEBOOK_LIST_STYLE__
 
+#ifdef __MMI_PHONEBOOK_CALLLOG_IN_ONE_MENU__
+
+static const lv_point_t s_phonebook_calllog_valid_pos[] = {{0, 0}, {1, 0}};
+
+lv_phonebook_calllog_obj_ext_t * mmi_phonebook_calllog_ext_get(void)
+{
+    lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_PHONEBOOK_CALLLOG);
+    if(activity_obj == NULL)
+               return NULL;
+
+       lv_obj_t * watch_obj = NULL;
+       lv_watch_get_child_obj(activity_obj, lv_watch_obj_signal, &watch_obj);
+       if(NULL == watch_obj) 
+               return NULL;
+       
+       lv_phonebook_calllog_obj_ext_t * ext = NULL;
+       ext = lv_obj_get_ext_attr(watch_obj);
+       
+       return ext;
+}
+
+bool mmi_phonebook_calllog_is_phonebook_tab(void)
+{
+       lv_phonebook_calllog_obj_ext_t * ext = mmi_phonebook_calllog_ext_get();
+       if(NULL != ext && NULL != ext->tileview)
+       {
+               lv_coord_t x = -1, y = -1;
+               
+               lv_tileview_get_tile_act(ext->tileview, &x, &y);
+               if(0 == x && 0 == y)
+                       return true;
+       }
+
+    return false;
+}
+
+lv_obj_t * mmi_phonebook_calllog_tab_phonebook_get(void)
+{
+       lv_phonebook_calllog_obj_ext_t * ext = mmi_phonebook_calllog_ext_get();
+       if(NULL != ext)
+       {
+               return (ext->tab_phonebook);
+       }
+
+    return NULL;
+}
+
+bool mmi_phonebook_calllog_is_calllog_tab(void)
+{
+       lv_phonebook_calllog_obj_ext_t * ext = mmi_phonebook_calllog_ext_get();
+       if(NULL != ext && NULL != ext->tileview)
+       {
+               lv_coord_t x = -1, y = -1;
+               
+               lv_tileview_get_tile_act(ext->tileview, &x, &y);
+               if(1 == x && 0 == y)
+                       return true;
+       }
+
+       return false;
+}
+
+lv_obj_t * mmi_phonebook_calllog_tab_calllog_get(void)
+{
+       lv_phonebook_calllog_obj_ext_t * ext = mmi_phonebook_calllog_ext_get();
+       if(NULL != ext)
+       {
+               return (ext->tab_calllog);
+       }
+
+    return NULL;
+}
+
+static void mmi_phonebook_calllog_prepare_destory(lv_obj_t * activity_obj)
+{
+    lv_watch_png_cache_all_free();
+}
+
+lv_obj_t * mmi_phonebook_calllog_tileview_add_tile(lv_obj_t * tileview, uint16_t id)
+{
+    lv_tileview_ext_t * ext = lv_obj_get_ext_attr(tileview);
+    lv_obj_t * cont = lv_cont_create(tileview, NULL);
+    lv_obj_add_style(cont, LV_CONT_PART_MAIN, &lv_style_transp_tight);
+    lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES);
+    lv_obj_set_x(cont, LV_HOR_RES * ext->valid_pos[id].x);
+    lv_tileview_add_element(tileview, cont);
+    lv_obj_set_click(cont, false);
+    return cont;
+}
+
+void mmi_phonebook_calllog_tileview_led(lv_obj_t * tileview)
+{
+       lv_phonebook_calllog_obj_ext_t * ext = mmi_phonebook_calllog_ext_get();
+       if(NULL == ext)
+           return NULL;
+
+    if(NULL == ext->led_cont)
+       {
+        ext->led_cont = lv_cont_create(tileview, NULL);
+        lv_obj_set_base_dir(ext->led_cont, LV_BIDI_DIR_LTR);
+        lv_cont_set_fit(ext->led_cont, LV_FIT_TIGHT);
+        lv_cont_set_layout(ext->led_cont, LV_LAYOUT_ROW_MID);
+        lv_obj_add_style(ext->led_cont, LV_CONT_PART_MAIN, &lv_watch_style_transp);
+        lv_obj_set_click(ext->led_cont, false);
+    }
+
+       uint8_t i = 0;
+    for(i = 0; i < 2; i++)
+       {
+        if(NULL == ext->led[i])
+               {
+            ext->led[i] = lv_led_create(ext->led_cont, NULL);
+        }
+               
+        lv_led_off(ext->led[i]);
+        lv_obj_set_size(ext->led[i], 6, 6);
+    }
+       
+       lv_coord_t x = -1, y = -1;
+       lv_tileview_get_tile_act(tileview, &x, &y);
+       lv_led_on(ext->led[x]);
+       lv_obj_set_size(ext->led[x], 8, 8);
+
+    PHONEBOOK_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: x=%d\n", __FUNCTION__, __LINE__, x);
+       
+    lv_obj_set_pos(ext->led_cont, LV_HOR_RES * x + (LV_HOR_RES - lv_obj_get_width(ext->led_cont)) / 2, 2);
+}
+
+void mmi_phonebook_calllog_tileview_event_cb(lv_obj_t * tileview, lv_event_t e)
+{
+       if(LV_EVENT_VALUE_CHANGED != e)
+               return;
+
+       mmi_phonebook_calllog_tileview_led(tileview);
+}
+
+static void mmi_phonebook_btn_event_cb(lv_obj_t * btn, lv_event_t e)
+{
+    if(LV_EVENT_CLICKED != e) 
+               return;
+
+       char * number = NULL;
+       uint32_t index = lv_watch_get_free_num(btn);
+
+    number = phonebook_get_phone_number(index);
+       if(NULL != number)
+       {
+               phone_voice_call_req(number);
+       }
+}
+
+void mmi_phonebook_update_ui(nv_watch_phonebook_t * nvm_contact_list, uint16_t count)
+{
+
+
+}
+
+static void mmi_phonebook_contacts_list_create(lv_obj_t * obj, nv_watch_phonebook_t * nvm_contact_list)
+{
+    /*Allocate the object type specific extended data*/
+    lv_mmi_phonebook_obj_ext_t * ext = (lv_mmi_phonebook_obj_ext_t *)lv_obj_allocate_ext_attr(obj, sizeof(lv_mmi_phonebook_obj_ext_t));
+    /*ext realloc based on watch_obj_ext, do not memeset it*/
+    LV_ASSERT_MEM(ext);
+    if(NULL == ext)
+               return;
+
+       lv_obj_t * label_title = lv_label_create(obj, NULL);
+       lv_obj_set_size(label_title, LV_HOR_RES, 40);
+       lv_obj_add_style(label_title, LV_LABEL_PART_MAIN, &lv_watch_font20_gray);
+       lv_label_set_align(label_title, LV_LABEL_ALIGN_CENTER);
+       lv_label_set_text_id(label_title, WATCH_TEXT_ID_PHONEBOOK);
+       lv_obj_align(label_title, NULL, LV_ALIGN_IN_TOP_MID, 0, 10 + 10);
+       lv_obj_set_click(label_title, false);
+       
+    lv_obj_t * list = lv_list_create(obj, NULL);
+    lv_page_set_edge_flash(list, true);
+    lv_obj_add_style(list, LV_LIST_PART_EDGE_FLASH, &lv_watch_cont_opa1);
+    lv_obj_add_style(list, LV_LIST_PART_BG, &lv_watch_style_transp);
+#ifdef USE_LV_WATCH_UI_CIRCLE
+    lv_obj_set_size(list, LV_HOR_RES - 40, LV_VER_RES - 40 - 20 - 10);
+    lv_obj_align(list, label_title, LV_ALIGN_OUT_BOTTOM_MID, 0, 5); // 0);
+#else
+    lv_obj_set_size(list, LV_HOR_RES, LV_VER_RES - 40);
+    lv_obj_align(list, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0);
+#endif
+       lv_list_set_scrollbar_mode(list, LV_SCROLLBAR_MODE_OFF);
+    lv_watch_obj_add_element(list);
+    ext->list = list;
+
+       uint16_t i = 0; 
+       lv_obj_t * btn;
+       lv_obj_t * label;
+       nv_watch_phonebook_info_t * contact_info;
+       uint32_t contact_length = sizeof(nv_watch_phonebook_info_t);
+
+       _lv_ll_init(&(ext->contact_list), contact_length);
+       for(i = 0; i < NV_WATCH_MAX_CONTACT_NUM; i++)
+       {
+               if('\0' == nvm_contact_list->info[i].number[0]) 
+               {
+                       break;
+               }
+               // contact ll
+               contact_info = _lv_ll_ins_tail(&(ext->contact_list));
+               memcpy(contact_info, &(nvm_contact_list->info[i]), contact_length);
+
+               // add list item
+               btn = lv_list_add_btn(list, NULL, NULL);
+               lv_btn_set_layout(btn, LV_LAYOUT_ROW_MID);
+               //lv_obj_set_event_cb(btn, call_log_log_btn_event_cb);
+               //lv_watch_set_free_num(btn, i);
+
+               lv_obj_t * cont = lv_cont_create(btn, NULL);
+               lv_cont_set_layout(cont, LV_LAYOUT_OFF);
+               lv_obj_set_width(cont, lv_obj_get_width(btn));
+               lv_obj_set_height(cont, 56); // LV_VER_RES / 5); // LV_VER_RES / 4); //lv_obj_get_height(btn));
+               lv_obj_add_style(cont, LV_CONT_PART_MAIN, &lv_style_transp);
+               lv_page_glue_obj(cont, true);
+               lv_watch_obj_add_element(cont);
+               lv_obj_set_click(cont, true);
+               lv_obj_set_event_cb(cont, mmi_phonebook_btn_event_cb);
+               lv_watch_set_free_num(cont, i);
+
+               label = lv_label_create(cont, NULL);
+               lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26);
+               lv_label_set_long_mode(label, LV_LABEL_LONG_SROLL);
+               lv_obj_set_width(label, lv_obj_get_width(cont) - 40);
+               if('\0' != contact_info->name[0])
+                       lv_label_set_text(label, contact_info->name);
+               else
+                       lv_label_set_text(label, contact_info->number);
+
+               lv_obj_align(label, cont, LV_ALIGN_IN_LEFT_MID, 20, 0);
+
+               lv_watch_obj_add_element(btn);
+       }
+}
+
+static void mmi_phonebook_no_contacts_create(lv_obj_t * obj)
+{
+    lv_obj_t * label = lv_label_create(obj, NULL);
+    lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26); // &lv_watch_font20);
+
+    lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
+    lv_obj_set_click(label, false);
+    lv_label_set_text_id(label, WATCH_TEXT_ID_NO_CONTACTS);
+    lv_obj_align(label, obj, LV_ALIGN_CENTER, 0, -10);
+
+    return;
+}
+
+static void mmi_phonebook_no_sim_create(lv_obj_t * obj)
+{
+    lv_obj_t * label = lv_label_create(obj, NULL);
+    lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26); // &lv_watch_font20);
+
+    lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
+    lv_obj_set_click(label, false);
+    lv_label_set_text_id(label, WATCH_TEXT_ID_NO_SIM_CARD);
+    lv_obj_align(label, obj, LV_ALIGN_CENTER, 0, -10);
+
+    return;
+}
+
+lv_obj_t * mmi_phonebook_calllog_phonebook_create(lv_obj_t * tab)
+{
+    if(NULL == tab)
+        return NULL;
+
+       if(false == watch_modem_sim_present_check_req())
+       {
+               mmi_phonebook_no_sim_create(tab);
+               //lv_watch_set_free_num(activity_obj, 0);
+               return tab;
+       }
+       
+    nv_watch_phonebook_t * nvm_contact_list = phonebook_read_nvm();
+    if('\0' == nvm_contact_list->info[0].number[0])
+    {
+        mmi_phonebook_no_contacts_create(tab);
+        //lv_watch_set_free_num(activity_obj, 0);
+    }
+       else 
+       {
+        mmi_phonebook_contacts_list_create(tab, nvm_contact_list);
+        //lv_watch_set_free_num(activity_obj, 1);
+    }
+
+    lv_mem_free(nvm_contact_list);
+
+    return tab;
+}
+
+
+static lv_obj_t * mmi_phonebook_calllog_create(lv_obj_t * activity_obj)
+{
+    if(NULL == activity_obj)
+       {
+        lv_watch_activity_ext_t activity_ext;
+        memset(&activity_ext, 0, sizeof(lv_watch_activity_ext_t));
+        activity_ext.actId = ACT_ID_PHONEBOOK_CALLLOG;
+        activity_ext.create = (lv_watch_activity_create_f_t)mmi_phonebook_calllog_create;
+        activity_ext.prepare_destory = mmi_phonebook_calllog_prepare_destory;
+        activity_obj = lv_watch_creat_activity_obj(&activity_ext);
+               if(NULL == activity_obj)
+                       return NULL;
+    }
+       
+     /* watch obj */
+    lv_obj_t * obj = lv_watch_obj_create(activity_obj);
+    LV_ASSERT_MEM(obj);
+    if(NULL == obj)
+        return NULL;
+
+       //lv_watch_obj_set_anim_mode(obj, LV_WATCH_ANIM_NO);
+    lv_watch_obj_set_anim_mode(obj, LV_WATCH_ANIM_HOR_RIGHT_HIDE);
+       lv_phonebook_calllog_obj_ext_t * ext = lv_obj_allocate_ext_attr(obj, sizeof(lv_phonebook_calllog_obj_ext_t));
+       if(NULL == ext)
+               return NULL;
+
+    lv_obj_t  * tileview = lv_tileview_create(obj, NULL);
+    if(NULL == tileview)
+        return NULL;
+    lv_tileview_set_valid_positions(tileview, s_phonebook_calllog_valid_pos, 2);
+    lv_tileview_set_edge_flash(tileview, true);
+    lv_tileview_set_anim_time(tileview, 60);
+    lv_page_set_scrollbar_mode(tileview, LV_SCROLLBAR_MODE_OFF);
+    lv_obj_add_style(tileview, LV_TILEVIEW_PART_EDGE_FLASH, &lv_watch_cont_opa1);
+       ext->tileview = tileview;
+
+    lv_obj_t * tab;
+
+       tab = mmi_phonebook_calllog_tileview_add_tile(tileview, 0);
+    LV_ASSERT_MEM(tab);
+       ext->tab_phonebook = tab;
+       mmi_phonebook_calllog_phonebook_create(tab);
+       
+       tab = mmi_phonebook_calllog_tileview_add_tile(tileview, 1);
+    LV_ASSERT_MEM(tab);
+       ext->tab_calllog = tab;
+       mmi_phonebook_calllog_calllog_create(tab);
+
+    lv_tileview_set_valid_positions(tileview, s_phonebook_calllog_valid_pos, sizeof(s_phonebook_calllog_valid_pos) / sizeof(s_phonebook_calllog_valid_pos[0]));
+    lv_tileview_set_tile_act(tileview, 0, 0, LV_ANIM_OFF);
+    lv_watch_obj_add_element(tileview);
+    lv_watch_obj_add_element(lv_page_get_scrl(tileview));
+       lv_obj_set_event_cb(tileview, mmi_phonebook_calllog_tileview_event_cb);
+
+       ext->led_cont = NULL;
+       ext->led[0] = NULL;
+       ext->led[1] = NULL;
+       mmi_phonebook_calllog_tileview_led(tileview);
+
+       return obj;
+}
+
+void mmi_phonebook_calllog_create_event_cb(lv_obj_t * btn, lv_event_t e)
+{
+    if(LV_EVENT_CLICKED == e) 
+       {
+        lv_watch_png_cache_all_free();
+        mmi_phonebook_calllog_create(NULL);
+    }
+}
+
+#else
+
 static lv_mmi_phonebook_obj_ext_t * mmi_phonebook_get_ext(void)
 {
     lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_PHONEBOOK);
@@ -1214,7 +1585,7 @@ static void mmi_phonebook_contacts_list_create(lv_obj_t * obj, nv_watch_phoneboo
     lv_page_set_edge_flash(list, true);
     lv_obj_add_style(list, LV_LIST_PART_EDGE_FLASH, &lv_watch_cont_opa1);
     lv_obj_add_style(list, LV_LIST_PART_BG, &lv_watch_style_transp);
-#ifdef USE_LV_WATCH_UI_240_240_CIRCLE
+#ifdef USE_LV_WATCH_UI_CIRCLE
     lv_obj_set_size(list, LV_HOR_RES - 40, LV_VER_RES - 40 - 20);
     lv_obj_align(list, label_title, LV_ALIGN_OUT_BOTTOM_MID, 0, 5); // 0);
 #else
@@ -1370,6 +1741,9 @@ void mmi_phonebook_create_event_cb(lv_obj_t * btn, lv_event_t e)
         mmi_phonebook_create(NULL);
     }
 }
+
+#endif
+
 #endif
 
 
@@ -1405,49 +1779,6 @@ void mmi_phonebook_contact_list_set(app_adaptor_contact_t * contact_list, uint8_
     lv_mem_free(nvm_contact_list);
 }
 
-
-static nv_watch_switch_t s_white_list_switch = {0};
-
-void mmi_white_list_switch_nv_write(void)
-{
-       uint32_t nv_data_length = sizeof(nv_watch_switch_t);
-       
-       if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_WHITE_LIST_SWITCH, 0, nv_data_length, (uint8_t *)&s_white_list_switch))
-       {
-               printf("[@CHENG_DEBUG][%s][%d]: nv write fail\n", __FUNCTION__, __LINE__);
-       }
-}
-
-void mmi_white_list_switch_nv_read(void)
-{
-       uint32_t nv_data_length = sizeof(nv_watch_switch_t);
-       
-       if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_WHITE_LIST_SWITCH, 0, nv_data_length, (uint8_t *)&s_white_list_switch))
-       {
-               printf("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__);
-       }
-}
-
-void mmi_white_list_switch_nv_default(nv_watch_switch_t * data)
-{
-       data->switch_flag = MMI_WHITE_LIST_SWITCH_DEFAULT;
-}
-
-// 0-close; 1-open
-uint8_t mmi_white_list_switch_get(void)
-{
-       return (s_white_list_switch.switch_flag);
-}
-
-void mmi_white_list_switch_set(uint8_t value)
-{
-       if(0 == value || 1 == value)
-       {
-               s_white_list_switch.switch_flag = value;
-               mmi_white_list_switch_nv_write();
-       }
-}
-
 #endif
 
 
index 09b52a9..8cdef3d 100644 (file)
@@ -72,7 +72,7 @@ char * phonebook_get_phone_number(uint8_t id); /*[0, NV_WATCH_MAX_CONTACT_NUM -
 
 #define __PHONEBOOK_DEBUG__
 #ifdef __PHONEBOOK_DEBUG__
-#define PHONEBOOK_DEBUG_PRINTF(fmt, ...)       printf("[WECHAT]"fmt, ##__VA_ARGS__)
+#define PHONEBOOK_DEBUG_PRINTF(fmt, ...)       printf("[PHONEBOOK]"fmt, ##__VA_ARGS__)
 #else
 #define PHONEBOOK_DEBUG_PRINTF(fmt, ...)
 #endif
@@ -81,6 +81,24 @@ char * phonebook_get_phone_number(uint8_t id); /*[0, NV_WATCH_MAX_CONTACT_NUM -
 
 #ifdef __MMI_ZHSX_SUPPORT_PHONEBOOK_LIST_STYLE__
 
+#ifdef __MMI_PHONEBOOK_CALLLOG_IN_ONE_MENU__
+typedef struct
+{
+    lv_watch_obj_ext_t lv_watch_obj;
+    /*New data for this type */
+    lv_obj_t * tileview;
+       lv_obj_t * tab_phonebook;
+       lv_obj_t * tab_calllog;
+       lv_obj_t * led_cont;
+       lv_obj_t * led[2];
+} lv_phonebook_calllog_obj_ext_t;
+
+
+bool mmi_phonebook_calllog_is_calllog_tab(void);
+lv_obj_t * mmi_phonebook_calllog_tab_calllog_get(void);
+
+#endif
+
 typedef struct
 {
     lv_watch_obj_ext_t lv_watch_obj;
@@ -94,12 +112,6 @@ typedef struct
 
 void mmi_phonebook_contact_list_set(app_adaptor_contact_t * contact_list, uint8_t count);
 
-void mmi_white_list_switch_nv_read(void);
-void mmi_white_list_switch_nv_default(nv_watch_switch_t * data);
-// 0-close; 1-open
-uint8_t mmi_white_list_switch_get(void);
-void mmi_white_list_switch_set(uint8_t value);
-
 #endif
 
 
index ec47902..b19e91a 100644 (file)
@@ -118,7 +118,8 @@ void primary_menu_init(void)
                        
                case MMI_MAIN_MENU_STYLE_ONE_PAGE:
                        #ifdef __MMI_MAIN_MENU_ONE_PAGE_STYLE__
-                       watch_menu_app_cnt = (sizeof(s_main_menu_one_page) / sizeof(watch_app_info_t));
+                       //watch_menu_app_cnt = (sizeof(s_main_menu_one_page) / sizeof(watch_app_info_t));
+                       watch_menu_app_cnt = (sizeof(s_main_menu_one_page) / sizeof(mmi_page_main_menu_info_t));
                        if(watch_menu_app_cnt > WATCH_APP_MAX_COUNT)
                        {
                                printf("[@CHENG_DEBUG][%s][%d]: primary menu count %d should not greater than %d\n", __FUNCTION__, __LINE__, watch_menu_app_cnt, WATCH_APP_MAX_COUNT);
@@ -128,7 +129,7 @@ void primary_menu_init(void)
                        menu_app = (watch_app_info_t *)lv_mem_alloc(sizeof(watch_app_info_t) * watch_menu_app_cnt);
                        for(i = 0; i < watch_menu_app_cnt; i++) 
                        {
-                               memcpy(&menu_app[i], &(s_main_menu_one_page[i]), sizeof(watch_app_info_t));
+                               memcpy(&menu_app[i], &(s_main_menu_one_page[i].page_menu_info), sizeof(watch_app_info_t));
                        }                       
                        #endif
                        break;
index 80be334..f25967f 100644 (file)
@@ -116,6 +116,22 @@ void mmi_main_menu_style_nv_default(nv_watch_main_menu_style_t * data);
 MMI_MAIN_MENU_STYLE_E mmi_main_menu_style_get(void);
 void mmi_main_menu_style_set(MMI_MAIN_MENU_STYLE_E style_value);
 
+
+#ifdef __MMI_MAIN_MENU_ONE_PAGE_STYLE__
+
+typedef struct
+{
+    watch_app_info_t page_menu_info;
+       char * menu_ring;
+}mmi_page_main_menu_info_t;
+
+
+#ifdef __MMI_PAGE_MAIN_MENU_TTS_SUPPORT__
+char * mmi_page_main_menu_tts_info_get(uint8_t menu_index);
+#endif
+
+#endif
+
 #endif
 
 /**********************
index 2188f11..c21e2fa 100644 (file)
@@ -74,47 +74,56 @@ static watch_app_info_t s_main_menu_four_grid[] =
 // one page
 #ifdef __MMI_MAIN_MENU_ONE_PAGE_STYLE__
 
-static watch_app_info_t s_main_menu_one_page[] = 
+//static watch_app_info_t s_main_menu_one_page[] = 
+static mmi_page_main_menu_info_t s_main_menu_one_page[] = 
 {
-       { ICON_PHONEBOOK_ONE_PAGE, WATCH_TEXT_ID_PHONEBOOK, phonebook_create_btn_event_cb},
+       {{ ICON_PHONEBOOK_ONE_PAGE, WATCH_TEXT_ID_PHONEBOOK, phonebook_create_btn_event_cb}, AUDIO_MAIN_MENU_PHONEBOOK},
 #if USE_LV_WATCH_SMS_MSG != 0
-       { ICON_SMS_MSG_ONE_PAGE, WATCH_TEXT_ID_SMS_MSG, sms_msg_create_event_cb},
+       {{ ICON_SMS_MSG_ONE_PAGE, WATCH_TEXT_ID_SMS_MSG, sms_msg_create_event_cb}, AUDIO_MAIN_MENU_SMS},
 #endif
-       { ICON_DIALPAD_ONE_PAGE, WATCH_TEXT_ID_DIALPAD, dialpad_create_event_cb },
+       {{ ICON_DIALPAD_ONE_PAGE, WATCH_TEXT_ID_DIALPAD, dialpad_create_event_cb}, AUDIO_MAIN_MENU_DIALPAD},
 #ifndef __MMI_PHONEBOOK_CALLLOG_IN_ONE_MENU__
-       { ICON_CALLLOG_ONE_PAGE, WATCH_TEXT_ID_CALL_LOG, call_log_create_event_cb },
+       {{ ICON_CALLLOG_ONE_PAGE, WATCH_TEXT_ID_CALL_LOG, call_log_create_event_cb}, AUDIO_MAIN_MENU_CALL_LOG},
 #endif
 
 #ifdef __MMI_HEALTH_MEASURE_HEART_SUPPORT__
-       { ICON_HEART_RATE_ONE_PAGE, WATCH_TEXT_ID_HEART_RATE, health_heart_rate_create_event_cb},
+       {{ ICON_HEART_RATE_ONE_PAGE, WATCH_TEXT_ID_HEART_RATE, health_heart_rate_create_event_cb}, AUDIO_MAIN_MENU_HEART_RATE},
 #endif
 #ifdef __MMI_HEALTH_MEASURE_SPO2_SUPPORT__
-       { ICON_SPO2_ONE_PAGE, WATCH_TEXT_ID_SPO2, health_spo2_create_event_cb},
+       {{ ICON_SPO2_ONE_PAGE, WATCH_TEXT_ID_SPO2, health_spo2_create_event_cb}, AUDIO_MAIN_MENU_SPO2},
 #endif
 #ifdef __MMI_HEALTH_MEASURE_TEMPERATURE_SUPPORT__
-       { ICON_TEMPERATURE_ONE_PAGE, WATCH_TEXT_ID_TEMPERATURE, health_temperature_create_event_cb},
+       {{ ICON_TEMPERATURE_ONE_PAGE, WATCH_TEXT_ID_TEMPERATURE, health_temperature_create_event_cb}, AUDIO_MAIN_MENU_TEMPERATURE},
 #endif
 #ifdef __MMI_WECHAT_SUPPORT__
-       { ICON_WECHAT_ONE_PAGE, WATCH_TEXT_ID_WECHAT, wechat_create_event_cb },
+       {{ ICON_WECHAT_ONE_PAGE, WATCH_TEXT_ID_WECHAT, wechat_create_event_cb}, AUDIO_MAIN_MENU_WECHAT},
 #endif
 
 #if USE_LV_WATCH_CAMERA != 0
-       { ICON_CAMERA_ONE_PAGE, WATCH_TEXT_ID_CAMERA, camera_create_btn_event_cb },
-       { ICON_ALBUM_ONE_PAGE, WATCH_TEXT_ID_ALBUM, album_create_event_cb },
+       {{ ICON_CAMERA_ONE_PAGE, WATCH_TEXT_ID_CAMERA, camera_create_btn_event_cb}, AUDIO_MAIN_MENU_CAMERA},
+       {{ ICON_ALBUM_ONE_PAGE, WATCH_TEXT_ID_ALBUM, album_create_event_cb}, AUDIO_MAIN_MENU_ALBUM},
 #endif
 #if USE_LV_WATCH_ALIPAY != 0
-       { ICON_ALIPAY_ONE_PAGE, WATCH_TEXT_ID_ALIPAY, upay_create_event_cb },
+       {{ ICON_ALIPAY_ONE_PAGE, WATCH_TEXT_ID_ALIPAY, upay_create_event_cb}, AUDIO_MAIN_MENU_ALIPAY},
 #endif
 #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__
-       { ICON_VIDEOCALL_ONE_PAGE, WATCH_TEXT_ID_VIDEOCALL, mmi_video_call_create_event_cb },
+       {{ ICON_VIDEOCALL_ONE_PAGE, WATCH_TEXT_ID_VIDEOCALL, mmi_video_call_create_event_cb}, AUDIO_MAIN_MENU_VIDEO_CALL},
 #endif
 
 #ifdef __MMI_TOOL_MENU_SUPPORT__
-       { ICON_TOOL_ONE_PAGE, WATCH_TEXT_ID_TOOL, mmi_tool_menu_create_event_cb },
+       {{ ICON_TOOL_ONE_PAGE, WATCH_TEXT_ID_TOOL, mmi_tool_menu_create_event_cb}, AUDIO_MAIN_MENU_TOOL},
 #endif 
-       { ICON_SETTING_ONE_PAGE, WATCH_TEXT_ID_SETTINGS, setting_create_event_cb },
+       {{ ICON_SETTING_ONE_PAGE, WATCH_TEXT_ID_SETTINGS, setting_create_event_cb}, AUDIO_MAIN_MENU_SETTINGS},
 };
 
+
+#ifdef __MMI_PAGE_MAIN_MENU_TTS_SUPPORT__
+char * mmi_page_main_menu_tts_info_get(uint8_t menu_index)
+{
+       return (s_main_menu_one_page[menu_index].menu_ring);
+}
+#endif
+
 #endif
 
 
index d6318a1..ce6bef2 100644 (file)
 
 #if USE_LV_WATCH_SETTING != 0
 
+#include "setting_ext.c"
+#include "setting_main_menu_switch.c"
+#include "setting_sedentary_remind.c"
+#include "setting_page_main_menu_tts.c"
+#include "setting_new_sms_silent.c"
+
+
 extern lv_watch_Activity_Id_t g_watch_list_actId;
 
 
@@ -38,6 +45,15 @@ static mmi_watch_list_item_t settingList[] =
 #if USE_LV_WATCH_SETTING_DATETIME != 0
     //{ ICON_SETTING_DATETIME, WATCH_TEXT_ID_DATE_AND_TIME,  setting_date_time_create_btn_action},
 #endif
+#ifdef __MMI_PAGE_MAIN_MENU_TTS_SUPPORT__
+       { ICON_SETTING_PAGE_MAIN_MENU_TTS, WATCH_TEXT_ID_PAGE_MAIN_MENU_TTS, setting_page_main_menu_tts_create_event_cb },
+#endif
+#ifdef __MMI_SEDENTARY_REMIND_SUPPORT__
+       { ICON_SETTING_SEDENTARY_REMIND, WATCH_TEXT_ID_SEDENTARY_REMIND, setting_sedentary_remind_create_event_cb },
+#endif
+#ifdef __MMI_NEW_SMS_SILENT_SUPPORT__
+       { ICON_SETTING_NEW_SMS_SILENT, WATCH_TEXT_ID_NEW_SMS_SILENT, setting_new_sms_silent_create_event_cb },
+#endif
 #ifdef __MMI_APP_QRCODE_MENU_SUPPORT__
        { ICON_SETTING_APP_QRCODE, WATCH_TEXT_ID_APP_QRCODE, app_qrcode_create_event_cb },
 #endif
@@ -189,6 +205,10 @@ void setting_init(void)
 #endif
 
     lv_mem_free(nvsettings);
+
+#ifdef __MMI_ZHSX_SUPPORT__
+       mmi_watch_setting_ext_data_nv_read();
+#endif
 }
 
 lv_obj_t * setting_create(lv_obj_t * par)
index 8f8baa3..accb153 100644 (file)
@@ -36,7 +36,12 @@ extern "C" {
 #include "setting_mobile_network.h"
 #include "setting_tab.h"
 #include "setting_search_switch.h"
+
+#include "setting_ext.h"
 #include "setting_main_menu_switch.h"
+#include "setting_sedentary_remind.h"
+#include "setting_page_main_menu_tts.h"
+#include "setting_new_sms_silent.h"
 
 
 #if USE_LV_WATCH_SETTING != 0
diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_ext.c b/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_ext.c
new file mode 100644 (file)
index 0000000..a370077
--- /dev/null
@@ -0,0 +1,136 @@
+
+
+
+#include "lv_watch.h"
+
+#ifdef __MMI_ZHSX_SUPPORT__
+
+static nv_watch_setting_ext_t s_watch_setting_ext_value = {0};
+
+void mmi_watch_setting_ext_data_nv_default(nv_watch_setting_ext_t * watch_settings)
+{
+       watch_settings->white_list_switch = MMI_WHITE_LIST_SWITCH_DEFAULT;
+       watch_settings->dial_pad_switch = MMI_DIAL_PAD_SWITCH_DEFAULT;
+#ifdef __MMI_PAGE_MAIN_MENU_TTS_SUPPORT__
+       watch_settings->page_main_menu_tts = MMI_PAGE_MAIN_MENU_TTS_SWITCH_DEFAULT;
+#endif
+#ifdef __MMI_SEDENTARY_REMIND_SUPPORT__
+       watch_settings->sedentary_switch = MMI_WATCH_SEDENTARY_SWITCH_DEFAULT;
+       watch_settings->sedentary_minute = MMI_WATCH_SEDENTARY_INTERVAL_DEFAULT;
+#endif
+#ifdef __MMI_NEW_SMS_SILENT_SUPPORT__
+       watch_settings->new_sms_silent_switch = MMI_NEW_SMS_SILENT_SWITCH_DEFAULT;
+#endif
+
+}
+
+void mmi_watch_setting_ext_data_nv_read(void)
+{
+       uint32_t nv_data_length = sizeof(nv_watch_setting_ext_t);
+       
+       if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_WATCH_SETTINGS, 0, nv_data_length, (uint8_t *)&s_watch_setting_ext_value))
+       {
+               printf("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__);
+               mmi_main_menu_style_nv_default(&s_watch_setting_ext_value);
+       }
+}
+
+void mmi_watch_setting_ext_data_nv_write(void)
+{
+       uint32_t nv_data_length = sizeof(nv_watch_setting_ext_t);
+       
+       if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_WATCH_SETTINGS, 0, nv_data_length, (uint8_t *)&s_watch_setting_ext_value))
+       {
+               printf("[@CHENG_DEBUG][%s][%d]: nv write fail\n", __FUNCTION__, __LINE__);
+       }
+}
+
+
+// 0-close; 1-open; 2-auto answer
+uint8_t mmi_white_list_switch_get(void)
+{
+       return (s_watch_setting_ext_value.white_list_switch);
+}
+
+void mmi_white_list_switch_set(uint8_t value)
+{
+       if(0 == value || 1 == value || 2 == value)
+       {
+               s_watch_setting_ext_value.white_list_switch = value;
+               mmi_watch_setting_ext_data_nv_write();
+       }
+}
+
+// 0-close; 1-open
+uint8_t mmi_dial_pad_switch_get(void)
+{
+       return (s_watch_setting_ext_value.dial_pad_switch);
+}
+
+void mmi_dial_pad_switch_set(uint8_t value)
+{
+       if(0 == value || 1 == value)
+       {
+               s_watch_setting_ext_value.dial_pad_switch = value;
+               mmi_watch_setting_ext_data_nv_write();
+       }
+}
+
+#ifdef __MMI_PAGE_MAIN_MENU_TTS_SUPPORT__
+// 0-close; 1-open
+uint8_t mmi_page_main_menu_tts_swtich_get(void)
+{
+       return (s_watch_setting_ext_value.page_main_menu_tts);
+}
+
+void mmi_page_main_menu_tts_swtich_set(uint8_t value)
+{
+       s_watch_setting_ext_value.page_main_menu_tts = value;
+       mmi_watch_setting_ext_data_nv_write();
+}
+#endif
+
+#ifdef __MMI_SEDENTARY_REMIND_SUPPORT__
+// 0-close; 1-open
+uint8_t mmi_sedentary_remind_swtich_get(void)
+{
+       return (s_watch_setting_ext_value.sedentary_switch);
+}
+
+void mmi_sedentary_remind_swtich_set(uint8_t value)
+{
+       s_watch_setting_ext_value.sedentary_switch = value;
+       mmi_watch_setting_ext_data_nv_write();
+}
+
+uint16_t mmi_sedentary_remind_interval_get(void)
+{
+       return s_watch_setting_ext_value.sedentary_minute;
+}
+
+void mmi_sedentary_remind_interval_set(uint16_t value)
+{
+       s_watch_setting_ext_value.sedentary_minute = value;
+       mmi_watch_setting_ext_data_nv_write();
+}
+#endif
+
+#ifdef __MMI_NEW_SMS_SILENT_SUPPORT__
+// 0-close; 1-open
+uint8_t mmi_new_sms_silent_swtich_get(void)
+{
+       return (s_watch_setting_ext_value.new_sms_silent_switch);
+}
+
+void mmi_new_sms_silent_swtich_set(uint8_t value)
+{
+       s_watch_setting_ext_value.new_sms_silent_switch = value;
+       mmi_watch_setting_ext_data_nv_write();
+}
+#endif
+
+
+
+#endif
+
+
diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_ext.h b/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_ext.h
new file mode 100644 (file)
index 0000000..c4ff9d2
--- /dev/null
@@ -0,0 +1,58 @@
+
+
+
+#ifndef __SETTING_EXT_H__
+#define __SETTING_EXT_H__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif //__cplusplus
+
+#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_ZHSX_SUPPORT__
+
+void mmi_watch_setting_ext_data_nv_default(nv_watch_setting_ext_t * watch_settings);
+void mmi_watch_setting_ext_data_nv_read(void);
+
+uint8_t mmi_white_list_switch_get(void);
+void mmi_white_list_switch_set(uint8_t value);
+
+uint8_t mmi_dial_pad_switch_get(void);
+void mmi_dial_pad_switch_set(uint8_t value);
+
+#ifdef __MMI_PAGE_MAIN_MENU_TTS_SUPPORT__
+uint8_t mmi_page_main_menu_tts_swtich_get(void);
+void mmi_page_main_menu_tts_swtich_set(uint8_t value);
+#endif
+
+#ifdef __MMI_SEDENTARY_REMIND_SUPPORT__
+uint8_t mmi_sedentary_remind_swtich_get(void);
+void mmi_sedentary_remind_swtich_set(uint8_t value);
+uint16_t mmi_sedentary_remind_interval_get(void);
+void mmi_sedentary_remind_interval_set(uint16_t value);
+#endif
+
+#ifdef __MMI_NEW_SMS_SILENT_SUPPORT__
+uint8_t mmi_new_sms_silent_swtich_get(void);
+void mmi_new_sms_silent_swtich_set(uint8_t value);
+#endif
+
+
+
+
+#endif
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif
+
diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_new_sms_silent.c b/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_new_sms_silent.c
new file mode 100644 (file)
index 0000000..b8f7140
--- /dev/null
@@ -0,0 +1,138 @@
+
+
+
+#include "lv_watch.h"
+
+#ifdef __MMI_NEW_SMS_SILENT_SUPPORT__
+
+void * mmi_new_sms_silent_ext_get(void)
+{
+       lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_WATCH_SETTING_COMMON);
+       if(NULL == activity_obj) 
+               return NULL;
+       
+       lv_obj_t * watch_obj = NULL;
+       lv_watch_get_child_obj(activity_obj, lv_watch_obj_signal, &watch_obj);
+       if(NULL != watch_obj) 
+       {
+               void * ext = lv_obj_get_ext_attr(watch_obj);
+               return ext;
+       }
+
+       return NULL;
+}
+
+static void mmi_new_sms_silent_prepare_destory(lv_obj_t * activity_obj)
+{
+    lv_watch_png_cache_all_free();
+}
+
+void mmi_new_sms_silent_screen_clean(void)
+{
+    lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_WATCH_SETTING_COMMON);
+    if(NULL != activity_obj)
+       {
+        mmi_new_sms_silent_prepare_destory(activity_obj);
+        lv_obj_del(activity_obj);
+    }
+
+       //lv_watch_obj_cleanup(obj);
+}
+
+static void mmi_new_sms_silent_event_cb(lv_obj_t * obj, lv_event_t event)
+{
+    if(LV_EVENT_CLICKED != event)
+               return;
+
+       uint32_t user_num = lv_watch_get_free_num(obj);
+       
+       mmi_new_sms_silent_swtich_set((0 == user_num) ? 0 : 1);
+       mmi_new_sms_silent_screen_clean();
+}
+
+static lv_obj_t * mmi_new_sms_silent_create(lv_obj_t * activity_obj)
+{
+       printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+       
+    if(NULL == activity_obj) {
+        lv_watch_activity_ext_t activity_ext;
+        memset(&activity_ext, 0, sizeof(lv_watch_activity_ext_t));
+        activity_ext.actId = ACT_ID_WATCH_SETTING_COMMON;
+        activity_ext.create = mmi_new_sms_silent_create;
+        activity_ext.prepare_destory = mmi_new_sms_silent_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 * obj = lv_watch_obj_create(activity_obj);
+    if(NULL == obj)
+        return NULL;
+
+    //lv_new_sms_silent_obj_ext_t * ext = (lv_new_sms_silent_obj_ext_t *)lv_obj_allocate_ext_attr(obj, sizeof(lv_new_sms_silent_obj_ext_t));
+    //if(NULL == ext)
+    //    return NULL;
+
+       uint8_t switch_value = mmi_new_sms_silent_swtich_get();
+
+    lv_obj_t * title_label = lv_label_create(obj, NULL);
+    lv_obj_add_style(title_label, LV_LABEL_PART_MAIN, &lv_watch_font20_gray);
+    lv_label_set_align(title_label, LV_LABEL_ALIGN_CENTER);
+    lv_obj_set_click(title_label, false);
+    lv_label_set_text_id(title_label, WATCH_TEXT_ID_NEW_SMS_SILENT);
+    lv_obj_align(title_label, obj, LV_ALIGN_IN_TOP_MID, 0, 10);
+
+       //
+    lv_obj_t * btn_0 = lv_btn_create(obj, NULL);
+    lv_obj_add_style(btn_0, LV_BTN_PART_MAIN, &lv_style_transp_fit);
+    lv_btn_set_fit(btn_0, LV_FIT_TIGHT);
+    lv_btn_set_layout(btn_0, LV_LAYOUT_ROW_MID);
+    lv_obj_set_event_cb(btn_0, mmi_new_sms_silent_event_cb);
+    lv_watch_obj_add_element(btn_0);
+       lv_watch_set_free_num(btn_0, 0);
+
+    lv_obj_t * img_0 = lv_img_create(btn_0, NULL);
+    lv_img_set_src(img_0, (0 == switch_value) ? ICON_ITEM_SELECTED : ICON_ITEM_NOT_SELECTED);
+
+    lv_obj_t* label_0 = lv_label_create(btn_0, NULL);
+    lv_obj_add_style(label_0, LV_LABEL_PART_MAIN, &lv_watch_font26); // &lv_watch_font20);
+    lv_label_set_text_id(label_0, WATCH_TEXT_ID_OFF);
+
+       //
+    lv_obj_t * btn_1 = lv_btn_create(obj, btn_0);
+    lv_obj_set_event_cb(btn_1, mmi_new_sms_silent_event_cb);
+    lv_watch_obj_add_element(btn_1);
+       lv_watch_set_free_num(btn_1, 1);
+
+    lv_obj_t * img_1 = lv_img_create(btn_1, NULL);
+       lv_img_set_src(img_1, (0 == switch_value) ? ICON_ITEM_NOT_SELECTED : ICON_ITEM_SELECTED);
+
+    lv_obj_t* label_1 = lv_label_create(btn_1, NULL);
+    lv_obj_add_style(label_1, LV_LABEL_PART_MAIN, &lv_watch_font26); // &lv_watch_font20);
+    lv_label_set_text_id(label_1, WATCH_TEXT_ID_ON);
+
+       lv_obj_align(btn_0, obj, LV_ALIGN_CENTER, -20, -40);
+       lv_obj_align(btn_1, btn_0, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 40);
+
+    return obj;
+}
+
+void setting_new_sms_silent_create_event_cb(lv_obj_t * btn, lv_event_t event)
+{
+    (void)btn;
+
+    if(LV_EVENT_CLICKED != event)
+               return;
+
+    lv_watch_png_cache_all_free();
+
+    lv_obj_t * obj = mmi_new_sms_silent_create(NULL);
+    LV_ASSERT_MEM(obj);
+    if(obj == NULL)
+               return;
+}
+
+#endif
+
diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_new_sms_silent.h b/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_new_sms_silent.h
new file mode 100644 (file)
index 0000000..b67cce4
--- /dev/null
@@ -0,0 +1,42 @@
+
+
+
+#ifndef __SETTING_NEW_SMS_SILENT_H__
+#define __SETTING_NEW_SMS_SILENT_H__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif //__cplusplus
+
+#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_NEW_SMS_SILENT_SUPPORT__
+
+typedef struct
+{
+    lv_watch_obj_ext_t lv_watch_obj;
+    /*New data for this type */
+       uint8_t switch_value;
+    //lv_obj_t * btn_0;
+    //lv_obj_t * btn_1;
+} lv_new_sms_silent_obj_ext_t;
+
+
+void setting_new_sms_silent_create_event_cb(lv_obj_t * btn, lv_event_t event);
+
+#endif
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif
+
diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_page_main_menu_tts.c b/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_page_main_menu_tts.c
new file mode 100644 (file)
index 0000000..d551b56
--- /dev/null
@@ -0,0 +1,177 @@
+
+
+
+#include "lv_watch.h"
+
+#ifdef __MMI_PAGE_MAIN_MENU_TTS_SUPPORT__
+
+void * mmi_page_main_menu_tts_ext_get(void)
+{
+       lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_WATCH_SETTING_COMMON);
+       if(NULL == activity_obj) 
+               return NULL;
+       
+       lv_obj_t * watch_obj = NULL;
+       lv_watch_get_child_obj(activity_obj, lv_watch_obj_signal, &watch_obj);
+       if(NULL != watch_obj) 
+       {
+               void * ext = lv_obj_get_ext_attr(watch_obj);
+               return ext;
+       }
+
+       return NULL;
+}
+
+static void mmi_page_main_menu_tts_prepare_destory(lv_obj_t * activity_obj)
+{
+    lv_watch_png_cache_all_free();
+}
+
+void mmi_page_main_menu_tts_screen_clean(void)
+{
+    lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_WATCH_SETTING_COMMON);
+    if(NULL != activity_obj)
+       {
+        mmi_page_main_menu_tts_prepare_destory(activity_obj);
+        lv_obj_del(activity_obj);
+    }
+
+       //lv_watch_obj_cleanup(obj);
+}
+
+static void mmi_page_main_menu_tts_event_cb(lv_obj_t * obj, lv_event_t event)
+{
+    if(LV_EVENT_CLICKED != event)
+               return;
+
+       uint32_t user_num = lv_watch_get_free_num(obj);
+       
+       mmi_page_main_menu_tts_swtich_set((0 == user_num) ? 0 : 1);
+       mmi_page_main_menu_tts_screen_clean();
+}
+
+static lv_obj_t * mmi_page_main_menu_tts_create(lv_obj_t * activity_obj)
+{
+    if(NULL == activity_obj) {
+        lv_watch_activity_ext_t activity_ext;
+        memset(&activity_ext, 0, sizeof(lv_watch_activity_ext_t));
+        activity_ext.actId = ACT_ID_WATCH_SETTING_COMMON;
+        activity_ext.create = mmi_page_main_menu_tts_create;
+        activity_ext.prepare_destory = mmi_page_main_menu_tts_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 * obj = lv_watch_obj_create(activity_obj);
+    if(NULL == obj)
+        return NULL;
+
+    //lv_page_main_menu_tts_obj_ext_t * ext = (lv_page_main_menu_tts_obj_ext_t *)lv_obj_allocate_ext_attr(obj, sizeof(lv_page_main_menu_tts_obj_ext_t));
+    //if(NULL == ext)
+    //    return NULL;
+
+       uint8_t switch_value = mmi_page_main_menu_tts_swtich_get();
+
+    lv_obj_t * title_label = lv_label_create(obj, NULL);
+    lv_obj_add_style(title_label, LV_LABEL_PART_MAIN, &lv_watch_font20_gray);
+    lv_label_set_align(title_label, LV_LABEL_ALIGN_CENTER);
+    lv_obj_set_click(title_label, false);
+    lv_label_set_text_id(title_label, WATCH_TEXT_ID_PAGE_MAIN_MENU_TTS);
+    lv_obj_align(title_label, obj, LV_ALIGN_IN_TOP_MID, 0, 10);
+
+       //
+    lv_obj_t * btn_0 = lv_btn_create(obj, NULL);
+    lv_obj_add_style(btn_0, LV_BTN_PART_MAIN, &lv_style_transp_fit);
+    lv_btn_set_fit(btn_0, LV_FIT_TIGHT);
+    lv_btn_set_layout(btn_0, LV_LAYOUT_ROW_MID);
+    lv_obj_set_event_cb(btn_0, mmi_page_main_menu_tts_event_cb);
+    lv_watch_obj_add_element(btn_0);
+       lv_watch_set_free_num(btn_0, 0);
+
+    lv_obj_t * img_0 = lv_img_create(btn_0, NULL);
+    lv_img_set_src(img_0, (0 == switch_value) ? ICON_ITEM_SELECTED : ICON_ITEM_NOT_SELECTED);
+
+    lv_obj_t* label_0 = lv_label_create(btn_0, NULL);
+    lv_obj_add_style(label_0, LV_LABEL_PART_MAIN, &lv_watch_font26); // &lv_watch_font20);
+    lv_label_set_text_id(label_0, WATCH_TEXT_ID_OFF);
+
+       //
+    lv_obj_t * btn_1 = lv_btn_create(obj, btn_0);
+    lv_obj_set_event_cb(btn_1, mmi_page_main_menu_tts_event_cb);
+    lv_watch_obj_add_element(btn_1);
+       lv_watch_set_free_num(btn_1, 1);
+
+    lv_obj_t * img_1 = lv_img_create(btn_1, NULL);
+       lv_img_set_src(img_1, (0 == switch_value) ? ICON_ITEM_NOT_SELECTED : ICON_ITEM_SELECTED);
+
+    lv_obj_t* label_1 = lv_label_create(btn_1, NULL);
+    lv_obj_add_style(label_1, LV_LABEL_PART_MAIN, &lv_watch_font26); // &lv_watch_font20);
+    lv_label_set_text_id(label_1, WATCH_TEXT_ID_ON);
+
+       lv_obj_align(btn_0, obj, LV_ALIGN_CENTER, -20, -40);
+       lv_obj_align(btn_1, btn_0, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 40);
+
+    return obj;
+}
+
+void setting_page_main_menu_tts_create_event_cb(lv_obj_t * btn, lv_event_t event)
+{
+    (void)btn;
+
+    if(LV_EVENT_CLICKED != event)
+               return;
+
+    lv_watch_png_cache_all_free();
+
+    lv_obj_t * obj = mmi_page_main_menu_tts_create(NULL);
+    LV_ASSERT_MEM(obj);
+    if(obj == NULL)
+               return;
+}
+
+
+static void mmi_page_main_menu_tts_audio_ctrl_callback(AUDIO_CTRL_PRIORITY priority)
+{
+       printf("[@CHENG_DEBUG][%s][%d]: priority=%d\n", __FUNCTION__, __LINE__, priority);
+       
+    if(AUDIO_CTRL_PRIORITY_MENU_TTS == priority)
+    {
+               Hal_NFFS_File_Play_End();
+               Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_MENU_TTS);
+    }
+    else if(AUDIO_CTRL_PRIORITY_MENU_TTS > priority)
+    {
+               Hal_NFFS_File_Play_End();
+               Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_MENU_TTS);
+    }
+}
+
+static void mmi_page_main_menu_tts_play_over_cb(void *para)
+{
+       Hal_NFFS_File_Play_End();
+       Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_MENU_TTS);
+}
+
+void mmi_page_main_menu_tts_broadcast(uint8_t index)
+{
+       if(0 == mmi_page_main_menu_tts_swtich_get())
+       {
+               return ;
+       }
+
+       if(AUDIO_CTRL_PRIORITY_MENU_TTS == Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_MENU_TTS, mmi_page_main_menu_tts_audio_ctrl_callback))
+       {
+               printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+               
+               char * ring_path = mmi_page_main_menu_tts_info_get(index);
+               if(NULL != ring_path)
+               {
+                       Hal_NFFS_File_Play_Onetime(ring_path, (HAL_SPEAKER_GAIN)query_current_volume(), mmi_page_main_menu_tts_play_over_cb, NULL);
+               }
+       }
+}
+#endif
+
diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_page_main_menu_tts.h b/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_page_main_menu_tts.h
new file mode 100644 (file)
index 0000000..45f4add
--- /dev/null
@@ -0,0 +1,43 @@
+
+
+
+#ifndef __SETTING_PAGE_MAIN_MENU_TTS_H__
+#define __SETTING_PAGE_MAIN_MENU_TTS_H__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif //__cplusplus
+
+#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_PAGE_MAIN_MENU_TTS_SUPPORT__
+
+typedef struct
+{
+    lv_watch_obj_ext_t lv_watch_obj;
+    /*New data for this type */
+       uint8_t switch_value;
+    //lv_obj_t * btn_0;
+    //lv_obj_t * btn_1;
+} lv_page_main_menu_tts_obj_ext_t;
+
+
+void setting_page_main_menu_tts_create_event_cb(lv_obj_t * btn, lv_event_t event);
+void mmi_page_main_menu_tts_broadcast(uint8_t index);
+
+#endif
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif
+
diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_sedentary_remind.c b/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_sedentary_remind.c
new file mode 100644 (file)
index 0000000..10ac836
--- /dev/null
@@ -0,0 +1,300 @@
+
+
+
+#include "lv_watch.h"
+
+#ifdef __MMI_SEDENTARY_REMIND_SUPPORT__
+
+static void * s_sedentary_remind_timer = NULL;
+static uint32_t s_sedentary_remind_start_step = 0;
+
+static void mmi_sedentary_remind_trigger(uint32_t para);
+
+void mmi_sedentary_remind_timer_stop(void)
+{
+       if(NULL != s_sedentary_remind_timer)
+       {
+               uos_timer_stop(s_sedentary_remind_timer);
+       }
+       s_sedentary_remind_start_step = 0;
+}
+
+static void mmi_sedentary_remind_timer_start(void)
+{
+       uint16_t time_min = mmi_sedentary_remind_interval_get();
+               
+       if(NULL != s_sedentary_remind_timer)
+               uos_timer_stop(s_sedentary_remind_timer);
+       else
+               uos_timer_create(&s_sedentary_remind_timer);
+    
+       s_sedentary_remind_start_step = asl_pedometer_steps_get();
+       uos_timer_start(s_sedentary_remind_timer, MS_TO_TICKS(time_min * 60 * 1000), 0, mmi_sedentary_remind_trigger, NULL);
+}
+
+static void mmi_sedentary_remind_trigger(uint32_t para)
+{
+       uint32_t cur_steps = asl_pedometer_steps_get();
+
+       if(MMI_SEDENTARY_REMIND_STEP_D_VALUE > abs(cur_steps - s_sedentary_remind_start_step))
+       {
+               mmi_remind_sedentary_screen_active();
+       }
+
+       mmi_sedentary_remind_timer_start();
+}
+
+void mmi_sedentary_remind_mission_power_on_check(void)
+{
+       if(0 != mmi_sedentary_remind_swtich_get())
+       {
+               mmi_sedentary_remind_timer_start();
+       }
+}
+
+void * mmi_sedentary_remind_ext_get(void)
+{
+       lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_WATCH_SETTING_COMMON);
+       if(NULL == activity_obj) 
+               return NULL;
+       
+       lv_obj_t * watch_obj = NULL;
+       lv_watch_get_child_obj(activity_obj, lv_watch_obj_signal, &watch_obj);
+       if(NULL != watch_obj) 
+       {
+               void * ext = lv_obj_get_ext_attr(watch_obj);
+               return ext;
+       }
+
+       return NULL;
+}
+
+static void mmi_sedentary_remind_prepare_destory(lv_obj_t * activity_obj)
+{
+    lv_watch_png_cache_all_free();
+}
+
+void mmi_sedentary_remind_screen_clean(void)
+{
+    lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_WATCH_SETTING_COMMON);
+    if(NULL != activity_obj)
+       {
+        mmi_sedentary_remind_prepare_destory(activity_obj);
+        lv_obj_del(activity_obj);
+    }
+}
+
+static void setting_sedentary_remind_btn_event_cb(lv_obj_t * obj, lv_event_t event)
+{
+    if(LV_EVENT_CLICKED != event)
+               return;
+
+       lv_sedentary_remind_obj_ext_t * ext = (lv_sedentary_remind_obj_ext_t *)mmi_sedentary_remind_ext_get();
+       if(NULL == ext)
+               return NULL;
+
+       char time_str[8] = {0};
+       uint32_t user_num = lv_watch_get_free_num(obj);
+       switch(user_num)
+       {
+               case 0:
+               case 1:
+                       if(0 == ext->switch_value)
+                               ext->switch_value = 1;
+                       else
+                               ext->switch_value = 0;
+
+                       lv_label_set_text_id(ext->label_switch, ((0 == ext->switch_value) ? WATCH_TEXT_ID_OFF : WATCH_TEXT_ID_ON));
+                       lv_label_set_align(ext->label_switch, LV_LABEL_ALIGN_CENTER);
+                       lv_obj_align(ext->label_switch, lv_obj_get_parent(ext->label_switch), LV_ALIGN_CENTER, 0, 0);
+                       break;
+
+               case 2: // time decrease
+                       if(MMI_SEDENTARY_REMIND_INTERVAL_MIN < ext->interval_value)
+                       {
+                               ext->interval_value -= MMI_SEDENTARY_REMIND_INTERVAL_STEP;
+                       }
+                       sprintf(time_str, "%d", ext->interval_value);
+                       lv_label_set_text(ext->label_time, time_str);
+                       lv_label_set_align(ext->label_time, LV_LABEL_ALIGN_CENTER);
+                       lv_obj_align(ext->label_time, lv_obj_get_parent(ext->label_time), LV_ALIGN_CENTER, 0, 0);
+                       break;
+
+               case 3: // time increase
+                       if(MMI_SEDENTARY_REMIND_INTERVAL_MAX > ext->interval_value)
+                       {
+                               ext->interval_value += MMI_SEDENTARY_REMIND_INTERVAL_STEP;
+                       }
+                       sprintf(time_str, "%d", ext->interval_value);
+                       lv_label_set_text(ext->label_time, time_str);
+                       lv_label_set_align(ext->label_time, LV_LABEL_ALIGN_CENTER);
+                       lv_obj_align(ext->label_time, lv_obj_get_parent(ext->label_time), LV_ALIGN_CENTER, 0, 0);
+                       break;
+
+               case 4: // save
+                       mmi_sedentary_remind_swtich_set(ext->switch_value);
+                       mmi_sedentary_remind_interval_set(ext->interval_value);
+                       if(0 == ext->switch_value) // off
+                       {
+                               mmi_sedentary_remind_timer_stop();
+                       }
+                       else
+                       {
+                               mmi_sedentary_remind_timer_start();
+                       }
+                       mmi_sedentary_remind_screen_clean();
+                       break;
+
+               case 5: // cancel
+                       mmi_sedentary_remind_screen_clean();
+                       break;
+
+               default:
+                       break;
+       }
+
+}
+
+static lv_obj_t * mmi_sedentary_remind_create(lv_obj_t * activity_obj)
+{
+    if(NULL == activity_obj) {
+        lv_watch_activity_ext_t activity_ext;
+        memset(&activity_ext, 0, sizeof(lv_watch_activity_ext_t));
+        activity_ext.actId = ACT_ID_WATCH_SETTING_COMMON;
+        activity_ext.create = mmi_sedentary_remind_create;
+        activity_ext.prepare_destory = mmi_sedentary_remind_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 * obj = lv_watch_obj_create(activity_obj);
+    if(NULL == obj)
+        return NULL;
+
+    lv_sedentary_remind_obj_ext_t * ext = (lv_sedentary_remind_obj_ext_t *)lv_obj_allocate_ext_attr(obj, sizeof(lv_sedentary_remind_obj_ext_t));
+    if(NULL == ext)
+        return NULL;
+
+       ext->switch_value = mmi_sedentary_remind_swtich_get();
+       ext->interval_value = mmi_sedentary_remind_interval_get();
+
+       // on/off
+    lv_obj_t * label_0 = lv_label_create(obj, NULL);
+    lv_obj_add_style(label_0, LV_LABEL_PART_MAIN, &lv_watch_font26);
+    lv_label_set_align(label_0, LV_LABEL_ALIGN_CENTER);
+    lv_obj_set_click(label_0, false);
+    lv_label_set_text_id(label_0, WATCH_TEXT_ID_SEDENTARY_REMIND);
+    lv_obj_align(label_0, NULL, LV_ALIGN_IN_TOP_MID, 0, 15);
+
+       lv_obj_t * img_0 = lv_img_create(obj, NULL);
+       lv_img_set_src(img_0, ICON_SEDENTARY_REMIND_SET_BG);
+       lv_obj_align(img_0, label_0, LV_ALIGN_OUT_BOTTOM_MID, 0, 5);
+
+       lv_obj_t * label_switch = lv_label_create(img_0, NULL);
+    lv_obj_add_style(label_switch, LV_LABEL_PART_MAIN, &lv_watch_font26);
+    lv_label_set_align(label_switch, LV_LABEL_ALIGN_CENTER);
+    lv_obj_set_click(label_switch, false);
+    lv_label_set_text_id(label_switch, ((0 == ext->switch_value) ? WATCH_TEXT_ID_OFF : WATCH_TEXT_ID_ON));
+    lv_obj_align(label_switch, NULL, LV_ALIGN_CENTER, 0, 0);
+       ext->label_switch = label_switch;
+       
+       lv_obj_t * btn_left_0 = lv_imgbtn_create(img_0, NULL);
+       lv_imgbtn_set_src(btn_left_0, LV_BTN_STATE_RELEASED, ICON_SEDENTARY_REMIND_SET_LEFT);
+       lv_imgbtn_set_src(btn_left_0, LV_BTN_STATE_PRESSED, ICON_SEDENTARY_REMIND_SET_LEFT);
+       lv_obj_align(btn_left_0, NULL, LV_ALIGN_IN_TOP_LEFT, 0, 0);
+       lv_obj_set_event_cb(btn_left_0, setting_sedentary_remind_btn_event_cb);
+       lv_watch_set_free_num(btn_left_0, 0);
+
+       lv_obj_t * btn_right_0 = lv_imgbtn_create(img_0, NULL);
+       lv_imgbtn_set_src(btn_right_0, LV_BTN_STATE_RELEASED, ICON_SEDENTARY_REMIND_SET_RIGHT);
+       lv_imgbtn_set_src(btn_right_0, LV_BTN_STATE_PRESSED, ICON_SEDENTARY_REMIND_SET_RIGHT);
+       lv_obj_align(btn_right_0, NULL, LV_ALIGN_IN_TOP_RIGHT, 0, 0);
+       lv_obj_set_event_cb(btn_right_0, setting_sedentary_remind_btn_event_cb);
+       lv_watch_set_free_num(btn_right_0, 1);
+
+       // time
+    lv_obj_t * label_1 = lv_label_create(obj, NULL);
+    lv_obj_add_style(label_1, LV_LABEL_PART_MAIN, &lv_watch_font26);
+    lv_label_set_align(label_1, LV_LABEL_ALIGN_CENTER);
+    lv_obj_set_click(label_1, false);
+    lv_label_set_text_id(label_1, WATCH_TEXT_ID_REMIND_TIME_MINUTE);
+    lv_obj_align(label_1, img_0, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
+
+       lv_obj_t * img_1 = lv_img_create(obj, NULL);
+       lv_img_set_src(img_1, ICON_SEDENTARY_REMIND_SET_BG);
+       lv_obj_align(img_1, label_1, LV_ALIGN_OUT_BOTTOM_MID, 0, 5);
+
+       lv_obj_t * label_time = lv_label_create(img_1, NULL);
+    lv_obj_add_style(label_time, LV_LABEL_PART_MAIN, &lv_watch_font26);
+    lv_label_set_align(label_time, LV_LABEL_ALIGN_CENTER);
+    lv_obj_set_click(label_time, false);
+       char time_str[8] = {0};
+       sprintf(time_str, "%d", ext->interval_value);
+    lv_label_set_text(label_time, time_str);
+    lv_obj_align(label_time, NULL, LV_ALIGN_CENTER, 0, 0);
+       ext->label_time = label_time;
+       
+       lv_obj_t * btn_left_1 = lv_imgbtn_create(img_1, NULL);
+       lv_imgbtn_set_src(btn_left_1, LV_BTN_STATE_RELEASED, ICON_SEDENTARY_REMIND_SET_LEFT);
+       lv_imgbtn_set_src(btn_left_1, LV_BTN_STATE_PRESSED, ICON_SEDENTARY_REMIND_SET_LEFT);
+       lv_obj_align(btn_left_1, NULL, LV_ALIGN_IN_TOP_LEFT, 0, 0);
+       lv_obj_set_event_cb(btn_left_1, setting_sedentary_remind_btn_event_cb);
+       lv_watch_set_free_num(btn_left_1, 2);
+
+       lv_obj_t * btn_right_1 = lv_imgbtn_create(img_1, NULL);
+       lv_imgbtn_set_src(btn_right_1, LV_BTN_STATE_RELEASED, ICON_SEDENTARY_REMIND_SET_RIGHT);
+       lv_imgbtn_set_src(btn_right_1, LV_BTN_STATE_PRESSED, ICON_SEDENTARY_REMIND_SET_RIGHT);
+       lv_obj_align(btn_right_1, NULL, LV_ALIGN_IN_TOP_RIGHT, 0, 0);
+       lv_obj_set_event_cb(btn_right_1, setting_sedentary_remind_btn_event_cb);
+       lv_watch_set_free_num(btn_right_1, 3);
+       
+       //
+    lv_obj_t * btn_save = lv_btn_create(obj, NULL);
+    lv_obj_add_style(btn_save, LV_BTN_PART_MAIN, &lv_style_transp_fit);
+    lv_btn_set_fit(btn_save, LV_FIT_TIGHT);
+    lv_obj_set_event_cb(btn_save, setting_sedentary_remind_btn_event_cb);
+       lv_obj_align(btn_save, NULL, LV_ALIGN_IN_BOTTOM_LEFT, 35, -20);
+    //lv_watch_obj_add_element(btn_save);
+       lv_watch_set_free_num(btn_save, 4);
+
+    lv_obj_t* label_save = lv_label_create(btn_save, NULL);
+    lv_obj_add_style(label_save, LV_LABEL_PART_MAIN, &lv_watch_font26);
+    lv_label_set_text_id(label_save, WATCH_TEXT_ID_SAVE);
+
+       //
+    lv_obj_t * btn_cancel = lv_btn_create(obj, NULL);
+    lv_obj_add_style(btn_cancel, LV_BTN_PART_MAIN, &lv_style_transp_fit);
+    lv_btn_set_fit(btn_cancel, LV_FIT_TIGHT);
+    lv_obj_set_event_cb(btn_cancel, setting_sedentary_remind_btn_event_cb);
+       lv_obj_align(btn_cancel, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, -35, -20);
+       lv_watch_set_free_num(btn_cancel, 5);
+
+    lv_obj_t* label_cancel = lv_label_create(btn_cancel, NULL);
+    lv_obj_add_style(label_cancel, LV_LABEL_PART_MAIN, &lv_watch_font26);
+    lv_label_set_text_id(label_cancel, WATCH_TEXT_ID_BACK);
+    //lv_label_set_long_mode(label_cancel, LV_LABEL_LONG_BREAK);
+    //lv_obj_set_width(label_cancel, LV_HOR_RES * 2 / 3);
+
+    return obj;
+}
+
+void setting_sedentary_remind_create_event_cb(lv_obj_t * btn, lv_event_t event)
+{
+    (void)btn;
+
+    if(LV_EVENT_CLICKED != event)
+               return;
+
+    lv_watch_png_cache_all_free();
+
+    lv_obj_t * obj = mmi_sedentary_remind_create(NULL);
+    LV_ASSERT_MEM(obj);
+    if(obj == NULL)
+               return;
+}
+
+#endif
+
diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_sedentary_remind.h b/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_sedentary_remind.h
new file mode 100644 (file)
index 0000000..b10d971
--- /dev/null
@@ -0,0 +1,50 @@
+
+
+
+#ifndef __SETTING_SEDENTARY_REMIND_H__
+#define __SETTING_SEDENTARY_REMIND_H__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif //__cplusplus
+
+#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_SEDENTARY_REMIND_SUPPORT__
+
+#define MMI_SEDENTARY_REMIND_STEP_D_VALUE      (60)
+#define MMI_SEDENTARY_REMIND_INTERVAL_MAX      (120)
+#define MMI_SEDENTARY_REMIND_INTERVAL_MIN      (10)
+#define MMI_SEDENTARY_REMIND_INTERVAL_STEP     (10)
+
+
+typedef struct
+{
+    lv_watch_obj_ext_t lv_watch_obj;
+    /*New data for this type */
+       uint8_t switch_value;
+       uint16_t interval_value;
+    lv_obj_t * label_switch;
+    lv_obj_t * label_time;
+} lv_sedentary_remind_obj_ext_t;
+
+
+void mmi_sedentary_remind_mission_power_on_check(void);
+void setting_sedentary_remind_create_event_cb(lv_obj_t * btn, lv_event_t event);
+
+#endif
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif
+
index 21562ae..adca89c 100644 (file)
@@ -120,8 +120,6 @@ static void mmi_data_init_after_watch_create(void)
 #ifdef __MMI_SLEEP_FUNCTION_SUPPORT__
        mmi_watch_sleep_time_nv_read();
 #endif
-       mmi_dial_pad_switch_nv_read();
-       mmi_white_list_switch_nv_read();
 #ifdef __MMI_ZHSX_SUPPORT_CHECK_SIM_UNBIND__
        mmi_watch_sim_unbind_switch_nv_read();
 #endif
index 688075a..1fd5846 100644 (file)
@@ -46,6 +46,69 @@ extern "C" {
 #if defined(__MMI_REMIND_SLEEP_SUPPORT__) || defined(__MMI_CUSTOM_HENG_AI__)
 #define AUDIO_REMIND_SLEEP                   "R:/audio/AUDIO_REMIND_SLEEP.mp3"
 #endif
+#ifdef __MMI_SEDENTARY_REMIND_SUPPORT__
+#define AUDIO_REMIND_SEDENTARY                  "R:/audio/AUDIO_REMIND_SEDENTARY.mp3"
+#endif
+
+
+#ifdef __MMI_PAGE_MAIN_MENU_TTS_SUPPORT__
+
+#define AUDIO_MAIN_MENU_PHONEBOOK                   "R:/audio/main_menu/AUDIO_MAIN_MENU_PHONEBOOK.mp3"
+#if USE_LV_WATCH_SMS_MSG != 0
+#define AUDIO_MAIN_MENU_SMS                   "R:/audio/main_menu/AUDIO_MAIN_MENU_SMS.mp3"
+#endif
+#define AUDIO_MAIN_MENU_DIALPAD                   "R:/audio/main_menu/AUDIO_MAIN_MENU_DIALPAD.mp3"
+#ifndef __MMI_PHONEBOOK_CALLLOG_IN_ONE_MENU__
+#define AUDIO_MAIN_MENU_CALL_LOG                   "R:/audio/main_menu/AUDIO_MAIN_MENU_CALL_LOG.mp3"
+#endif
+#ifdef __MMI_HEALTH_MEASURE_HEART_SUPPORT__
+#define AUDIO_MAIN_MENU_HEART_RATE                   "R:/audio/main_menu/AUDIO_MAIN_MENU_HEART_RATE.mp3"
+#endif
+#ifdef __MMI_HEALTH_MEASURE_SPO2_SUPPORT__
+#define AUDIO_MAIN_MENU_SPO2                   "R:/audio/main_menu/AUDIO_MAIN_MENU_SPO2.mp3"
+#endif
+#ifdef __MMI_HEALTH_MEASURE_TEMPERATURE_SUPPORT__
+#define AUDIO_MAIN_MENU_TEMPERATURE                   "R:/audio/main_menu/AUDIO_MAIN_MENU_TEMPERATURE.mp3"
+#endif
+#ifdef __MMI_WECHAT_SUPPORT__
+#define AUDIO_MAIN_MENU_WECHAT                   "R:/audio/main_menu/AUDIO_MAIN_MENU_WECHAT.mp3"
+#endif
+#if USE_LV_WATCH_CAMERA != 0
+#define AUDIO_MAIN_MENU_CAMERA                   "R:/audio/main_menu/AUDIO_MAIN_MENU_CAMERA.mp3"
+#define AUDIO_MAIN_MENU_ALBUM                   "R:/audio/main_menu/AUDIO_MAIN_MENU_ALBUM.mp3"
+#endif
+#if USE_LV_WATCH_ALIPAY != 0
+#define AUDIO_MAIN_MENU_ALIPAY                   "R:/audio/main_menu/AUDIO_MAIN_MENU_ALIPAY.mp3"
+#endif
+#ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__
+#define AUDIO_MAIN_MENU_VIDEO_CALL                   "R:/audio/main_menu/AUDIO_MAIN_MENU_VIDEO_CALL.mp3"
+#endif
+#ifdef __MMI_TOOL_MENU_SUPPORT__
+#define AUDIO_MAIN_MENU_TOOL                   "R:/audio/main_menu/AUDIO_MAIN_MENU_TOOL.mp3"
+#endif
+
+#define AUDIO_MAIN_MENU_SETTINGS                   "R:/audio/main_menu/AUDIO_MAIN_MENU_SETTINGS.mp3"
+
+#else
+
+#define AUDIO_MAIN_MENU_PHONEBOOK      NULL
+#define AUDIO_MAIN_MENU_SMS                    NULL
+#define AUDIO_MAIN_MENU_DIALPAD                NULL
+#define AUDIO_MAIN_MENU_CALL_LOG       NULL
+#define AUDIO_MAIN_MENU_HEART_RATE     NULL
+#define AUDIO_MAIN_MENU_SPO2           NULL
+#define AUDIO_MAIN_MENU_TEMPERATURE    NULL
+#define AUDIO_MAIN_MENU_WECHAT         NULL
+#define AUDIO_MAIN_MENU_CAMERA         NULL
+#define AUDIO_MAIN_MENU_ALBUM          NULL
+#define AUDIO_MAIN_MENU_ALIPAY         NULL
+#define AUDIO_MAIN_MENU_VIDEO_CALL     NULL
+#define AUDIO_MAIN_MENU_TOOL           NULL
+#define AUDIO_MAIN_MENU_SETTINGS       NULL
+
+#endif
+
+
 
 
 //******** audio resource end ********
@@ -826,7 +889,7 @@ LV_IMG_DECLARE(img_poweron_logo);
 #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"
-#ifndef USE_LV_WATCH_UI_240_240_CIRCLE
+#ifndef USE_LV_WATCH_UI_CIRCLE
 #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"
@@ -895,6 +958,22 @@ LV_IMG_DECLARE(img_poweron_logo);
 #define ICON_KEY_POWER_CANCEL                  "R:/png/setting/ICON_KEY_POWER_CANCEL.png"
 #endif
 
+#ifdef __MMI_SEDENTARY_REMIND_SUPPORT__
+#define ICON_SETTING_SEDENTARY_REMIND           "R:/png/setting/ICON_SETTING_SEDENTARY_REMIND.png"
+#define ICON_SEDENTARY_REMIND_SET_BG           "R:/png/setting/ICON_SEDENTARY_REMIND_SET_BG.png"
+#define ICON_SEDENTARY_REMIND_SET_LEFT           "R:/png/setting/ICON_SEDENTARY_REMIND_SET_LEFT.png"
+#define ICON_SEDENTARY_REMIND_SET_RIGHT           "R:/png/setting/ICON_SEDENTARY_REMIND_SET_RIGHT.png"
+#define ICON_SEDENTARY_REMIND_IMAGE           "R:/png/setting/ICON_SEDENTARY_REMIND_IMAGE.png"
+#endif
+
+#ifdef __MMI_PAGE_MAIN_MENU_TTS_SUPPORT__
+#define ICON_SETTING_PAGE_MAIN_MENU_TTS           "R:/png/setting/ICON_SETTING_PAGE_MAIN_MENU_TTS.png"
+#endif
+
+#ifdef __MMI_NEW_SMS_SILENT_SUPPORT__
+#define ICON_SETTING_NEW_SMS_SILENT           "R:/png/setting/ICON_SETTING_NEW_SMS_SILENT.png"
+#endif
+
 
 
 #endif
index 0fc44f9..f471898 100644 (file)
@@ -223,6 +223,36 @@ extern "C"
 #define MMI_SIM_UNBIND_SWITCH_DEFAULT          (MMI_WATCH_SWITCH_OFF) // 0-close; 1-open
 #endif
 
+// sedentary remind
+#ifdef MMI_CUSTOMER_SEDENTARY_SWITCH
+#define MMI_WATCH_SEDENTARY_SWITCH_DEFAULT             MMI_CUSTOMER_SEDENTARY_SWITCH
+#else
+#define MMI_WATCH_SEDENTARY_SWITCH_DEFAULT             (MMI_WATCH_SWITCH_OFF) // 0-close; 1-open
+#endif
+
+#ifdef MMI_CUSTOMER_SEDENTARY_INTERVAL
+#define MMI_WATCH_SEDENTARY_INTERVAL_DEFAULT           MMI_CUSTOMER_SEDENTARY_INTERVAL
+#else
+#define MMI_WATCH_SEDENTARY_INTERVAL_DEFAULT           (20) // unit-minute
+#endif
+
+// page main menu tts
+#ifdef MMI_CUSTOMER_PAGE_MAIN_MENU_TTS_SWITCH
+#define MMI_PAGE_MAIN_MENU_TTS_SWITCH_DEFAULT          MMI_CUSTOMER_PAGE_MAIN_MENU_TTS_SWITCH
+#else
+#define MMI_PAGE_MAIN_MENU_TTS_SWITCH_DEFAULT          (MMI_WATCH_SWITCH_OFF) // 0-close; 1-open
+#endif
+
+// new sms silent
+#ifdef MMI_CUSTOMER_NEW_SMS_SILENT_SWITCH
+#define MMI_NEW_SMS_SILENT_SWITCH_DEFAULT              MMI_CUSTOMER_NEW_SMS_SILENT_SWITCH
+#else
+#define MMI_NEW_SMS_SILENT_SWITCH_DEFAULT              (MMI_WATCH_SWITCH_OFF) // 0-close; 1-open
+#endif
+
+
+
+
 
 #endif
 
index f85f20a..8fb4a83 100644 (file)
@@ -796,6 +796,7 @@ typedef enum
     AUDIO_CTRL_PRIORITY_6,      //audio player
     AUDIO_CTRL_PRIORITY_7,      //setting volume tone
     AUDIO_CTRL_PRIORITY_8,      //message
+       AUDIO_CTRL_PRIORITY_MENU_TTS,
     AUDIO_CTRL_PRIORITY_MAX,
     AUDIO_CTRL_PRIORITY_INVALID = 0xFF,
 } AUDIO_CTRL_PRIORITY;