*********************/
#ifdef __MMI_ZHSX_SUPPORT__
#ifdef USE_LV_WATCH_UI_CIRCLE
+#ifdef USE_LV_WATCH_UI_466_466
+#define QRCODE_BG_WIDTH (292) // (272)
+#define QRCODE_WIDTH (280) // (260)
+#else
#define QRCODE_BG_WIDTH (126+12)
#define QRCODE_WIDTH (126)
+#endif
#else
#define QRCODE_BG_WIDTH (190+12)
#define QRCODE_WIDTH (188)
static void qrcode_prepare_destory(lv_obj_t * activity_obj);
static lv_obj_t * qrcode_create_content(lv_obj_t * par);
+#ifdef __MMI_APP_QRCODE_MENU_SUPPORT__
+static void app_qrcode_prepare_destory(lv_obj_t * activity_obj);
+#endif
+#ifdef __MMI_APP_QRCODE_AND_DEVICE_QRCODE_IN_ONE_SUPPORT__
+static void mmi_app_and_device_qrcode_prepare_destory(lv_obj_t * activity_obj);
+#endif
/**********************
* STATIC VARIABLES
**********************/
lv_obj_align(qrcode, content, LV_ALIGN_CENTER, 0, 0);
lv_obj_t * label = lv_label_create(par, NULL);
- #if USE_LV_WATCH_UI_CIRCLE
- lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20);
+#if USE_LV_WATCH_UI_CIRCLE
+ #ifdef USE_LV_WATCH_UI_466_466
+ lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font36);
#else
- lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26);
+ lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20);
#endif
+#else
+ lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26);
+#endif
lv_label_set_text(label, imei);
lv_obj_set_click(label, false);
lv_obj_align(label, content, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
}
+#ifdef __MMI_APP_QRCODE_FROM_SERVER_SUPPORT__
+
+static uint8_t s_app_qrcode_get_flag = 0;
+
+uint8_t mmi_app_qrcode_get_flag_get(void)
+{
+ return s_app_qrcode_get_flag;
+}
+
+void mmi_app_qrcode_get_flag_set(uint8_t flag)
+{
+ if(0 != flag && 1 != flag)
+ return;
+
+ s_app_qrcode_get_flag = flag;
+}
+
+char * mmi_app_qrcode_file_get(void)
+{
+ return MMI_APP_QRCODE_PNG_FILE;
+}
+
+void mmi_app_qrcode_content_buffer_set(char * qrcode_content, uint32_t content_len)
+{
+ lv_fs_file_t file_p;
+ lv_fs_res_t res;
+ uint32_t bytes_write = 0;
+ uint32_t file_size = 0;
+
+ lv_fs_remove(MMI_APP_QRCODE_PNG_FILE);
+ res = lv_fs_open(&file_p, MMI_APP_QRCODE_PNG_FILE, LV_FS_MODE_WR);
+ if(LV_FS_RES_OK != res)
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: errno=%d\n", __FUNCTION__, __LINE__, res);
+ }
+ else
+ {
+ res = lv_fs_write(&file_p, qrcode_content, content_len, &bytes_write);
+ if(LV_FS_RES_OK == res)
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: file_size=%d,write_size=%d\n", __FUNCTION__, __LINE__, content_len, bytes_write);
+ mmi_app_qrcode_get_flag_set(1);
+ }
+ }
+ lv_fs_close(&file_p);
+}
+
+bool mmi_app_qrcode_refresh_prompt(void)
+{
+ lv_fs_file_t file_p;
+ lv_fs_res_t res;
+ uint32_t file_size = 0;
+
+ res = lv_fs_open(&file_p, MMI_APP_QRCODE_PNG_FILE, LV_FS_MODE_RD);
+ if(LV_FS_RES_OK == res)
+ {
+ lv_fs_size(&file_p, &file_size);
+ lv_fs_close(&file_p);
+ printf("[@CHENG_DEBUG][%s][%d]: file_size=%d\n", __FUNCTION__, __LINE__, file_size);
+ if(128 < file_size)
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: exist\n", __FUNCTION__, __LINE__);
+ return false;
+ }
+ }
+ lv_fs_close(&file_p);
+
+ return true;
+}
+
+void mmi_app_qrcode_refresh_action(lv_obj_t * cont, lv_event_t e)
+{
+ if(LV_EVENT_CLICKED != e)
+ {
+ return;
+ }
+
+ mmi_app_qrcode_get_flag_set(0);
+ mmi_protocol_fzd_action_get_app_qrcode();
+
+ lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_APP_QRCODE);
+ if(NULL != activity_obj)
+ {
+ #ifdef __MMI_APP_QRCODE_MENU_SUPPORT__
+ app_qrcode_prepare_destory(activity_obj);
+ #endif
+ #ifdef __MMI_APP_QRCODE_AND_DEVICE_QRCODE_IN_ONE_SUPPORT__
+ mmi_app_and_device_qrcode_prepare_destory(activity_obj);
+ #endif
+ lv_obj_del(activity_obj);
+ }
+}
+#endif
+
+
#ifdef __MMI_APP_QRCODE_MENU_SUPPORT__
static void app_qrcode_prepare_destory(lv_obj_t * activity_obj)
{
lv_obj_set_click(content, false);
lv_obj_align(content, NULL, LV_ALIGN_CENTER, 0, 0);
+#ifdef __MMI_APP_QRCODE_FROM_SERVER_SUPPORT__
+ if(true == mmi_app_qrcode_refresh_prompt())
+ {
+ lv_obj_set_click(content, true);
+ lv_obj_set_event_cb(content, mmi_app_qrcode_refresh_action);
+
+ lv_obj_t * label = lv_label_create(content, NULL);
+ lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font26);
+ lv_label_set_text_id(label, WATCH_TEXT_ID_APP_QRCODE_REFRESH);
+ lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
+ lv_obj_align(label, NULL, LV_ALIGN_CENTER, 0, -10);
+ }
+ else
+ {
+ // img
+ lv_obj_t * img = lv_img_create(content, NULL);
+ lv_img_set_src(img, mmi_app_qrcode_file_get());
+ #ifdef USE_LV_WATCH_UI_CIRCLE
+ #ifdef USE_LV_WATCH_UI_240_240
+ lv_img_set_zoom(img, LV_IMG_ZOOM_NONE * 3 / 4);
+ #else
+
+ #endif
+ #endif
+ lv_obj_align(img, NULL, LV_ALIGN_CENTER, 0, -10);
+ lv_obj_set_click(img, false);
+
+ //
+ lv_obj_t * label = lv_label_create(content, NULL);
+ lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20);
+ lv_label_set_text_id(label, WATCH_TEXT_ID_APP_DOWNLOAD_PROMPT);
+ lv_obj_align(label, img, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
+ lv_obj_set_click(label, false);
+ }
+#else
// img
lv_obj_t * img = lv_img_create(content, NULL);
lv_img_set_src(img, ICON_APP_QRCODE);
lv_label_set_text_id(label, WATCH_TEXT_ID_APP_DOWNLOAD_PROMPT);
lv_obj_align(label, img, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
lv_obj_set_click(label, false);
+#endif
return obj;
}
#endif
+#ifdef __MMI_APP_QRCODE_AND_DEVICE_QRCODE_IN_ONE_SUPPORT__
+static void mmi_app_and_device_qrcode_prepare_destory(lv_obj_t * activity_obj)
+{
+ lv_watch_png_cache_all_free();
+}
+
+lv_obj_t * mmi_app_and_device_qrcode_create(lv_obj_t * activity_obj)
+{
+ if(activity_obj == NULL)
+ {
+ lv_watch_activity_ext_t activity_ext;
+ memset(&activity_ext, 0, sizeof(lv_watch_activity_ext_t));
+ activity_ext.actId = ACT_ID_APP_QRCODE;
+ activity_ext.create = mmi_app_and_device_qrcode_create;
+ activity_ext.prepare_destory = mmi_app_and_device_qrcode_prepare_destory;
+ activity_obj = lv_watch_creat_activity_obj(&activity_ext);
+ LV_ASSERT_MEM(activity_obj);
+ if(activity_obj == NULL)
+ return NULL;
+ }
+
+ lv_obj_t * obj = lv_watch_obj_create(activity_obj);
+ LV_ASSERT_MEM(obj);
+ if(obj == NULL)
+ return NULL;
+
+ lv_watch_obj_set_anim_mode(obj, LV_WATCH_ANIM_HOR_RIGHT_HIDE);
+
+#ifdef __MMI_APP_QRCODE_FROM_SERVER_SUPPORT__
+
+ lv_obj_t * content = lv_cont_create(obj, NULL);
+ lv_cont_set_fit(content, LV_FIT_NONE);
+ lv_obj_set_size(content, LV_HOR_RES, LV_HOR_RES); // lv_obj_set_size(content, QRCODE_BG_WIDTH, QRCODE_BG_WIDTH);
+ //lv_obj_add_style(content, LV_OBJ_PART_MAIN, &lv_watch_image);
+ //lv_obj_set_style_local_bg_color(content, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE);
+ lv_obj_set_style_local_bg_color(content, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+ lv_cont_set_layout(content, LV_LAYOUT_OFF);
+ lv_obj_set_click(content, false);
+ lv_obj_align(content, obj, LV_ALIGN_CENTER, 0, 0);
+
+ if(true == mmi_app_qrcode_refresh_prompt())
+ {
+ lv_obj_set_click(content, true);
+ lv_obj_set_event_cb(content, mmi_app_qrcode_refresh_action);
+
+ lv_obj_t * label = lv_label_create(content, NULL);
+ #ifdef USE_LV_WATCH_UI_466_466
+ lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font40);
+ #else
+ lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font26);
+ #endif
+ lv_label_set_text_id(label, WATCH_TEXT_ID_APP_QRCODE_REFRESH);
+ lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
+ lv_obj_align(label, NULL, LV_ALIGN_CENTER, 0, -10);
+ }
+ else
+ {
+ // img w=205, h=205
+ lv_obj_t * img = lv_img_create(content, NULL);
+ lv_img_set_src(img, mmi_app_qrcode_file_get());
+ #ifdef USE_LV_WATCH_UI_CIRCLE
+ #ifdef USE_LV_WATCH_UI_466_466
+ lv_img_set_zoom(img, LV_IMG_ZOOM_NONE * 4 / 3);
+ lv_obj_align(img, NULL, LV_ALIGN_CENTER, 0, -30);
+ #elif defined(USE_LV_WATCH_UI_240_240)
+ lv_img_set_zoom(img, LV_IMG_ZOOM_NONE * 3 / 4);
+ lv_obj_align(img, NULL, LV_ALIGN_CENTER, 0, -15);
+ #else
+ lv_img_set_zoom(img, LV_IMG_ZOOM_NONE * 3 / 4);
+ lv_obj_align(img, NULL, LV_ALIGN_CENTER, 0, -10);
+ #endif
+ #else
+ #ifdef USE_LV_WATCH_UI_240_280
+ lv_obj_align(img, NULL, LV_ALIGN_CENTER, 0, -15);
+ #else
+ lv_obj_align(img, NULL, LV_ALIGN_CENTER, 0, -10);
+ #endif
+ #endif
+ lv_obj_set_click(img, false);
+
+ printf("[@CHENG_DEBUG][%s][%d]: w=%d,h=%d\n", __FUNCTION__, __LINE__, lv_obj_get_width(img), lv_obj_get_height(img));
+ }
+
+ lv_obj_t * label_imei = lv_label_create(content, NULL);
+
+ char imei[16] = {0};
+ app_adp_get_imei_req(imei);
+
+ lv_label_set_text(label_imei, imei);
+ lv_obj_set_click(label_imei, false);
+#if USE_LV_WATCH_UI_CIRCLE
+ #ifdef USE_LV_WATCH_UI_466_466
+ lv_obj_add_style(label_imei, LV_OBJ_PART_MAIN, &lv_watch_font40);
+ lv_obj_align(label_imei, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -70);
+ #elif defined(USE_LV_WATCH_UI_240_240)
+ lv_obj_add_style(label_imei, LV_OBJ_PART_MAIN, &lv_watch_font20);
+ lv_obj_align(label_imei, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -33);
+ #else
+ lv_obj_add_style(label_imei, LV_OBJ_PART_MAIN, &lv_watch_font20);
+ lv_obj_align(label_imei, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -10);
+ #endif
+#else
+ #ifdef USE_LV_WATCH_UI_240_280
+ lv_obj_add_style(label_imei, LV_OBJ_PART_MAIN, &lv_watch_font26);
+ lv_obj_align(label_imei, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0);
+ #else
+ lv_obj_add_style(label_imei, LV_OBJ_PART_MAIN, &lv_watch_font26);
+ lv_obj_align(label_imei, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0);
+ #endif
+#endif
+
+#else
+
+ lv_obj_t * content = lv_cont_create(obj, NULL);
+ lv_cont_set_fit(content, LV_FIT_NONE);
+ lv_obj_set_size(content, QRCODE_BG_WIDTH, QRCODE_BG_WIDTH);
+ //lv_obj_add_style(content, LV_OBJ_PART_MAIN, &lv_watch_image);
+ lv_obj_set_style_local_bg_color(content, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE);
+ lv_cont_set_layout(content, LV_LAYOUT_OFF);
+ lv_obj_set_click(content, false);
+ lv_obj_align(content, obj, LV_ALIGN_CENTER, 0, -20);
+
+ char imei[16] = {0};
+ app_adp_get_imei_req(imei);
+
+ char str_qrcode[256] = {0};
+ sprintf(str_qrcode, "%s%s", MMI_QRCODE_CONTENT_PREFIX, imei);
+
+ lv_obj_t * qrcode = qrcode_gen(content, str_qrcode, 0, 0, QRCODE_WIDTH);
+ lv_obj_align(qrcode, content, LV_ALIGN_CENTER, 0, 0);
+
+
+ lv_obj_t * label = lv_label_create(obj, NULL);
+#if USE_LV_WATCH_UI_CIRCLE
+#ifdef USE_LV_WATCH_UI_466_466
+ lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font36);
+#else
+ lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20);
+#endif
+#else
+ lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26);
+#endif
+ lv_label_set_text(label, imei);
+ lv_obj_set_click(label, false);
+ lv_obj_align(label, content, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
+
+#endif
+
+ return obj;
+}
+
+void mmi_app_and_device_qrcode_create_event_cb(lv_obj_t * btn, lv_event_t event)
+{
+ if(LV_EVENT_CLICKED != event)
+ return;
+
+ lv_watch_png_cache_all_free();
+ lv_obj_t * obj = mmi_app_and_device_qrcode_create(NULL);
+ LV_ASSERT_MEM(obj);
+}
+#endif
+
+
#endif /*USE_LV_WATCH_QRCODE*/