diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/MenuQR.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/MenuQR.c index 1514b1983..279755a2d 100644 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/MenuQR.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/MenuQR.c @@ -552,8 +552,8 @@ void show_Network_Selection_page(lv_obj_t* obj, lv_obj_t* menu_obj) plabel = lv_label_create(obj, NULL); lv_label_set_long_mode(plabel, LV_LABEL_LONG_BREAK); // lv_label_set_align(plabel, LV_LABEL_ALIGN_CENTER); - lv_label_set_text(plabel, ""); - lv_obj_set_pos(plabel, 32, 55); + //lv_label_set_text(plabel, "Searching..."); + lv_obj_set_pos(plabel, 32, 60); lv_obj_set_width(plabel, 256); lv_obj_add_style(plabel, 0, &gMatrixStylebtn); diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/UIFlowMenuCommonItemEventCallback.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/UIFlowMenuCommonItemEventCallback.c index 4da122afa..15d2ce3c1 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/UIFlowMenuCommonItemEventCallback.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/UIFlowMenuCommonItemEventCallback.c @@ -961,9 +961,11 @@ static void UIFlowMenuCommonItem_Key(lv_obj_t* obj, uint32_t key) printf("[UIFlowMenuCommonItem_Key]key: %d\n",key); + switch(key) { case LV_USER_KEY_UP: + case LV_USER_KEY_DOWN: { printf("[UIFlowMenuCommonItem_Key]error input\n",key); @@ -971,18 +973,21 @@ static void UIFlowMenuCommonItem_Key(lv_obj_t* obj, uint32_t key) case LV_USER_KEY_NEXT: { + printf("[UIFlowMenuCommonItem_Key]>>>DOWN\n"); LV_MenuItem_OnNext(obj); break; } case LV_USER_KEY_PREV: { + printf("[UIFlowMenuCommonItem_Key]>>>UP\n"); LV_MenuItem_OnPrev(obj); break; } case LV_KEY_LEFT: { + printf("[UIFlowMenuCommonItem_Key]>>>LEFT\n"); load_info_from_sf(); LV_MenuItem_OnUp(obj); break; @@ -990,6 +995,7 @@ static void UIFlowMenuCommonItem_Key(lv_obj_t* obj, uint32_t key) case LV_KEY_RIGHT: { + printf("[UIFlowMenuCommonItem_Key]>>>RIGHT\n"); load_info_from_sf(); LV_MenuItem_OnDown(obj); break; diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonOption/UIFlowMenuCommonOptionEventCallback.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonOption/UIFlowMenuCommonOptionEventCallback.c index 1e8f7b74f..aba6e9f62 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonOption/UIFlowMenuCommonOptionEventCallback.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonOption/UIFlowMenuCommonOptionEventCallback.c @@ -360,14 +360,14 @@ static void LV_MenuCommonOption_UpdateContent(TM_MENU *pMenu) printf("\033[33m[LV_MenuCommonOption_UpdateContent] 3 \033[0m\n"); lv_plugin_menu_set_item_string_id(menu_option, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, pOption->TextId); - printf("[*x]s_SelOption: %d", s_SelOption); + printf("s_SelOption: %d", s_SelOption); //first init page add select icon if (s_SelOption == 100 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption) { s_SelOption = i + (Selindex * OPTION_PAGE_NUM); if (i == 1) { - printf("[*x]first init and is on\n"); + printf("first init and is on\n"); itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT2;//black > √ } else{ @@ -377,7 +377,7 @@ static void LV_MenuCommonOption_UpdateContent(TM_MENU *pMenu) } else if(s_SelOption == 100 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] != SelOption && i == 1){ - printf("[*x]first init and is off\n"); + printf("first init and is off\n"); switch (pItem->ItemId) { case IDM_DELAY:{} case IDM_OPERATING_TIME:{} @@ -400,31 +400,33 @@ static void LV_MenuCommonOption_UpdateContent(TM_MENU *pMenu) } else if (i == 1 && s_SelOption < 100) { - printf("[*x][LV_MenuCommonOption_UpdateContent] add > icon\n"); + //printf("[LV_MenuCommonOption_UpdateContent] add > icon\n"); switch (pItem->ItemId) { + case IDM_DELAY:{} case IDM_OPERATING_TIME:{} case IDM_DATE_AND_TIME:{} + case IDM_MAX_NUM_DAY:{} case IDM_PASSWORD:{} case IDM_CAMERA_NAME: { if (s_SelOption == 0 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption){ - printf("[*x][LV_MenuCommonOption_UpdateContent] add black > \n"); + printf("[LV_MenuCommonOption_UpdateContent] add black > \n"); itemIconId = LV_PLUGIN_IMG_ID_SF_NEXT2;//black > lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 288, 0); } else if (s_SelOption == 0 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] != SelOption){ - printf("[*x][LV_MenuCommonOption_UpdateContent] add white > \n"); + printf("[LV_MenuCommonOption_UpdateContent] add white > \n"); itemIconId = LV_PLUGIN_IMG_ID_SF_NEXT1;//white > lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 288, 0); } else if (s_SelOption == 1 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption){ - printf("[*x][LV_MenuCommonOption_UpdateContent] add black √ > \n"); + printf("[LV_MenuCommonOption_UpdateContent] add black √ > \n"); itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT2;//*black > √ lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 262, 0); } else{ - printf("[*x][LV_MenuCommonOption_UpdateContent] add white √ > \n"); + printf("[LV_MenuCommonOption_UpdateContent] add white √ > \n"); itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT1;//*white > √ lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 262, 0); } @@ -433,7 +435,7 @@ static void LV_MenuCommonOption_UpdateContent(TM_MENU *pMenu) } default: { - printf("[*x][LV_MenuCommonOption_UpdateContent] add √ \n"); + printf("[LV_MenuCommonOption_UpdateContent] add √ \n"); itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED;//√ lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 272, 0); if (s_SelOption == 1) @@ -450,7 +452,6 @@ static void LV_MenuCommonOption_UpdateContent(TM_MENU *pMenu) lv_plugin_menu_set_item_hidden(menu_option, i, false); if (enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption){ - printf("[*x]select item\n"); lv_plugin_menu_select_item(menu_option, i); } @@ -578,6 +579,7 @@ static void LV_MenuOption_OnNext(lv_obj_t* obj) // DBG_DUMP("%s SelItem=%d\r\n", __func__,pPage->SelItem); // DBG_DUMP("%s Count=%d\r\n", __func__,pItem->Count); // DBG_DUMP("%s SelOption=%d\r\n", __func__,SelOption); + SelOption++; if (SelOption >= pItem->Count){ // Close current UI Window now @@ -605,6 +607,7 @@ static void LV_MenuOption_OnPrev(lv_obj_t* obj) pPage = &pMenu->pPages[pMenu->SelPage]; pItem = &pPage->pItems[pPage->SelItem]; SelOption = SysGetFlag(pItem->SysFlag); + if (SelOption == 0) { // Close current UI Window now //SysSetFlag(pItem->SysFlag, PrevOption); @@ -1017,8 +1020,42 @@ static void CommondOptionKeyCallback(lv_obj_t* obj, uint32_t* key) pPage = &pMenu->pPages[pMenu->SelPage]; pItem = &pPage->pItems[pPage->SelItem]; UINT16 itemID = pItem->ItemId; - printf("\033[33m[UIFlowMenuCommonOptionEventCallback]LV_USER_EVENT_KEY_RELEASE key:%d\033[0m\n", *key); + printf("\033[33m[CommondOptionKeyCallback]LV_USER_EVENT_KEY_RELEASE key:%d\033[0m\n", *key); /* handle key event */ + switch(*key) + { + case LV_USER_KEY_NEXT: + case LV_USER_KEY_DOWN: + { + printf("[CommondOptionKeyCallback]>>>DOWN\n"); + break; + } + + case LV_USER_KEY_PREV: + case LV_USER_KEY_UP: + { + printf("[CommondOptionKeyCallback]>>>UP\n"); + break; + } + + case LV_KEY_LEFT: + { + printf("[CommondOptionKeyCallback]>>>LEFT\n"); + break; + } + + case LV_KEY_RIGHT: + { + printf("[CommondOptionKeyCallback]>>>RIGHT\n"); + break; + } + case LV_KEY_ENTER: + { + printf("[CommondOptionKeyCallback]>>>ENTER\n"); + break; + } + } + switch(itemID) { case IDM_NETWORK_SELECTION: diff --git a/code/application/source/cardv/SrcCode/UIWnd/s530-ntk/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/MenuQR.c b/code/application/source/cardv/SrcCode/UIWnd/s530-ntk/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/MenuQR.c new file mode 100644 index 000000000..279755a2d --- /dev/null +++ b/code/application/source/cardv/SrcCode/UIWnd/s530-ntk/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/MenuQR.c @@ -0,0 +1,1363 @@ +// #include "MenuQR.h" +#include +#include "PrjInc.h" +#include "UIWnd/UIFlow.h" +#include "UIFlowLVGL/UIFlowLVGL.h" +#include "lvgl/src/lv_lib_qrcode/lv_qrcode.h" +#include "sf_param_struct.h" +#include "sf_message_queue.h" +#include "sf_fileMng.h" +#include "sf_common.h" +#include +#include +#include "sf_commu_mcu_reg.h" +TMDEF_BEGIN_OPTIONS(NETWORK_SELECTION) +TMDEF_OPTION_TEXT_S(NETWORK_SELECTION_1, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(NETWORK_SELECTION_2, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(NETWORK_SELECTION_3, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(NETWORK_SELECTION_4, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(NETWORK_SELECTION_5, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(NETWORK_SELECTION_6, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(NETWORK_SELECTION_7, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(NETWORK_SELECTION_8, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(NETWORK_SELECTION_9, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(NETWORK_SELECTION_10, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(NETWORK_SELECTION_11, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(NETWORK_SELECTION_12, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(NETWORK_SELECTION_13, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(NETWORK_SELECTION_14, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(NETWORK_SELECTION_15, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(NETWORK_SELECTION_16, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(NETWORK_SELECTION_17, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(NETWORK_SELECTION_18, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(NETWORK_SELECTION_19, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(NETWORK_SELECTION_20, TM_OPTION_ENABLE) +TMDEF_END_OPTIONS() +TMDEF_BEGIN_OPTIONS(QR_PICTURE) +TMDEF_OPTION_TEXT_S(END, TM_OPTION_ENABLE) +TMDEF_END_OPTIONS() +TMDEF_BEGIN_OPTIONS(PASSWORD) +TMDEF_OPTION_TEXT_S(PASSWORD_OFF, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(PASSWORD_ON, TM_OPTION_ENABLE) +TMDEF_END_OPTIONS() +TMDEF_BEGIN_OPTIONS(CAMERA_INFO) +TMDEF_OPTION_TEXT_S(END, TM_OPTION_ENABLE) +TMDEF_END_OPTIONS() +TMDEF_BEGIN_OPTIONS(CAMERA_NAME) +TMDEF_OPTION_TEXT_S(CAMERA_NAME_OFF, TM_OPTION_ENABLE) +TMDEF_OPTION_TEXT_S(CAMERA_NAME_ON, TM_OPTION_ENABLE) +TMDEF_END_OPTIONS() + +TMDEF_BEGIN_ITEMS(QR) +TMDEF_ITEM_TEXTID(NETWORK_SELECTION) +TMDEF_ITEM_TEXTID(QR_PICTURE) +TMDEF_ITEM_TEXTID(PASSWORD) +TMDEF_ITEM_TEXTID(CAMERA_INFO) +TMDEF_ITEM_TEXTID(CAMERA_NAME) +TMDEF_END_ITEMS() + +// -------------------------------------------------------------------------- +// PAGES +// -------------------------------------------------------------------------- +// QR Menu Pages +TMDEF_BEGIN_PAGES(QR) +TMDEF_PAGE_TEXT_ICON(QR) +TMDEF_PAGE_TEXT_ICON(QR) +TMDEF_PAGE_TEXT_ICON(QR) +TMDEF_PAGE_TEXT_ICON(QR) +TMDEF_END_PAGES() +TMDEF_EMNU(gQrMenu, QR, Qr_MenuCallback) + +// -------------------------------------------------------------------------- +// Menu Callback +// -------------------------------------------------------------------------- +int Qr_MenuCallback(UINT32 uiMessage, UINT32 uiParam) +{ + UINT16 uwItemId; + UINT16 uwOption; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + if (uiMessage == TMM_CONFIRM_OPTION) + { + uwItemId = LO_WORD(uiParam); + uwOption = HI_WORD(uiParam); + printf("[%s] uwOption:%d uwItemId:%d\n", __FUNCTION__, uwOption, uwItemId); + switch (uwItemId) + { + case IDM_NETWORK_SELECTION: + { + break; + } + case IDM_QR_PICTURE: + { + break; + } + case IDM_PASSWORD: + { + if(puiPara->PwdSwitch != uwOption) + { + puiPara->PwdSwitch = uwOption; + memset(puiPara->PwdStr, '0' ,sizeof(puiPara->PwdStr)); + } + printf("password switch %d\n", puiPara->PwdSwitch); + break; + } + case IDM_CAMERA_NAME: + { + SF_CAMID_E tmpSelected = (uwOption == 0) ? SF_CAMID_OFF : SF_CAMID_ON; + if(tmpSelected != puiPara->CamNameSwitch) + { + puiPara->CamNameSwitch = tmpSelected; + memset(puiPara ->CamNameStr,'\0', sizeof(puiPara ->CamNameStr)); + sprintf(puiPara ->CamNameStr, "%s", "REVE"); + } + break; + } + default: + { + + break; + } + } + } + return TMF_PROCESSED; +} + +// -------------------------------------------------------------------------- +// Common Function +// -------------------------------------------------------------------------- +static lv_style_t gMatrixStylebg; +static lv_style_t gMatrixStylebtn; +static lv_style_t gStyleLabel0; +static void init_Matrix_style(void) +{ + static int isinitialized = 0; + if(isinitialized) + return; + + lv_color_t color = {0}; + lv_style_init(&gMatrixStylebg); + lv_style_set_pad_top(&gMatrixStylebg,LV_STATE_DEFAULT,0); + lv_style_set_pad_bottom(&gMatrixStylebg,LV_STATE_DEFAULT,0); + lv_style_set_pad_left(&gMatrixStylebg,LV_STATE_DEFAULT,0); + lv_style_set_pad_right(&gMatrixStylebg,LV_STATE_DEFAULT,0); + lv_style_set_pad_inner(&gMatrixStylebg,LV_STATE_DEFAULT,0); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gMatrixStylebg, LV_STATE_DEFAULT, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gMatrixStylebg, LV_STATE_DEFAULT, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gMatrixStylebg, LV_STATE_DEFAULT, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gMatrixStylebg, LV_STATE_CHECKED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gMatrixStylebg, LV_STATE_CHECKED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gMatrixStylebg, LV_STATE_CHECKED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gMatrixStylebg, LV_STATE_FOCUSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gMatrixStylebg, LV_STATE_FOCUSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gMatrixStylebg, LV_STATE_FOCUSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gMatrixStylebg, LV_STATE_EDITED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gMatrixStylebg, LV_STATE_EDITED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gMatrixStylebg, LV_STATE_EDITED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gMatrixStylebg, LV_STATE_HOVERED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gMatrixStylebg, LV_STATE_HOVERED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gMatrixStylebg, LV_STATE_HOVERED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gMatrixStylebg, LV_STATE_PRESSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gMatrixStylebg, LV_STATE_PRESSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gMatrixStylebg, LV_STATE_PRESSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gMatrixStylebg, LV_STATE_DISABLED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gMatrixStylebg, LV_STATE_DISABLED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gMatrixStylebg, LV_STATE_DISABLED, color); + + lv_style_init(&gMatrixStylebtn); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gMatrixStylebtn, LV_STATE_DEFAULT, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gMatrixStylebtn, LV_STATE_DEFAULT, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gMatrixStylebtn, LV_STATE_DEFAULT, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_outline_color(&gMatrixStylebtn, LV_STATE_DEFAULT, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_shadow_color(&gMatrixStylebtn, LV_STATE_DEFAULT, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_pattern_recolor(&gMatrixStylebtn, LV_STATE_DEFAULT, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_value_color(&gMatrixStylebtn, LV_STATE_DEFAULT, color); + lv_style_set_value_font(&gMatrixStylebtn,LV_STATE_DEFAULT,&sf_ui_text_bold_20_1bpp); + STYLE_COLOR_PROP(0x02, 0x00, 0x00, 0x00) ; lv_style_set_text_color(&gMatrixStylebtn, LV_STATE_DEFAULT, color); + lv_style_set_text_font(&gMatrixStylebtn,LV_STATE_DEFAULT,&sf_ui_text_bold_20_1bpp); + lv_style_set_text_font(&gMatrixStylebtn,LV_STATE_FOCUSED,&sf_ui_text_bold_20_1bpp); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_color(&gMatrixStylebtn, LV_STATE_DEFAULT, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_bg_color(&gMatrixStylebtn, LV_STATE_DEFAULT, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gMatrixStylebtn, LV_STATE_CHECKED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gMatrixStylebtn, LV_STATE_CHECKED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gMatrixStylebtn, LV_STATE_CHECKED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_outline_color(&gMatrixStylebtn, LV_STATE_CHECKED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_shadow_color(&gMatrixStylebtn, LV_STATE_CHECKED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_pattern_recolor(&gMatrixStylebtn, LV_STATE_CHECKED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_value_color(&gMatrixStylebtn, LV_STATE_CHECKED, color); + STYLE_COLOR_PROP(0x02, 0x00, 0x00, 0x00) ; lv_style_set_text_color(&gMatrixStylebtn, LV_STATE_CHECKED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_color(&gMatrixStylebtn, LV_STATE_CHECKED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_bg_color(&gMatrixStylebtn, LV_STATE_CHECKED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gMatrixStylebtn, LV_STATE_FOCUSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gMatrixStylebtn, LV_STATE_FOCUSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gMatrixStylebtn, LV_STATE_FOCUSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_outline_color(&gMatrixStylebtn, LV_STATE_FOCUSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_shadow_color(&gMatrixStylebtn, LV_STATE_FOCUSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_pattern_recolor(&gMatrixStylebtn, LV_STATE_FOCUSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_value_color(&gMatrixStylebtn, LV_STATE_FOCUSED, color); + STYLE_COLOR_PROP(0x22, 0x00, 0x00, 0x00) ; lv_style_set_text_color(&gMatrixStylebtn, LV_STATE_FOCUSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_color(&gMatrixStylebtn, LV_STATE_FOCUSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_bg_color(&gMatrixStylebtn, LV_STATE_FOCUSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gMatrixStylebtn, LV_STATE_EDITED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gMatrixStylebtn, LV_STATE_EDITED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gMatrixStylebtn, LV_STATE_EDITED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_outline_color(&gMatrixStylebtn, LV_STATE_EDITED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_shadow_color(&gMatrixStylebtn, LV_STATE_EDITED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_pattern_recolor(&gMatrixStylebtn, LV_STATE_EDITED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_value_color(&gMatrixStylebtn, LV_STATE_EDITED, color); + STYLE_COLOR_PROP(0x02, 0x00, 0x00, 0x00) ; lv_style_set_text_color(&gMatrixStylebtn, LV_STATE_EDITED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_color(&gMatrixStylebtn, LV_STATE_EDITED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_bg_color(&gMatrixStylebtn, LV_STATE_EDITED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gMatrixStylebtn, LV_STATE_HOVERED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gMatrixStylebtn, LV_STATE_HOVERED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gMatrixStylebtn, LV_STATE_HOVERED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_outline_color(&gMatrixStylebtn, LV_STATE_HOVERED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_shadow_color(&gMatrixStylebtn, LV_STATE_HOVERED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_pattern_recolor(&gMatrixStylebtn, LV_STATE_HOVERED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_value_color(&gMatrixStylebtn, LV_STATE_HOVERED, color); + STYLE_COLOR_PROP(0x02, 0x00, 0x00, 0x00) ; lv_style_set_text_color(&gMatrixStylebtn, LV_STATE_HOVERED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_color(&gMatrixStylebtn, LV_STATE_HOVERED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_bg_color(&gMatrixStylebtn, LV_STATE_HOVERED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gMatrixStylebtn, LV_STATE_PRESSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gMatrixStylebtn, LV_STATE_PRESSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gMatrixStylebtn, LV_STATE_PRESSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_outline_color(&gMatrixStylebtn, LV_STATE_PRESSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_shadow_color(&gMatrixStylebtn, LV_STATE_PRESSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_pattern_recolor(&gMatrixStylebtn, LV_STATE_PRESSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_value_color(&gMatrixStylebtn, LV_STATE_PRESSED, color); + STYLE_COLOR_PROP(0x02, 0x00, 0x00, 0x00) ; lv_style_set_text_color(&gMatrixStylebtn, LV_STATE_PRESSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_color(&gMatrixStylebtn, LV_STATE_PRESSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_bg_color(&gMatrixStylebtn, LV_STATE_PRESSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gMatrixStylebtn, LV_STATE_DISABLED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gMatrixStylebtn, LV_STATE_DISABLED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gMatrixStylebtn, LV_STATE_DISABLED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_outline_color(&gMatrixStylebtn, LV_STATE_DISABLED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_shadow_color(&gMatrixStylebtn, LV_STATE_DISABLED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_pattern_recolor(&gMatrixStylebtn, LV_STATE_DISABLED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_value_color(&gMatrixStylebtn, LV_STATE_DISABLED, color); + STYLE_COLOR_PROP(0x02, 0x00, 0x00, 0x00) ; lv_style_set_text_color(&gMatrixStylebtn, LV_STATE_DISABLED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_color(&gMatrixStylebtn, LV_STATE_DISABLED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_bg_color(&gMatrixStylebtn, LV_STATE_DISABLED, color); + + + lv_style_init(&gStyleLabel0); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gStyleLabel0, LV_STATE_DEFAULT, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gStyleLabel0, LV_STATE_DEFAULT, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gStyleLabel0, LV_STATE_DEFAULT, color); + STYLE_COLOR_PROP(0x02, 0x00, 0x00, 0x00) ; lv_style_set_text_color(&gStyleLabel0, LV_STATE_DEFAULT, color); + lv_style_set_text_font(&gStyleLabel0,LV_STATE_DEFAULT,&sf_ui_text_medium_18_1bpp); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_color(&gStyleLabel0, LV_STATE_DEFAULT, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_bg_color(&gStyleLabel0, LV_STATE_DEFAULT, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gStyleLabel0, LV_STATE_CHECKED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gStyleLabel0, LV_STATE_CHECKED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gStyleLabel0, LV_STATE_CHECKED, color); + STYLE_COLOR_PROP(0x02, 0x00, 0x00, 0x00) ; lv_style_set_text_color(&gStyleLabel0, LV_STATE_CHECKED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_color(&gStyleLabel0, LV_STATE_CHECKED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_bg_color(&gStyleLabel0, LV_STATE_CHECKED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gStyleLabel0, LV_STATE_FOCUSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gStyleLabel0, LV_STATE_FOCUSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gStyleLabel0, LV_STATE_FOCUSED, color); + STYLE_COLOR_PROP(0x02, 0x00, 0x00, 0x00) ; lv_style_set_text_color(&gStyleLabel0, LV_STATE_FOCUSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_color(&gStyleLabel0, LV_STATE_FOCUSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_bg_color(&gStyleLabel0, LV_STATE_FOCUSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gStyleLabel0, LV_STATE_EDITED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gStyleLabel0, LV_STATE_EDITED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gStyleLabel0, LV_STATE_EDITED, color); + STYLE_COLOR_PROP(0x02, 0x00, 0x00, 0x00) ; lv_style_set_text_color(&gStyleLabel0, LV_STATE_EDITED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_color(&gStyleLabel0, LV_STATE_EDITED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_bg_color(&gStyleLabel0, LV_STATE_EDITED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gStyleLabel0, LV_STATE_HOVERED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gStyleLabel0, LV_STATE_HOVERED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gStyleLabel0, LV_STATE_HOVERED, color); + STYLE_COLOR_PROP(0x02, 0x00, 0x00, 0x00) ; lv_style_set_text_color(&gStyleLabel0, LV_STATE_HOVERED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_color(&gStyleLabel0, LV_STATE_HOVERED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_bg_color(&gStyleLabel0, LV_STATE_HOVERED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gStyleLabel0, LV_STATE_PRESSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gStyleLabel0, LV_STATE_PRESSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gStyleLabel0, LV_STATE_PRESSED, color); + STYLE_COLOR_PROP(0x02, 0x00, 0x00, 0x00) ; lv_style_set_text_color(&gStyleLabel0, LV_STATE_PRESSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_color(&gStyleLabel0, LV_STATE_PRESSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_bg_color(&gStyleLabel0, LV_STATE_PRESSED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_color(&gStyleLabel0, LV_STATE_DISABLED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_bg_grad_color(&gStyleLabel0, LV_STATE_DISABLED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&gStyleLabel0, LV_STATE_DISABLED, color); + STYLE_COLOR_PROP(0x02, 0x00, 0x00, 0x00) ; lv_style_set_text_color(&gStyleLabel0, LV_STATE_DISABLED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_color(&gStyleLabel0, LV_STATE_DISABLED, color); + STYLE_COLOR_PROP(0x23, 0x00, 0x00, 0x00) ; lv_style_set_text_sel_bg_color(&gStyleLabel0, LV_STATE_DISABLED, color); + + isinitialized = 1; +} +// printf("[%s]%d\n",__FUNCTION__,__LINE__); + +// -------------------------------------------------------------------------- +// Network Selection +// -------------------------------------------------------------------------- +#define NETMSGPATH "/tmp/wifiData.txt" +#define OPERATOR_INFO_SIZE 18 +#define PROFILE_INFO_SIZE 17 +#define PROFILE_NAME_SIZE 16 +#define PROFILE_MAX 20 +#define ITEMS_PER_PAGE 5 +#define TOTAL_PAGES 4 +static lv_task_t* network_scan_task = NULL; +static lv_task_t* network_select_task = NULL; +static lv_obj_t* pMenu = NULL; +static lv_obj_t *plabel = NULL; +static int ProfileTotal = 0; +static int ProfileSelected = 0; +static int ProfileFocused = 0; +static unsigned char ProfileNameList[PROFILE_MAX][PROFILE_NAME_SIZE] = {0}; + +static int Countdown = 0; + +static void update_Network_Selection_msg(lv_obj_t* obj) +{ + if(pMenu == NULL || plabel == NULL) + { + printf("[error]Network Selection abnormal operation\n"); + return; + } + + if(ProfileFocused > PROFILE_MAX) + { + printf("[error]ProfileFocused exceed the limit\n"); + ProfileFocused = 0; + } + + int selectedPage = ProfileFocused / ITEMS_PER_PAGE; + int ishidden = 0; + + for(int i = 0; i < ITEMS_PER_PAGE; i++) + { + // printf("i:%d data:%d\n", i, (IDS_NETWORK_SELECTION_1 + (ITEMS_PER_PAGE * selectedPage) + i)); + lv_plugin_menu_set_item_string_id(pMenu, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, + (IDS_NETWORK_SELECTION_1 + (ITEMS_PER_PAGE * selectedPage) + i)); + lv_plugin_menu_set_item_img_id(pMenu, i, LV_PLUGIN_MENU_ITEM_STATE_DISABLED, LV_PLUGIN_IMG_ID_ICON_OK); + + ishidden = true; + if((ITEMS_PER_PAGE * selectedPage) + i < ProfileTotal) + { + lv_plugin_menu_set_item_hidden(pMenu, i, false);//整项 + if((ITEMS_PER_PAGE * selectedPage) + i == ProfileFocused) + { + lv_plugin_menu_select_item(pMenu, i);//白条 + } + if((ITEMS_PER_PAGE * selectedPage) + i == ProfileSelected) + { + ishidden = false; + } + } + else + { + lv_plugin_menu_set_item_hidden(pMenu, i, true);//整项 + } + + if(i==0){ + lv_obj_set_hidden(image_option1_scr_uiflowmenucommonoption, ishidden);//打钩 + }else if(i == 1){ + lv_obj_set_hidden(image_option2_scr_uiflowmenucommonoption, ishidden); + }else if(i == 2){ + lv_obj_set_hidden(image_option3_scr_uiflowmenucommonoption, ishidden); + }else if(i == 3){ + lv_obj_set_hidden(image_option4_scr_uiflowmenucommonoption, ishidden); + }else if(i == 4){ + lv_obj_set_hidden(image_option5_scr_uiflowmenucommonoption, ishidden); + } + } +} + +static void network_scan_task_end(void) +{ + if(network_scan_task) + { + lv_task_del(network_scan_task); + network_scan_task = NULL; + } +} + +static void network_scan_task_cb(lv_task_t* task) +{ + struct stat statBuf; + int fd = -1; + int BuffLen; + unsigned char Buff[1024] = { 0 }; + + lv_obj_t* obj = (lv_obj_t*)task->user_data; + + if(Countdown) + { + printf("[%s]Countdown:%d\n", __FUNCTION__, Countdown); + Countdown--; + if(Countdown <= 0) + { + network_scan_task_end(); + lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0)); + hidde_Network_Selection_page(); + return; + } + else + { + return; + } + } + + if(sf_cardv_4G_status_get() == SF_4G_SEARCHING) + { + printf("[%s]Searching...\n", __FUNCTION__); + lv_label_set_text(plabel, "\n\nSearching..."); + return; + } + + if (sf_cardv_get_usb_init() == 0) + { + lv_label_set_text(plabel, "\nSIM read failed, please restart the camera."); + Countdown = 3; + } + else if(sf_cardv_get_is_esim() == 0) + { + lv_label_set_text(plabel, "\nNetwork selection is only available with SIM cards that have multiple networks."); + Countdown = 3; + return; + } + else if(sf_cardv_get_sim_insert() == 0) + { + lv_label_set_text(plabel, "\n\nCheck SIM"); + Countdown = 3; + return; + } + else + { + if(!sf_file_IsExsit(NETMSGPATH)) + { + SF_MESSAGE_BUF_S stMessageBuf = {0}; + stMessageBuf.arg1 = SF_DEV_CMD_ESIM_OPERATION_SCAN; + stMessageBuf.arg2 = SF_CONTROL_TYPE_LOCAL; + stMessageBuf.arg3 = 1; + stMessageBuf.cmdId = CMD_DEV; + sf_com_message_send_to_app(&stMessageBuf); + } + + if(sf_file_IsExsit(NETMSGPATH)) + { + fd = open(NETMSGPATH, O_RDWR, 0777); + if(fd >= 0) + { + fstat(fd, &statBuf); + BuffLen = statBuf.st_size; + printf("fSize=%d\n", BuffLen); + read(fd, Buff, BuffLen); + close(fd); + remove(NETMSGPATH); + + for(int i = 0; i < BuffLen; i++) + { + printf("%x ", Buff[i]); + } + + if(Buff[5] == 0x3b/*WIFI_CONTROL_CAMERA_Network_Scan*/ && Buff[8] == 0x00/*CMD_SUCCESS*/) + { + int OperatorTotal = Buff[9]; + int ProfileOffset = 11 + OPERATOR_INFO_SIZE*OperatorTotal; + ProfileTotal = Buff[ProfileOffset]; + ProfileSelected = Buff[ProfileOffset + 1]; + ProfileFocused = ProfileSelected; + + printf("\nOperatorTotal:%d ProfileOffset:%d ProfileTotal:%d ProfileSelected:%d\n", OperatorTotal, ProfileOffset, ProfileTotal, ProfileSelected); + + for(int i = 0; i < ProfileTotal; i++) + { + printf("Profile %d ",Buff[ProfileOffset + 2 + (i * PROFILE_INFO_SIZE)]); + memcpy(ProfileNameList[i], Buff + (ProfileOffset + 3 + (i * PROFILE_INFO_SIZE)), PROFILE_NAME_SIZE); + printf("%s\n", ProfileNameList[i]); + } + + network_scan_task_end(); + lv_label_set_text(plabel, ""); + + lv_plugin_string_t* tmpPluginStr = NULL; + char* tmpstr = NULL; + for(int i = 0; i < ProfileTotal; i++) + { + tmpPluginStr = (lv_plugin_string_t*)lv_plugin_get_string(IDS_NETWORK_SELECTION_1 + i); + tmpstr = (char*)tmpPluginStr->ptr; + snprintf(tmpstr, PROFILE_NAME_SIZE, "%s", ProfileNameList[i]); + // printf("i:%d tmpstr:%s len:%d p:%p\n", i, tmpstr, tmpPluginStr->size, tmpstr); + } + + update_Network_Selection_msg(obj); + lv_obj_set_hidden(container_main_menu_scr_uiflowmenucommonoption, false); + } + return; + } + } + } +} + +static void network_select_task_end(void) +{ + if(network_select_task) + { + lv_task_del(network_select_task); + network_select_task = NULL; + } +} + +static void network_select_task_cb(lv_task_t* task) +{ + lv_obj_t* obj = (lv_obj_t*)task->user_data; + + if(Countdown) + { + printf("[%s]Countdown:%d\n", __FUNCTION__, Countdown); + Countdown--; + if(Countdown <= 0) + { + network_select_task_end(); + lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0)); + hidde_Network_Selection_page(); + return; + } + else + { + return; + } + } + + int resp = sf_cardv_get_operationSelectResp(); + printf("network_select_task_cb:%d\n",resp); + switch (resp) + { + case 0x00:/*CMD_SUCCESS*/ + lv_label_set_text(plabel, "\n\nCompleted"); + Countdown = 3; + break; + case 0x34:/*NETWORK_NOT_NEED_SET*/ + lv_label_set_text(plabel, "\n\nProfile is enabled"); + Countdown = 3; + break; + case 0xff: + break; + default: + lv_label_set_text(plabel, "\n\nCurrently network is busy, Please try it later"); + Countdown = 3; + break; + } +} + +void show_Network_Selection_page(lv_obj_t* obj, lv_obj_t* menu_obj) +{ + pMenu = menu_obj; + + init_Matrix_style(); + + plabel = lv_label_create(obj, NULL); + lv_label_set_long_mode(plabel, LV_LABEL_LONG_BREAK); + // lv_label_set_align(plabel, LV_LABEL_ALIGN_CENTER); + //lv_label_set_text(plabel, "Searching..."); + lv_obj_set_pos(plabel, 32, 60); + lv_obj_set_width(plabel, 256); + lv_obj_add_style(plabel, 0, &gMatrixStylebtn); + + if(network_scan_task == NULL){ + Countdown = 0; + network_scan_task = lv_task_create(network_scan_task_cb, 1000, LV_TASK_PRIO_MID, (void*)obj); + } +} + +void hidde_Network_Selection_page(void) +{ + network_scan_task_end(); + network_select_task_end(); + + pMenu = NULL; + + if(plabel) + { + lv_obj_del(plabel); + plabel = NULL; + } +} + +void Option_Network_Selection_Key(lv_obj_t* obj, uint32_t key) +{ + printf("key:%d\n",key); + + switch(key) + { + case LV_USER_KEY_NEXT: + if(network_scan_task == NULL && network_select_task == NULL) + { + if(ProfileFocused >= 0 && ProfileFocused < (ProfileTotal - 1)) + { + ProfileFocused++; + } + else + { + ProfileFocused = 0; + } + update_Network_Selection_msg(obj); + } + break; + case LV_USER_KEY_PREV: + if(network_scan_task == NULL && network_select_task == NULL) + { + if(ProfileFocused > 0 && ProfileFocused < ProfileTotal) + { + ProfileFocused--; + } + else + { + ProfileFocused = 0; + } + update_Network_Selection_msg(obj); + } + break; + case LV_USER_KEY_LEFT: + lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0)); + hidde_Network_Selection_page(); + break; + case LV_USER_KEY_RIGHT: + break; + case LV_KEY_ENTER: + if(network_scan_task == NULL && network_select_task == NULL) + { + lv_obj_set_hidden(container_main_menu_scr_uiflowmenucommonoption, true); + lv_label_set_text(plabel, "\n\nNetwork Switching..."); + sf_cardv_set_operationSelectResp(0xff); + SF_MESSAGE_BUF_S stMessageBuf = {0}; + stMessageBuf.arg1 = SF_DEV_CMD_ESIM_OPERATION_SELECT; + stMessageBuf.arg2 = SF_CONTROL_TYPE_LOCAL; + stMessageBuf.arg3 = ProfileFocused; + stMessageBuf.cmdId = CMD_DEV; + sf_com_message_send_to_app(&stMessageBuf); + if(network_select_task == NULL){ + Countdown = 0; + network_select_task = lv_task_create(network_select_task_cb, 1000, LV_TASK_PRIO_MID, (void*)obj); + } + } + break; + default: + break; + } +} + +// -------------------------------------------------------------------------- +// QR CODE +// -------------------------------------------------------------------------- +char *qr_code_str = "{\"imei\":\"%s\",\"verizonICCID\":\"%s\",\"attICCID\":\"%s\",\"isEsim\":%s}"; +static lv_obj_t *qr = NULL; +static lv_obj_t *label = NULL; +void show_qr_picture_page(lv_obj_t* obj) +{ + // lv_color_t colorDrak = {0}; + // lv_color_t colorLight = {0}; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + // const char *data = "https://github.com/topics/littlevgl"; +#define QR_DATA_LENGTH 1024 + char qr_date[QR_DATA_LENGTH] = {0}; + if (sf_cardv_get_is_esim() == 1) + { + snprintf(qr_date, QR_DATA_LENGTH, qr_code_str, puiPara->ModuleImei, puiPara->SimIccidV, puiPara->SimIccidA, "true"); + } + // else if (sf_cardv_get_is_esim() == 0) + // { + // snprintf(qr_date, QR_DATA_LENGTH, qr_code_str, puiPara->ModuleImei, puiPara->SimIccidA, puiPara->SimIccidA, "false"); + // } + else + { + snprintf(qr_date, QR_DATA_LENGTH, qr_code_str, puiPara->ModuleImei, puiPara->SimIccidA, puiPara->SimIccidA, "false"); + } + + if(obj){ + + /*Create a 100x100 QR code*/ + qr = lv_qrcode_create(obj, 120, (lv_color_t) { .full = 0x02}, (lv_color_t) { .full = 0x23}); + + if(qr){ + /*Set data*/ + lv_qrcode_update(qr, qr_date, strlen(qr_date)); + lv_obj_set_pos(qr, 32, 70); + } + } + lv_color_t color = {0}; + static lv_style_t labelStyle; + lv_style_init(&labelStyle); + STYLE_COLOR_PROP(0xff, 0xff, 0xff, 0xff) ; lv_style_set_text_color(&labelStyle, LV_STATE_DEFAULT, color); + lv_style_set_text_font(&labelStyle,LV_STATE_DEFAULT,&sf_ui_text_medium_16_1bpp); + label = lv_label_create(obj, NULL); + lv_label_set_long_mode(label, LV_LABEL_LONG_BREAK); + lv_label_set_text(label, "Add Camera to Tactacam App"); + lv_obj_set_pos(label, 180, 78); + lv_obj_set_size(label, 110, 63); + lv_obj_add_style(label, 0, &labelStyle); +} +void hidde_qr_picture_page(void) +{ + if(NULL != qr) + { + lv_qrcode_delete(qr); + } + if(label) + { + lv_obj_del(label); + } +} + +// -------------------------------------------------------------------------- +// Password +// -------------------------------------------------------------------------- +static int PasswordIndex = 0; +static lv_obj_t* PasswordMatrixObj = NULL; +static lv_obj_t* PasswordImage = NULL; +static char PasswordBuf1[2] = {'0', 0}; +static char PasswordBuf2[2] = {'0', 0}; +static char PasswordBuf3[2] = {'0', 0}; +static char PasswordBuf4[2] = {'0', 0}; +static char PasswordBuf5[2] = {'0', 0}; +static char PasswordBuf6[2] = {'0', 0}; +static const char* PasswordMap[7] = +{ + PasswordBuf1, + PasswordBuf2, + PasswordBuf3, + PasswordBuf4, + PasswordBuf5, + PasswordBuf6, + "" +}; + +static void update_Password_msg(lv_obj_t* obj) +{ + if(PasswordMatrixObj == NULL || PasswordImage == NULL) + { + DBG_ERR("Password component is not initialized"); + return; + } + + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + snprintf(PasswordBuf1, 2, "%c", puiPara->PwdStr[0]); + snprintf(PasswordBuf2, 2, "%c", puiPara->PwdStr[1]); + snprintf(PasswordBuf3, 2, "%c", puiPara->PwdStr[2]); + snprintf(PasswordBuf4, 2, "%c", puiPara->PwdStr[3]); + snprintf(PasswordBuf5, 2, "%c", puiPara->PwdStr[4]); + snprintf(PasswordBuf6, 2, "%c", puiPara->PwdStr[5]); + lv_btnmatrix_set_map(PasswordMatrixObj, PasswordMap); + + lv_btnmatrix_set_focused_btn(PasswordMatrixObj, PasswordIndex); + + lv_obj_set_x(PasswordImage, (64 + 32 * PasswordIndex)); +} + +void show_Password_page(lv_obj_t* obj) +{ + if(PasswordMatrixObj != NULL || PasswordImage != NULL) + { + DBG_ERR("Password component is initialized"); + return; + } + + PasswordIndex = 0; + + init_Matrix_style(); + + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + + snprintf(PasswordBuf1, 2, "%c", puiPara->PwdStr[0]); + snprintf(PasswordBuf2, 2, "%c", puiPara->PwdStr[1]); + snprintf(PasswordBuf3, 2, "%c", puiPara->PwdStr[2]); + snprintf(PasswordBuf4, 2, "%c", puiPara->PwdStr[3]); + snprintf(PasswordBuf5, 2, "%c", puiPara->PwdStr[4]); + snprintf(PasswordBuf6, 2, "%c", puiPara->PwdStr[5]); + + PasswordMatrixObj = lv_btnmatrix_create(obj, NULL); + lv_obj_set_hidden(PasswordMatrixObj, false); + lv_obj_set_click(PasswordMatrixObj, true); + lv_obj_set_drag(PasswordMatrixObj, false); + lv_obj_set_pos(PasswordMatrixObj, 64, 108); + lv_obj_set_size(PasswordMatrixObj, 192, 24); + lv_btnmatrix_set_map(PasswordMatrixObj, PasswordMap); + lv_btnmatrix_set_one_check(PasswordMatrixObj, true); + lv_btnmatrix_set_align(PasswordMatrixObj, LV_LABEL_ALIGN_CENTER); + lv_btnmatrix_set_focused_btn(PasswordMatrixObj,0); + lv_btnmatrix_set_one_check(PasswordMatrixObj, false); + lv_obj_add_style(PasswordMatrixObj, 0, &gMatrixStylebg); + lv_obj_add_style(PasswordMatrixObj, 1, &gMatrixStylebtn); + + PasswordImage = lv_img_create(obj, NULL); + lv_obj_set_hidden(PasswordImage, false); + lv_obj_set_click(PasswordImage, false); + lv_obj_set_drag(PasswordImage, false); + lv_obj_set_pos(PasswordImage, 64, 78); + lv_obj_set_size(PasswordImage, 32, 88); + lv_img_set_src(PasswordImage, &sf_pwd_down_up); +} + +void hidde_Password_page(void) +{ + printf("[%s]\n", __FUNCTION__); + PasswordIndex = 0; + if(PasswordMatrixObj) + { + lv_obj_del(PasswordMatrixObj); + PasswordMatrixObj = NULL; + } + if(PasswordImage) + { + lv_obj_del(PasswordImage); + PasswordImage = NULL; + } +} + +void Option_Password_Key_Long_Press(lv_obj_t* obj, uint32_t key) +{ + printf("[%s]key:%d\n", __FUNCTION__, key); + + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + + switch(key) + { + case LV_USER_KEY_NEXT: + if(PasswordIndex >= 0 && PasswordIndex <= 5) + { + puiPara->PwdStr[PasswordIndex] = (puiPara->PwdStr[PasswordIndex] - '0' + 10 - 1) % 10 + '0'; + } + update_Password_msg(obj); + break; + case LV_USER_KEY_PREV: + if(PasswordIndex >= 0 && PasswordIndex <= 5) + { + puiPara->PwdStr[PasswordIndex] = (puiPara->PwdStr[PasswordIndex] - '0' + 1) % 10 + '0'; + } + update_Password_msg(obj); + break; + default: + break; + } +} + +void Option_Password_Key(lv_obj_t* obj, uint32_t key) +{ + printf("[%s]key:%d\n", __FUNCTION__, key); + + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + + switch(key) + { + case LV_USER_KEY_NEXT: + if(PasswordIndex >= 0 && PasswordIndex <= 5) + { + puiPara->PwdStr[PasswordIndex] = (puiPara->PwdStr[PasswordIndex] - '0' + 10 - 1) % 10 + '0'; + } + update_Password_msg(obj); + break; + case LV_USER_KEY_PREV: + if(PasswordIndex >= 0 && PasswordIndex <= 5) + { + puiPara->PwdStr[PasswordIndex] = (puiPara->PwdStr[PasswordIndex] - '0' + 1) % 10 + '0'; + } + update_Password_msg(obj); + break; + case LV_USER_KEY_LEFT: + PasswordIndex = (PasswordIndex + 6 - 1) % 6; + update_Password_msg(obj); + break; + case LV_USER_KEY_RIGHT: + PasswordIndex = (PasswordIndex + 1) % 6; + update_Password_msg(obj); + break; + case LV_KEY_ENTER: + lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0)); + hidde_Password_page(); + break; + default: + break; + } +} + +// -------------------------------------------------------------------------- +// Camera Info +// -------------------------------------------------------------------------- +static int CameraInfoIndex = 0; +static lv_obj_t *CameraInfolabel = NULL; +static lv_obj_t *CameraInfoImage = NULL; +static int CameraInfoisHidden = 1; +static int CameraInfoQlogisHidden = 1; +static int CameraInfoDebugisHidden = 1; +static lv_obj_t * btnm = NULL; +static const char * map[] = {"1", "2", "3", ""}; +static void update_Camera_Info_msg(lv_obj_t* obj) +{ + if(CameraInfolabel == NULL || btnm == NULL) + { + DBG_ERR("Camera Info component is not initialized"); + return; + } + + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + char CamInfoStr[256] = {0}; + char tmpStr[64] = {0}; + UINT8 mcuversion[64] = {0}; + if(CameraInfoIndex == 0) + { + for(int i=0;i<7;i++) + { + memset(tmpStr, 0, sizeof(tmpStr)); + switch(i) + { + case 0: + strcat(CamInfoStr, "Ver:R5.0\n"); + break; + case 1: + if(!CameraInfoQlogisHidden) + { + sprintf(tmpStr, "Qlog %s\n", puiPara->QLogSwitch ? "ON" : "OFF"); + strcat(CamInfoStr, tmpStr); + } + else if(!CameraInfoisHidden) + { + sprintf(tmpStr, "%s\n",SF_BASE_VERSION); + strcat(CamInfoStr, tmpStr); + } + else + strcat(CamInfoStr, "\n"); + break; + case 2: + sf_mcu_version_get(mcuversion); + sprintf(tmpStr, "MCU:%s\n",mcuversion); + strcat(CamInfoStr, tmpStr); + break; + case 3: + strcat(CamInfoStr, "\n"); + break; + case 4: + sprintf(tmpStr, "IMEI:%s\n", puiPara->ModuleImei); + strcat(CamInfoStr, tmpStr); + break; + case 5: + if(!CameraInfoDebugisHidden) + { + sprintf(tmpStr, "Debug %s\n", puiPara->DebugMode ? "ON" : "OFF"); + strcat(CamInfoStr, tmpStr); + } + else if(!CameraInfoisHidden) + { + sprintf(tmpStr, "%s\n", puiPara->ModuleSubver); + strcat(CamInfoStr, tmpStr); + } + else + strcat(CamInfoStr, "\n"); + break; + case 6: + sprintf(tmpStr, "MOD:%s\n", puiPara->ModuleVer); + strcat(CamInfoStr, tmpStr); + break; + default: + break; + } + } + } + else if(CameraInfoIndex == 1) + { + for(int i=0;i<7;i++) + { + memset(tmpStr, 0, sizeof(tmpStr)); + switch(i) + { + case 0: + sprintf(tmpStr, "ICCID:%s\n", puiPara->SimIccid); + strcat(CamInfoStr, tmpStr); + break; + case 1: + strcat(CamInfoStr, "\n"); + break; + case 2: + sprintf(tmpStr, "ICCID-A:%s\n", puiPara->SimIccidA); + strcat(CamInfoStr, tmpStr); + break; + case 3: + strcat(CamInfoStr, "\n"); + break; + case 4: + sprintf(tmpStr, "ICCID-V:%s\n", puiPara->SimIccidV); + strcat(CamInfoStr, tmpStr); + break; + case 5: + strcat(CamInfoStr, "\n"); + break; + case 6: + sprintf(tmpStr, "SSID:%s\n", puiPara->strSSID); + strcat(CamInfoStr, tmpStr); + break; + default: + break; + } + } + } + else if(CameraInfoIndex == 2) + { + sprintf(tmpStr, "BLE:%s\n", puiPara->BluSsid); + strcat(CamInfoStr, tmpStr); + } + + lv_btnmatrix_set_focused_btn(btnm, CameraInfoIndex); + lv_btnmatrix_set_map(btnm, map); + + lv_label_set_text(CameraInfolabel, CamInfoStr); +} + +void show_Camera_Info_page(lv_obj_t* obj) +{ + if(CameraInfolabel != NULL || btnm != NULL || CameraInfoImage != NULL) + { + DBG_ERR("Camera Info component is initialized"); + return; + } + + CameraInfoIndex = 0; + CameraInfoisHidden = 1; + CameraInfoQlogisHidden = 1; + CameraInfoDebugisHidden = 1; + + init_Matrix_style(); + + btnm = lv_btnmatrix_create(obj, NULL); + lv_btnmatrix_set_map(btnm, map); + lv_obj_add_style(btnm, 0, &gMatrixStylebg); + lv_obj_add_style(btnm, 1, &gMatrixStylebtn); + lv_obj_set_pos(btnm, 130, 207); + lv_obj_set_size(btnm, 60, 25); + lv_btnmatrix_set_btn_ctrl_all(btnm, LV_BTNMATRIX_CTRL_CHECKABLE); + lv_btnmatrix_set_focused_btn(btnm, 0); + + CameraInfoImage = lv_img_create(obj, NULL); + lv_obj_set_hidden(CameraInfoImage, false); + lv_obj_set_click(CameraInfoImage, false); + lv_obj_set_drag(CameraInfoImage, false); + lv_obj_set_pos(CameraInfoImage, 93, 200); + lv_obj_set_size(CameraInfoImage, 134, 40); + lv_img_set_src(CameraInfoImage, &sf_next3); + + static lv_style_t LabelStyle = {0}; + lv_style_init(&LabelStyle); + lv_style_copy(&LabelStyle, &gStyleLabel0); + lv_style_set_text_line_space(&LabelStyle, LV_STATE_DEFAULT, -2); + CameraInfolabel = lv_label_create(obj, NULL); + lv_label_set_text(CameraInfolabel, ""); + lv_obj_set_pos(CameraInfolabel, 10, 45); + lv_obj_set_width(CameraInfolabel, 300); + lv_obj_add_style(CameraInfolabel, 0, &LabelStyle); + + update_Camera_Info_msg(obj); +} + +void hidde_Camera_Info_page(void) +{ + printf("[%s]\n", __FUNCTION__); + CameraInfoIndex = 0; + CameraInfoisHidden = 1; + CameraInfoQlogisHidden = 1; + CameraInfoDebugisHidden = 1; + if(CameraInfolabel) + { + lv_obj_del(CameraInfolabel); + CameraInfolabel = NULL; + } + if(CameraInfoImage) + { + lv_obj_del(CameraInfoImage); + CameraInfoImage = NULL; + } + if(btnm) + { + lv_obj_del(btnm); + btnm = NULL; + } +} + +void Option_CAMERA_INFO_Key_Long_Press(lv_obj_t* obj, uint32_t key) +{ + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + printf("[%s]key:%d\n", __FUNCTION__, key); + switch(key) + { + case LV_USER_KEY_NEXT: + puiPara->QLogSwitch = puiPara->QLogSwitch ? 0 : 1; + CameraInfoQlogisHidden = 0; + update_Camera_Info_msg(obj); + break; + case LV_USER_KEY_PREV: + puiPara->DebugMode = puiPara->DebugMode ? 0 : 1; + if(!puiPara->DebugMode) + { + puiPara->QLogSwitch = 0; + } + CameraInfoDebugisHidden = 0; + update_Camera_Info_msg(obj); + break; + case LV_USER_KEY_LEFT: + break; + case LV_USER_KEY_RIGHT: + CameraInfoisHidden = 0; + update_Camera_Info_msg(obj); + break; + case LV_KEY_ENTER: + break; + default: + break; + } +} + +void Option_CAMERA_INFO_Key(lv_obj_t* obj, uint32_t key) +{ + printf("[%s]key:%d\n", __FUNCTION__, key); + switch(key) + { + case LV_USER_KEY_NEXT: + CameraInfoQlogisHidden = 1; + update_Camera_Info_msg(obj); + break; + case LV_USER_KEY_PREV: + CameraInfoDebugisHidden = 1; + update_Camera_Info_msg(obj); + break; + case LV_USER_KEY_LEFT: + CameraInfoIndex--; + if(CameraInfoIndex < 0) + CameraInfoIndex = 0; + update_Camera_Info_msg(obj); + break; + case LV_USER_KEY_RIGHT: + if(!CameraInfoisHidden) + { + CameraInfoisHidden = 1; + } + else + { + CameraInfoIndex++; + if(CameraInfoIndex > 2) + CameraInfoIndex = 2; + } + update_Camera_Info_msg(obj); + break; + case LV_KEY_ENTER: + lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0)); + hidde_Camera_Info_page(); + break; + default: + break; + } +} + +// -------------------------------------------------------------------------- +// Camera Name +// -------------------------------------------------------------------------- +static char charMap[37] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', + 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', + 'U', 'V', 'W', 'X', 'Y', 'Z', ' '}; +static int CameraNameIndex = 0; +static lv_obj_t* CameraNameMatrixObj = NULL; +static lv_obj_t* CameraNameImage = NULL; +static char CameraNameBuf1[2] = {'0', 0}; +static char CameraNameBuf2[2] = {'0', 0}; +static char CameraNameBuf3[2] = {'0', 0}; +static char CameraNameBuf4[2] = {'0', 0}; +static const char* CameraNameMap[7] = +{ + CameraNameBuf1, + CameraNameBuf2, + CameraNameBuf3, + CameraNameBuf4, + "" +}; + +static void update_Camera_Name_msg(lv_obj_t* obj) +{ + if(CameraNameMatrixObj == NULL || CameraNameImage == NULL) + { + DBG_ERR("Camera Name component is not initialized"); + return; + } + + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + snprintf(CameraNameBuf1, 2, "%c", puiPara->CamNameStr[0]); + snprintf(CameraNameBuf2, 2, "%c", puiPara->CamNameStr[1]); + snprintf(CameraNameBuf3, 2, "%c", puiPara->CamNameStr[2]); + snprintf(CameraNameBuf4, 2, "%c", puiPara->CamNameStr[3]); + lv_btnmatrix_set_map(CameraNameMatrixObj, CameraNameMap); + + lv_btnmatrix_set_focused_btn(CameraNameMatrixObj, CameraNameIndex); + + lv_obj_set_x(CameraNameImage, (96 + 32 * CameraNameIndex)); +} + +void show_Camera_Name_page(lv_obj_t* obj) +{ + if(CameraNameMatrixObj != NULL || CameraNameImage != NULL) + { + DBG_ERR("Camera Name component is initialized"); + return; + } + + CameraNameIndex = 0; + + init_Matrix_style(); + + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + for(int i = 0; i < 4; i++) { + if (!(puiPara->CamNameStr[i] >= '0' && puiPara->CamNameStr[i] <= '9') && + !(puiPara->CamNameStr[i] >= 'A' && puiPara->CamNameStr[i] <= 'Z') && + puiPara->CamNameStr[i] != ' ') + { + DBG_ERR("Camera Name content error"); + memset(puiPara->CamNameStr, ' ', 4); + break; + } + } + + snprintf(CameraNameBuf1, 2, "%c", puiPara->CamNameStr[0]); + snprintf(CameraNameBuf2, 2, "%c", puiPara->CamNameStr[1]); + snprintf(CameraNameBuf3, 2, "%c", puiPara->CamNameStr[2]); + snprintf(CameraNameBuf4, 2, "%c", puiPara->CamNameStr[3]); + + CameraNameMatrixObj = lv_btnmatrix_create(obj, NULL); + lv_obj_set_hidden(CameraNameMatrixObj, false); + lv_obj_set_click(CameraNameMatrixObj, true); + lv_obj_set_drag(CameraNameMatrixObj, false); + lv_obj_set_pos(CameraNameMatrixObj, 96, 108); + lv_obj_set_size(CameraNameMatrixObj, 128, 24); + lv_btnmatrix_set_map(CameraNameMatrixObj, CameraNameMap); + lv_btnmatrix_set_one_check(CameraNameMatrixObj, true); + lv_btnmatrix_set_align(CameraNameMatrixObj, LV_LABEL_ALIGN_CENTER); + lv_btnmatrix_set_focused_btn(CameraNameMatrixObj,0); + lv_btnmatrix_set_one_check(CameraNameMatrixObj, false); + lv_obj_add_style(CameraNameMatrixObj, 0, &gMatrixStylebg); + lv_obj_add_style(CameraNameMatrixObj, 1, &gMatrixStylebtn); + + CameraNameImage = lv_img_create(obj, NULL); + lv_obj_set_hidden(CameraNameImage, false); + lv_obj_set_click(CameraNameImage, false); + lv_obj_set_drag(CameraNameImage, false); + lv_obj_set_pos(CameraNameImage, 96, 78); + lv_obj_set_size(CameraNameImage, 32, 88); + lv_img_set_src(CameraNameImage, &sf_pwd_down_up); +} + +void hidde_Camera_Name_page(void) +{ + printf("[%s]\n", __FUNCTION__); + CameraNameIndex = 0; + if(CameraNameMatrixObj) + { + lv_obj_del(CameraNameMatrixObj); + CameraNameMatrixObj = NULL; + } + if(CameraNameImage) + { + lv_obj_del(CameraNameImage); + CameraNameImage = NULL; + } +} + +void Option_Camera_Name_Key_Long_Press(lv_obj_t* obj, uint32_t key) +{ + printf("[%s]key:%d\n", __FUNCTION__, key); + + char tmpchar; + char* p; + + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + + switch(key) + { + case LV_USER_KEY_NEXT: + tmpchar = puiPara->CamNameStr[CameraNameIndex]; + p = strchr(charMap, tmpchar); + if (p != NULL) + { + puiPara->CamNameStr[CameraNameIndex] = charMap[(p - charMap + 36) % 37]; + } + else + { + DBG_ERR("Camera Name content [%d] error", CameraNameIndex); + puiPara->CamNameStr[CameraNameIndex] = ' '; + } + update_Camera_Name_msg(obj); + break; + case LV_USER_KEY_PREV: + tmpchar = puiPara->CamNameStr[CameraNameIndex]; + p = strchr(charMap, tmpchar); + if (p != NULL) + { + puiPara->CamNameStr[CameraNameIndex] = charMap[(p - charMap + 1) % 37]; + } + else + { + DBG_ERR("Camera Name content [%d] error", CameraNameIndex); + puiPara->CamNameStr[CameraNameIndex] = ' '; + } + update_Camera_Name_msg(obj); + break; + default: + break; + } +} + +void Option_Camera_Name_Key(lv_obj_t* obj, uint32_t key) +{ + printf("[%s]key:%d\n", __FUNCTION__, key); + + char tmpchar; + char* p; + + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + + switch(key) + { + case LV_USER_KEY_NEXT: + tmpchar = puiPara->CamNameStr[CameraNameIndex]; + p = strchr(charMap, tmpchar); + if (p != NULL) + { + puiPara->CamNameStr[CameraNameIndex] = charMap[(p - charMap + 36) % 37]; + } + else + { + DBG_ERR("Camera Name content [%d] error", CameraNameIndex); + puiPara->CamNameStr[CameraNameIndex] = ' '; + } + update_Camera_Name_msg(obj); + break; + case LV_USER_KEY_PREV: + tmpchar = puiPara->CamNameStr[CameraNameIndex]; + p = strchr(charMap, tmpchar); + if (p != NULL) + { + puiPara->CamNameStr[CameraNameIndex] = charMap[(p - charMap + 1) % 37]; + } + else + { + DBG_ERR("Camera Name content [%d] error", CameraNameIndex); + puiPara->CamNameStr[CameraNameIndex] = ' '; + } + update_Camera_Name_msg(obj); + break; + case LV_USER_KEY_LEFT: + CameraNameIndex = (CameraNameIndex > 0 && CameraNameIndex <= 3) ? (CameraNameIndex - 1) : 3; + update_Camera_Name_msg(obj); + break; + case LV_USER_KEY_RIGHT: + CameraNameIndex = (CameraNameIndex >= 0 && CameraNameIndex < 3) ? (CameraNameIndex + 1) : 0; + update_Camera_Name_msg(obj); + break; + case LV_KEY_ENTER: + lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0)); + hidde_Camera_Name_page(); + break; + default: + break; + } +} + + + + diff --git a/code/application/source/cardv/SrcCode/UIWnd/s530-ntk/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/UIFlowMenuCommonItemEventCallback.c b/code/application/source/cardv/SrcCode/UIWnd/s530-ntk/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/UIFlowMenuCommonItemEventCallback.c new file mode 100644 index 000000000..15d2ce3c1 --- /dev/null +++ b/code/application/source/cardv/SrcCode/UIWnd/s530-ntk/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/UIFlowMenuCommonItemEventCallback.c @@ -0,0 +1,1145 @@ + +#include "PrjInc.h" +#include "UIFlowLVGL/UIFlowLVGL.h" +#include "UIApp/Network/UIAppNetwork.h" +#include "UIFlowLVGL/UIFlowMenuCommonItem/MenuId.h" +#include +#include +#include +#if HUNTING_CAMERA_MCU == ENABLE +#include +#endif +#include +#include + +#define PAGE 32 +#define PER_PAGE_NUM 5 +#define TAB_PAGE 4 + +//static TM_MENU *g_pItemMenu = 0; +static lv_group_t* gp = NULL; +static lv_obj_t* menu_tab = NULL; +static lv_obj_t* menu_item = NULL; +//static lv_obj_t* menu_option = NULL; +//static lv_obj_t* label_menu_item = NULL; +//#NT#2023/11/03#Eric - begin +//#NT#Support IVOT_N12144_CO-148 -5 +BOOL PrevSel_Img = false; +//#NT#2023/11/03#Eric - end +#define MENU_LUCK -1 +#define MENU_UNLUCK 0 +#define MENU_CLOSED 1 +static int gMenuLuck = MENU_CLOSED; +int is_menu_screen_luck(void) +{ + return gMenuLuck; +} +lv_obj_t *menu_opened_get(void) +{ + return menu_item; +} +static BOOL sf_is_4g_module_usb_update_file_exist(UINT8 *updateFname) +{ + DIR *dirp = NULL; + struct dirent *ptr = NULL; + + UIMenuStoreInfo *puiPara = sf_app_ui_para_get(); + if ((dirp=opendir((char *)SF_SD_ROOT)) != NULL) + { + while ((ptr=readdir(dirp)) != NULL) + { + if(strcmp(ptr->d_name,".")==0 || strcmp(ptr->d_name,"..")==0) ///current dir OR parrent dir + continue; + else if(ptr->d_type == 4) ///dir + { + if(strncmp(ptr->d_name, puiPara->ModuleVer, 6) == 0) + { + sprintf((char*)updateFname, "%s%s", "/mnt/sd/", ptr->d_name); + closedir(dirp); + printf("[%s:%d] updateFname:%s\n", __FUNCTION__, __LINE__, updateFname); + return TRUE; + } + } + else + { + continue; + } + } + } + closedir(dirp); + + printf("no update file\n"); + return FALSE; +} +static unsigned char gBattery = 0; +#define UPGRADABLE 0 +#define NOT_UPGRADABLE -1 +static int is_camera_fw_upgrade(void) +{ + FST_FILE hFile = NULL; + // return UPGRADABLE; + hFile = FileSys_OpenFile(FW_UPDATE_NAME, FST_OPEN_READ); + if (gBattery < 40 || hFile == NULL) + { + if (hFile != NULL) + { + FileSys_CloseFile(hFile); + } + return NOT_UPGRADABLE; + } + if (hFile != NULL) + { + FileSys_CloseFile(hFile); + } + return UPGRADABLE; +} +static int is_module_fw_upgrade(void) +{ + // return UPGRADABLE; + UINT8 updateFileName[60] = {0}; + if (gBattery < 40 || sf_is_4g_module_usb_update_file_exist(updateFileName) == FALSE) + { + return NOT_UPGRADABLE; + } + return UPGRADABLE; +} +#define SEND_TYPE_DISABLE 0 +#define SEND_TYPE_ENABLE 1 +static int is_send_type_disabel(void) +{ + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + #define DAILY_SETTING 0 + if (DAILY_SETTING == puiPara->GprsMode) + { + return SEND_TYPE_ENABLE; + } + return SEND_TYPE_DISABLE; +} +#if 0 +static lv_obj_t* container_option1 = NULL; +static lv_obj_t* container_option2 = NULL; +static lv_obj_t* container_option3 = NULL; +//static lv_obj_t* container_option4 = NULL; +//static lv_obj_t* container_option5 = NULL; +#endif + +UINT16 I_en_Index[PAGE] = {}; +UINT16 ItemEN_Num = 0; + +static void load_info_from_sf(void) +{ +#define OPTION_0 0 +#define OPTION_1 1 + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + SysSetFlag(IDF_PASSWORD, puiPara->PwdSwitch); + SysSetFlag(IDF_CAMERA_NAME, puiPara->CamNameSwitch == SF_CAMID_OFF ? OPTION_0 : OPTION_1); + SysSetFlag(IDF_CAMERA_MODE, puiPara->CamMode == 3 ? OPTION_1 : OPTION_0); + if (PHOTO_SIZE_40M == puiPara->ImgSize) + { + SysSetFlag(IDF_IMAGE_SIZE, 0); + } + if (PHOTO_SIZE_32M == puiPara->ImgSize) + { + SysSetFlag(IDF_IMAGE_SIZE, 1); + } + if (PHOTO_SIZE_24M == puiPara->ImgSize) + { + SysSetFlag(IDF_IMAGE_SIZE, 2); + } + if (PHOTO_SIZE_16M == puiPara->ImgSize) + { + SysSetFlag(IDF_IMAGE_SIZE, 3); + } + if (PHOTO_SIZE_8M == puiPara->ImgSize) + { + SysSetFlag(IDF_IMAGE_SIZE, 4); + } + if (MOVIE_SIZE_FRONT_1920x1080P30 == puiPara->VideoSize) + { + SysSetFlag(IDF_VIDEO_SIZE, 0); + } + if (MOVIE_SIZE_FRONT_1280x720P30 == puiPara->VideoSize) + { + SysSetFlag(IDF_VIDEO_SIZE, 1); + } + if (MOVIE_SIZE_FRONT_848x480P30 == puiPara->VideoSize) + { + SysSetFlag(IDF_VIDEO_SIZE, 2); + } + SysSetFlag(IDF_VIDEA_LENGTH, puiPara->VideoLenth == 10 ? OPTION_0 : OPTION_1); + SysSetFlag(IDF_FLASH_POWER, puiPara->FlashLed); + SysSetFlag(IDF_SENSITIVITY, puiPara->DigitPirSensitivity); + SysSetFlag(IDF_DELAY, puiPara->PirDelaySwitch == SF_OFF ? OPTION_0 : OPTION_1); + SysSetFlag(IDF_OPERATING_TIME, puiPara->WorkTime1Switch == SF_OFF ? OPTION_0 : OPTION_1); + SysSetFlag(IDF_DATE_AND_TIME, puiPara->DateAuto == SF_DATE_AUTO ? OPTION_0 : OPTION_1); + SysSetFlag(IDF_MAX_NUM_DAY, puiPara->SendMaxNum == 0 ? OPTION_0 : OPTION_1); + SysSetFlag(IDF_SETTINGS_CHECK, puiPara->GprsMode); + SysSetFlag(IDF_SEND_TYPE, (puiPara->SendType == 4 ? 3 : puiPara->SendType)); + SysSetFlag(IDF_CHECK_IN_PHOTO, puiPara->PicUpDailyReport); + SysSetFlag(IDF_GPS, puiPara->GpsSwitch); + SysSetFlag(IDF_BATTERY_TYPE, puiPara->BatteryType); + SysSetFlag(IDF_SD_LOOP, puiPara->SdLoopSwitch); +} + +static void set_indev_keypad_group(lv_obj_t* obj) +{ + if(gp == NULL){ + gp = lv_group_create(); + lv_group_add_obj(gp, obj); + } + + lv_indev_t* indev = lv_plugin_find_indev_by_type(LV_INDEV_TYPE_KEYPAD); + lv_indev_set_group(indev, gp); +} + +#if 0 +static void LV_MenuCommonItem_SetCurrentMenu(TM_MENU *pMenu) +{ + g_pItemMenu = pMenu; +} +static TM_MENU *LV_MenuCommonItem_GetCurrentMenu(void) +{ + return g_pItemMenu; +} +#endif + +static void LV_MenuCommonItem_UpdateContent(TM_MENU *pMenu); +static void LV_MenuItem_OnSelected(lv_obj_t* obj); + +//#NT#2023/11/21#Eric - begin +//#NT#Support IVOT_N12144_CO-148_1120_5 +static void LV_MenuItem_OnPrev(lv_obj_t* obj) +{ + TM_MENU* pMenu = TM_GetMenu(); + TM_PAGE *pPage; + TM_ITEM *pItem; + BOOL uSel_Jump = false; + + pPage = &pMenu->pPages[pMenu->SelPage]; + // pItem = &pPage->pItems[pPage->SelItem]; + if (pMenu->Status == TMS_ON_TAB){ + if(pPage->SelItem == 0){ +// DBG_WRN("already foucs on tab !"); + DBG_DUMP("^Galready foucs on tab !"); + pPage->SelItem = (pPage->Count - 1); + pMenu->Status = TMS_ON_ITEM; + LV_MenuCommonItem_UpdateContent(pMenu); + lv_plugin_menu_select_item(menu_item, pPage->SelItem); + } + }else{ + OneMore: + // pItem = &pPage->pItems[pPage->SelItem - 1]; + // if(((pItem->ItemId == IDM_BATTERY_TYPE) && 0)){ + // pPage->SelItem = 0; + // } + //if item = 0; up key foucs to tab + if(pPage->SelItem == 0){ + pMenu->Status = TMS_ON_TAB; + LV_MenuCommonItem_UpdateContent(pMenu); + lv_plugin_menu_clear_selected_item(menu_item); + return; + } + pPage->SelItem--; + pItem = &pPage->pItems[pPage->SelItem]; + if((pItem->ItemId == IDM_CAMERA_FW_UPGRADE && is_camera_fw_upgrade() == NOT_UPGRADABLE) || + (pItem->ItemId == IDM_MODULE_FW_UPGRADE && is_module_fw_upgrade() == NOT_UPGRADABLE) || + (pItem->ItemId == IDM_SEND_TYPE && is_send_type_disabel() == SEND_TYPE_DISABLE)) { + lv_plugin_menu_select_prev_item(menu_item); + uSel_Jump = true; + goto OneMore; + } + LV_MenuCommonItem_UpdateContent(pMenu); + lv_plugin_menu_select_prev_item(menu_item); + if(uSel_Jump){ + lv_plugin_menu_set_item_state(menu_item, (pPage->SelItem + 1), LV_PLUGIN_MENU_ITEM_STATE_DISABLED); + } + uSel_Jump = false; + } +} + +static void LV_MenuItem_OnNext(lv_obj_t* obj) +{ + TM_MENU* pMenu = TM_GetMenu(); + TM_PAGE *pPage; + TM_ITEM *pItem; + BOOL uSel_Jump = false; + // static BOOL FisrtSel_Jump = false; + + pPage = &pMenu->pPages[pMenu->SelPage]; + pItem = &pPage->pItems[pPage->SelItem]; + + if (pMenu->Status == TMS_ON_TAB){ + pMenu->Status = TMS_ON_ITEM; + pPage->SelItem = 0; + // pMenu->Status = TMS_ON_ITEM; + // if(((pItem->ItemId == IDM_BATTERY_TYPE) && 0)){ + // pPage->SelItem = 1; + // FisrtSel_Jump = true; + // }else{ + // pPage->SelItem = 0; + // } + LV_MenuCommonItem_UpdateContent(pMenu); + lv_plugin_menu_select_item(menu_item, 0); + // lv_plugin_menu_select_item(menu_item, pPage->SelItem); + }else{ + Onetime: + pPage->SelItem++; + pItem = &pPage->pItems[pPage->SelItem]; + if((pItem->ItemId == IDM_CAMERA_FW_UPGRADE && is_camera_fw_upgrade() == NOT_UPGRADABLE) || + (pItem->ItemId == IDM_MODULE_FW_UPGRADE && is_module_fw_upgrade() == NOT_UPGRADABLE) || + (pItem->ItemId == IDM_SEND_TYPE && is_send_type_disabel() == SEND_TYPE_DISABLE)){ + lv_plugin_menu_select_next_item(menu_item); + uSel_Jump = true; + goto Onetime; + } + + if(pPage->SelItem >= pPage->Count){ + pPage->SelItem = 0; + // if(FisrtSel_Jump /**&& uItem_Locked**/){ + // pPage->SelItem = 1; + // }else{ + // pPage->SelItem = 0; + // } + LV_MenuCommonItem_UpdateContent(pMenu); + lv_plugin_menu_select_item(menu_item, pPage->SelItem); + return; + } + //#NT#2023/11/03#Eric - begin + //#NT#Support IVOT_N12144_CO-148 -5 + PrevSel_Img = false; + //#NT#2023/11/03#Eric - end + + LV_MenuCommonItem_UpdateContent(pMenu); + lv_plugin_menu_select_next_item(menu_item); + if(uSel_Jump){ + lv_plugin_menu_set_item_state(menu_item, (pPage->SelItem - 1), LV_PLUGIN_MENU_ITEM_STATE_DISABLED); + } + uSel_Jump = false; + } + +} + +static void LV_MenuItem_OnUp(lv_obj_t* obj) +{ + TM_MENU* pMenu = TM_GetMenu(); + TM_PAGE *pPage; + + pPage = &pMenu->pPages[pMenu->SelPage]; + if (pMenu->Status == TMS_ON_TAB) + { + printf("handle on tab.\n"); + TM_ShiftTab(pMenu, -1); + //#NT#2023/11/03#Eric - begin + //#NT#Support //#NT#Support IVOT_N12144_CO-148 -1 + lv_plugin_menu_select_first_item(menu_item); + //#NT#2023/11/03#Eric - end + LV_MenuCommonItem_UpdateContent(pMenu); + lv_plugin_menu_select_prev_item(menu_tab); + }else{ + pMenu->Status = TMS_ON_TAB; + LV_MenuCommonItem_UpdateContent(pMenu); + lv_plugin_menu_clear_selected_item(menu_item); + pPage->SelItem = 0; + //lv_plugin_scr_close(obj, NULL); + } +} + +static void LV_MenuItem_OnDown(lv_obj_t* obj) +{ + + TM_MENU* pMenu = TM_GetMenu(); + + if (pMenu->Status == TMS_ON_TAB) + { + printf("handle on tab.\n"); + TM_ShiftTab(pMenu, +1); + lv_plugin_menu_select_first_item(menu_item); + lv_plugin_menu_select_next_item(menu_tab); + LV_MenuCommonItem_UpdateContent(pMenu); + }else{ + printf("handle on item.\n"); + LV_MenuItem_OnSelected(obj); + } +} +//#NT#2023/11/21#Eric - end + +#define ITEM_IS_SWITCH 1 +#define ITEM_IS_NOT_SWITCH 0 +static int IsItemSwitch(const TM_ITEM *item) +{ + if (NULL == item || NULL == item->pOptions) + { + printf(" faield:null pointer.\n"); + return -1; + } + // if (LV_PLUGIN_STRING_ID_STRID_OFF == (&item->pOptions[0])->TextId + // ||LV_PLUGIN_STRING_ID_STRID_ON == (&item->pOptions[0])->TextId) + // { + // printf("item is switch.\n"); + // return ITEM_IS_SWITCH; + // } else { + // printf("item is not switch.\n"); + // return ITEM_IS_NOT_SWITCH; + // } + return -1; +} + +static void SetSwitchItem(TM_ITEM *item) +{ + if (NULL == item) + { + printf(" faield:null pointer.\n"); + return; + } + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + switch (item->ItemId) + { + case IDM_PASSWORD: + { + printf("set IDM_PASSWORD.\n"); + char settingValue = puiPara->PwdSwitch == SF_CAMID_OFF ? SF_CAMID_ON:SF_CAMID_OFF; + if (SF_CAMID_ON == settingValue) + { + + } + else + { + } + puiPara->PwdSwitch = settingValue; + break; + } + case IDM_CAMERA_NAME: + { + printf("set IDM_CAMERA_NAME.\n"); + // CamPara->cameraID = puiPara->CamNameSwitch == SF_CAMID_OFF ? 0:1; + char settingValue = puiPara->CamNameSwitch == SF_CAMID_OFF ? SF_CAMID_ON:SF_CAMID_OFF; + if (SF_CAMID_ON == settingValue) + { + + } + else + { + } + puiPara->CamNameSwitch = settingValue; + break; + } + default: + break; + } +} + +static void LV_MenuItem_OnSelected(lv_obj_t* obj) +{ + TM_MENU *pMenu = TM_GetMenu(); + TM_PAGE *pPage; + TM_ITEM *pItem; +// TM_MENU *pNextMenu; + UINT16 SelOption = 0; + TM_MENU *pCurMenu = NULL; + +// DBG_DUMP("\r\n %s pMenu Status= %d\r\n", __func__, pMenu->Status); + pPage = &pMenu->pPages[pMenu->SelPage]; + if (pMenu->Status == TMS_ON_ITEM) + { + pItem = &pPage->pItems[pPage->SelItem]; + //#NT#2023/11/03#Eric - begin + //#NT#Support IVOT_N12144_CO-148 -5 + PrevSel_Img = true; + //#NT#2023/11/03#Eric - end + //#NT#2016/09/20#Bob Huang -begin + //#NT#Support HDMI Display with 3DNR Out + //Only support FHD p30 size, cannot change size when 3DNR Out enabled + #if (_3DNROUT_FUNC == ENABLE) + if(pItem->SysFlag == FL_MOVIE_SIZE_MENU && gb3DNROut) + { + return; + } + #endif + if (IDM_NETWORK_SELECTION == pItem->ItemId || IDM_CAMERA_FW_UPGRADE == pItem->ItemId || IDM_MODULE_FW_UPGRADE == pItem->ItemId) + { + gMenuLuck = MENU_LUCK; + } + if((pItem->ItemId == IDM_CHECK_IN_PHOTO) || (pItem->ItemId == IDM_SD_LOOP) \ + //#NT#2023/11/03#Eric - begin + //#NT#Support IVOT_N12144_CO-148 -6 + || (pItem->ItemId == IDM_GPS)){ + //#NT#2023/11/03#Eric - end + //pItem = &pPage->pItems[pPage->SelItem]; + #define SWITCH_OFF 0 + #define SWITCH_ON 1 + SelOption = SysGetFlag(pItem->SysFlag) == SWITCH_OFF ? SWITCH_ON : SWITCH_OFF; + //static int flag = 0; + SysSetFlag(pItem->SysFlag, SelOption); + pCurMenu = TM_GetTabMenu(pMenu->SelPage); + TM_MENU_CALLBACK(pCurMenu, TMM_CONFIRM_OPTION, MAKE_LONG(pItem->ItemId, SelOption)); + // TM_MENU_CALLBACK(MenuList[pMenu->SelPage], TMM_CONFIRM_OPTION, MAKE_LONG(pItem->ItemId, SelOption)); + //flag = !flag; + //SysSetFlag(pItem->SysFlag, flag); + LV_MenuCommonItem_UpdateContent(pMenu); + CHKPNT; + return; + } + //#NT#2016/09/20#Bob Huang -end + if (pItem->Count != 0 && pItem->SysFlag != 0) // standard process + { + if (TM_MENU_CALLBACK(pMenu, TMM_ENTER_OPTION, MAKE_LONG(pItem->ItemId, 0)) == TMF_PASS_MESSAGE) + { + return; + } + } + if (ITEM_IS_SWITCH == IsItemSwitch(pItem)) + { + SetSwitchItem(pItem); + LV_MenuCommonItem_UpdateContent(pMenu); + } + else + { + if (pItem->Count != 0 && pItem->SysFlag != 0) // standard process + { + pMenu->Status = TMS_ON_OPTION; + lv_plugin_scr_open(UIFlowMenuCommonOption, NULL); + } + else if (pItem->pOptions != 0) // custom process + { + pMenu->Status = TMS_ON_CUSTOM; + TM_ITEM_CALLBACK(pItem, 0, 0); // execute custom menu flow + } + } + }else if(pMenu->Status == TMS_ON_TAB){ + CHKPNT; //lv_plugin_menu_clear_selected_item(menu_item); + lv_plugin_scr_close(obj, NULL); + } + + +} + +void LV_MenuItem_OnClose(lv_obj_t* obj) +{ +#if (MOVIE_MODE==ENABLE) + //#NT#2016/08/19#Lincy Lin#[0106935] -begin + //#NT# Support change WDR, SHDR, RSC setting will change mode after exit menu + BOOL bReOpenMovie = FlowMovie_CheckReOpenItem(); + BOOL bReOpenPhoto = 0; +#if (PHOTO_MODE==ENABLE) + bReOpenPhoto = FlowPhoto_CheckReOpenItem(); +#endif + if(bReOpenMovie) + DBG_DUMP("RESTART_MODE_YES\r\n"); + else + DBG_DUMP("RESTART_MODE_NO\r\n"); + + if (bReOpenMovie || bReOpenPhoto) + //#NT#2016/08/19#Lincy Lin -end + { + Ux_PostEvent(NVTEVT_SYSTEM_MODE, 1, System_GetState(SYS_STATE_CURRMODE)); + } +#endif + +} + +void LV_MenuItem_OnOpen(lv_obj_t* obj) +{ + DBG_DUMP("MenuItem_OnOpen\r\n"); + TM_MENU *pMenu = NULL; + TM_MENU* pCurMenu; + +#if (PHOTO_MODE == ENABLE) + // Enter 2nd level menu and pop up current mode's menu lists + if (System_GetState(SYS_STATE_CURRMODE) == PRIMARY_MODE_PHOTO) { + pCurMenu = &gQrMenu; +#if (PLAY_MODE == ENABLE) + } else if (System_GetState(SYS_STATE_CURRMODE) == PRIMARY_MODE_PLAYBACK) { + pCurMenu = &gQrMenu; +#endif + } else { + pCurMenu = &gQrMenu; + } +#else + //pNextMenu = &gCommonMenu;//use for codebase sportcam/LVGL UI or touch + pCurMenu = &gQrMenu; +#endif + +// TM_SetMenu(pCurMenu); +// DBG_DUMP("%s pMenu->Count =%d\r\n", __func__,pCurMenu->Count); +//#NT#2023/10/25#Eric - begin +//#NT#Support IVOT_N12144_CO-144 + pCurMenu->pPages[0]= gQrMenu.pPages[0]; //= gQrMenu + TM_SetTabMenu(&gQrMenu, 0); + pCurMenu->pPages[1]= gGeneralMenu.pPages[0]; //= gGeneralMenu + TM_SetTabMenu(&gGeneralMenu, 1); + pCurMenu->pPages[2]= gSendMenu.pPages[0]; //= gSendMenu + TM_SetTabMenu(&gSendMenu, 2); + pCurMenu->pPages[3]= gMoreMenu.pPages[0]; //= gMoreMenu + TM_SetTabMenu(&gMoreMenu, 3); +//#NT#2023/10/25#Eric - end + + TM_SetMenu(pCurMenu); + + pMenu = TM_GetMenu(); + pMenu->Status = TMS_ON_TAB; // current menu status is TAB + pMenu->SelPage = 0; // reset page to 0 + /* check menu tab is init */ + if(!lv_plugin_menu_item_cnt(menu_tab)){ + /* allocate menu item */ + lv_plugin_menu_init_items(menu_tab, TAB_PAGE); + } + lv_plugin_menu_select_item(menu_tab, 0); + /* check menu item is init */ + if(!lv_plugin_menu_item_cnt(menu_item)){ + /* allocate menu item */ + lv_plugin_menu_init_items(menu_item, PAGE); + } +// lv_plugin_menu_select_item(menu_item, 0); + //#NT#2023/11/03#Eric - begin + //#NT#Support IVOT_N12144_CO-148 -6 + PrevSel_Img = 0; + //#NT#2023/11/03#Eric - end + + LV_MenuCommonItem_UpdateContent(pMenu); + +} + +static void LV_MenuCommonItem_UpdateContent(TM_MENU *pMenu) +{ + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + TM_PAGE *pPage; + TM_ITEM *pItem; + TM_OPTION *pOption; + UINT32 i = 0; + UINT16 Sel_item = 0; +// UINT16 Sel_page = 0; + UINT16 itemIndex = 0; + BOOL u_hiddenitem = false; + BOOL u_ItemSel = false; + lv_plugin_res_id img_id = LV_PLUGIN_IMG_ID_ICON_REC_TRANSPAENT; + printf("update content select page = %d\n", pMenu->SelPage); + pPage = &pMenu->pPages[pMenu->SelPage]; + pItem = &pPage->pItems[pPage->SelItem]; +#if 0 + if (pMenu->Status == TMS_ON_TAB) + { + for (i = 0; i < TAB_PAGE; i++) { + if ((UINT32)pMenu->SelPage == i){ + uiIcon[i] = (&pMenu->pPages[i])->IconId; + u_ItemSel = false; + }else{ + uiIcon[i] = (&pMenu->pPages[i])->IconIdX; + u_ItemSel = true; + } + uiText[i] = (&pMenu->pPages[i])->TextId; + if(u_ItemSel){ + lv_plugin_menu_set_item_string_id(menu_tab, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, uiText[i]); + lv_plugin_menu_set_item_img_id(menu_tab, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, uiIcon[i]); + }else{ + lv_plugin_menu_set_item_string_id(menu_tab, i, LV_PLUGIN_MENU_ITEM_STATE_FOCUSED, uiText[i]); + lv_plugin_menu_set_item_img_id(menu_tab, i, LV_PLUGIN_MENU_ITEM_STATE_FOCUSED, uiIcon[i]); + } + lv_plugin_menu_set_item_hidden(menu_tab, i, false); + } + } +#endif + if(pPage->SelItem == 0){ + Sel_item = 0; + }else{ + if(pPage->SelItem / PER_PAGE_NUM == 0){ + Sel_item = 0; + }else{ + Sel_item = (pPage->SelItem / PER_PAGE_NUM) ; + } + } + + itemIndex = (Sel_item * PER_PAGE_NUM); + //draw item form startIndex + + printf("\033[33m[LV_MenuCommonItem_UpdateContent]Sel_item:%d itemIndex:%d pPage->Count:%d\033[0m\n",Sel_item,itemIndex,pPage->Count); + for (i = 0; i < PER_PAGE_NUM; i++) { + //check item if disable + TM_CheckItemStatus(pMenu, &itemIndex, TRUE); + pItem = &pPage->pItems[itemIndex]; + + if ((itemIndex >= pPage->Count) && (i < PER_PAGE_NUM)) { + lv_plugin_menu_set_item_string_id(menu_item, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, LV_PLUGIN_STRING_ID_STRID_NULL_); + lv_plugin_menu_set_item_img_id(menu_item, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, LV_PLUGIN_IMG_ID_ICON_REC_TRANSPAENT); + lv_plugin_menu_set_item_hidden(menu_item, i, true); + u_ItemSel = true; + } else { +#if 0////demo for only one container + DBG_DUMP("\r\n %s check i= %d\r\n", __func__, i); + pItem = &pPage->pItems[i]; + DBG_DUMP("\r\n %s pItem TextId= %d\r\n", __func__, pItem->TextId); + DBG_DUMP("\r\n %s pItem IconId= %d\r\n", __func__, pItem->IconId); + lv_plugin_menu_set_item_string_id(menu_item, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, pItem->TextId); + lv_plugin_menu_set_item_img_id(menu_item, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, pItem->IconId); + lv_plugin_menu_set_item_hidden(menu_item, i, false); + u_ItemSel = false; +#else + pOption = &pItem->pOptions[SysGetFlag(pItem->SysFlag)]; +// DBG_DUMP("\r\n %s pOption TextId= %d\r\n", __func__, pOption->TextId); + + if((pItem->ItemId == IDM_CHECK_IN_PHOTO) || (pItem->ItemId == IDM_SD_LOOP) \ + || (pItem->ItemId == IDM_GPS)){ + static lv_plugin_res_id res[] = { + LV_PLUGIN_IMG_ID_SF_OFF, + LV_PLUGIN_IMG_ID_SF_ON, + }; + switch(pItem->ItemId){ + case IDM_CHECK_IN_PHOTO: + img_id = res[SysGetFlag(FL_CHECK_IN_PHOTO)]; + break; + case IDM_SD_LOOP: + img_id = res[SysGetFlag(FL_SD_LOOP)]; + break; + case IDM_GPS: + img_id = res[SysGetFlag(FL_GPS)]; + break; + + default: + img_id = LV_PLUGIN_IMG_ID_SF_OFF; + DBG_ERR("NO_match_ItemID, add please!"); + break; + } + // if(img_id == LV_PLUGIN_IMG_ID_ICON_REC_TRANSPAENT){ + if(1){ + lv_plugin_menu_set_item_string_id(menu_item, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, pItem->TextId); + lv_plugin_menu_set_item_img_id(menu_item, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, pItem->IconId); + lv_plugin_menu_set_item_hidden(menu_item, i, false); + } + u_hiddenitem = true; + }else{ + lv_plugin_menu_set_item_string_id(menu_item, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, pItem->TextId); + lv_plugin_menu_set_item_hidden(menu_item, i, false); + //#NT#2023/11/21#Eric - begin + //#NT#Support IVOT_N12144_CO-148_1120_5 + // BOOL uItem_Locked = true; // TODO: + // if(((pItem->ItemId == IDM_CAMERA_FW_UPGRADE) || (pItem->ItemId == IDM_MODULE_FW_UPGRADE))&& uItem_Locked){ + if((pItem->ItemId == IDM_CAMERA_FW_UPGRADE) && is_camera_fw_upgrade() == NOT_UPGRADABLE){ + lv_plugin_menu_set_item_state(menu_item, i, LV_PLUGIN_MENU_ITEM_STATE_DISABLED); + lv_plugin_menu_set_item_img_id(menu_item, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, LV_PLUGIN_IMG_ID_SF_CAMERA_FW_UPGRADE_DIS); + } else if (pItem->ItemId == IDM_MODULE_FW_UPGRADE && is_module_fw_upgrade() == NOT_UPGRADABLE) + { + lv_plugin_menu_set_item_state(menu_item, i, LV_PLUGIN_MENU_ITEM_STATE_DISABLED); + lv_plugin_menu_set_item_img_id(menu_item, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, LV_PLUGIN_IMG_ID_SF_MODULE_FW_UPGRADE_DIS); + } else if (pItem->ItemId == IDM_SEND_TYPE && is_send_type_disabel() == SEND_TYPE_DISABLE) + { + lv_plugin_menu_set_item_state(menu_item, i, LV_PLUGIN_MENU_ITEM_STATE_DISABLED); + lv_plugin_menu_set_item_img_id(menu_item, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, LV_PLUGIN_IMG_ID_SF_SEND_TYPE_DIS); + } + else if (pItem->ItemId == IDM_BATTERY_TYPE && 0) + { + lv_plugin_menu_set_item_state(menu_item, i, LV_PLUGIN_MENU_ITEM_STATE_DISABLED); + lv_plugin_menu_set_item_img_id(menu_item, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, LV_PLUGIN_IMG_ID_SF_SEND_TYPE_DIS); + } + else { + lv_plugin_menu_set_item_img_id(menu_item, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, pItem->IconId); + } + //#NT#2023/11/21#Eric - end + u_hiddenitem = false; + } + + if(!u_hiddenitem){ + if(i == 0){ + lv_obj_set_hidden(image_option_01_scr_uiflowmenucommonitem, true); + //#NT#2023/11/03#Eric - begin + //#NT#Support IVOT_N12144_CO-148 -5 + if(((pPage->SelItem%PER_PAGE_NUM) == 0)&&(pMenu->Status == TMS_ON_ITEM)){ + lv_plugin_img_set_src(image_option_1_scr_uiflowmenucommonitem, LV_PLUGIN_IMG_ID_SF_NEXT2); + }else{ + if(pItem->ItemId == IDM_BATTERY_TYPE && 0){ + lv_plugin_img_set_src(image_option_1_scr_uiflowmenucommonitem, LV_PLUGIN_IMG_ID_SF_NEXT_DIS); + } else { + lv_plugin_img_set_src(image_option_1_scr_uiflowmenucommonitem, LV_PLUGIN_IMG_ID_SF_NEXT1); + } + } + //#NT#2023/11/03#Eric - end + if(pItem->ItemId == IDM_NETWORK_SELECTION) + lv_plugin_label_set_text(label_option_1_scr_uiflowmenucommonitem, IDS_END); + else if(pItem->ItemId == IDM_SENSITIVITY) + { + int tmp = get_dig_pir_level(); + if(tmp >= 0 && tmp <= 9) + { + lv_plugin_label_set_text(label_option_1_scr_uiflowmenucommonitem, LV_PLUGIN_STRING_ID_STRID_0 + tmp); + } + else + { + lv_plugin_label_set_text(label_option_1_scr_uiflowmenucommonitem, LV_PLUGIN_STRING_ID_STRID_0); + } + } + else if(pItem->ItemId == IDM_MAX_NUM_DAY) + { + #define SEND_MAX_NUM_UNLIMITED 0 + if (SEND_MAX_NUM_UNLIMITED == puiPara->SendMaxNum) + { + lv_plugin_label_set_text(label_option_1_scr_uiflowmenucommonitem, pOption->TextId); + } + else + { + lv_label_set_text_fmt(label_option_1_scr_uiflowmenucommonitem, "%d", puiPara->SendMaxNum); + } + } + else + lv_plugin_label_set_text(label_option_1_scr_uiflowmenucommonitem, pOption->TextId); + lv_plugin_label_update_font(label_option_1_scr_uiflowmenucommonitem, LV_OBJ_PART_MAIN); + lv_obj_set_hidden(container_option_1_scr_uiflowmenucommonitem, false); + }else if(i == 1){ + lv_obj_set_hidden(image_option_02_scr_uiflowmenucommonitem, true); + //#NT#2023/11/03#Eric - begin + //#NT#Support IVOT_N12144_CO-148 -5 + if(((pPage->SelItem%PER_PAGE_NUM) == 1)&&(pMenu->Status == TMS_ON_ITEM)){ + lv_plugin_img_set_src(image_option_2_scr_uiflowmenucommonitem, LV_PLUGIN_IMG_ID_SF_NEXT2); + }else{ + lv_plugin_img_set_src(image_option_2_scr_uiflowmenucommonitem, LV_PLUGIN_IMG_ID_SF_NEXT1); + } + //#NT#2023/11/03#Eric - end + lv_plugin_label_set_text(label_option_2_scr_uiflowmenucommonitem, pOption->TextId); + lv_plugin_label_update_font(label_option_2_scr_uiflowmenucommonitem, LV_OBJ_PART_MAIN); + lv_obj_set_hidden(container_option_2_scr_uiflowmenucommonitem, false); + }else if(i == 2){ + lv_obj_set_hidden(image_option_03_scr_uiflowmenucommonitem, true); + //#NT#2023/11/03#Eric - begin + //#NT#Support IVOT_N12144_CO-148 -5 + if(((pPage->SelItem%PER_PAGE_NUM) == 2)&&(pMenu->Status == TMS_ON_ITEM)){ + lv_plugin_img_set_src(image_option_3_scr_uiflowmenucommonitem, LV_PLUGIN_IMG_ID_SF_NEXT2); + }else{ + if((pItem->ItemId == IDM_CAMERA_FW_UPGRADE && is_camera_fw_upgrade() == NOT_UPGRADABLE) || + (pItem->ItemId == IDM_SEND_TYPE && is_send_type_disabel() == SEND_TYPE_DISABLE)){ + lv_plugin_img_set_src(image_option_3_scr_uiflowmenucommonitem, LV_PLUGIN_IMG_ID_SF_NEXT_DIS); + } else { + lv_plugin_img_set_src(image_option_3_scr_uiflowmenucommonitem, LV_PLUGIN_IMG_ID_SF_NEXT1); + } + } + //#NT#2023/11/03#Eric - end + lv_plugin_label_set_text(label_option_3_scr_uiflowmenucommonitem, pOption->TextId); + lv_plugin_label_update_font(label_option_3_scr_uiflowmenucommonitem, LV_OBJ_PART_MAIN); + lv_obj_set_hidden(container_option_3_scr_uiflowmenucommonitem, false); + }else if(i == 3){ + lv_obj_set_hidden(image_option_04_scr_uiflowmenucommonitem, true); + //#NT#2023/11/03#Eric - begin + //#NT#Support IVOT_N12144_CO-148 -5 + if(((pPage->SelItem%PER_PAGE_NUM) == 3)&&(pMenu->Status == TMS_ON_ITEM)){ + lv_plugin_img_set_src(image_option_4_scr_uiflowmenucommonitem, LV_PLUGIN_IMG_ID_SF_NEXT2); + }else{ + if(pItem->ItemId == IDM_MODULE_FW_UPGRADE && is_module_fw_upgrade() == NOT_UPGRADABLE){ + lv_plugin_img_set_src(image_option_4_scr_uiflowmenucommonitem, LV_PLUGIN_IMG_ID_SF_NEXT_DIS); + } else { + lv_plugin_img_set_src(image_option_4_scr_uiflowmenucommonitem, LV_PLUGIN_IMG_ID_SF_NEXT1); + } + } + //#NT#2023/11/03#Eric - end + lv_plugin_label_set_text(label_option_4_scr_uiflowmenucommonitem, pOption->TextId); + lv_plugin_label_update_font(label_option_4_scr_uiflowmenucommonitem, LV_OBJ_PART_MAIN); + lv_obj_set_hidden(container_option_4_scr_uiflowmenucommonitem, false); + }else if(i == 4){ + lv_obj_set_hidden(image_option_05_scr_uiflowmenucommonitem, true); + //#NT#2023/11/03#Eric - begin + //#NT#Support IVOT_N12144_CO-148 -5 + if(((pPage->SelItem%PER_PAGE_NUM) == 4)&&(pMenu->Status == TMS_ON_ITEM)){ + lv_plugin_img_set_src(image_option_5_scr_uiflowmenucommonitem, LV_PLUGIN_IMG_ID_SF_NEXT2); + }else{ + lv_plugin_img_set_src(image_option_5_scr_uiflowmenucommonitem, LV_PLUGIN_IMG_ID_SF_NEXT1); + } + //#NT#2023/11/03#Eric - end + lv_plugin_label_set_text(label_option_5_scr_uiflowmenucommonitem, pOption->TextId); + lv_plugin_label_update_font(label_option_5_scr_uiflowmenucommonitem, LV_OBJ_PART_MAIN); + lv_obj_set_hidden(container_option_5_scr_uiflowmenucommonitem, false); + } + }else{ + //#NT#2023/11/03#Eric - begin + //#NT#Support IVOT_N12144_CO-148 -5 + if((pPage->SelItem == i)&&(pMenu->Status == TMS_ON_ITEM)&&(PrevSel_Img)){ + lv_plugin_menu_select_item(menu_item, pPage->SelItem); + PrevSel_Img = false; + } + //#NT#2023/11/03#Eric - end + if(i == 0){ + lv_obj_set_hidden(container_option_1_scr_uiflowmenucommonitem, true); + lv_plugin_img_set_src(image_option_01_scr_uiflowmenucommonitem, img_id); + lv_obj_set_hidden(image_option_01_scr_uiflowmenucommonitem, false); + }else if(i == 1){ + lv_obj_set_hidden(container_option_2_scr_uiflowmenucommonitem, true); + lv_plugin_img_set_src(image_option_02_scr_uiflowmenucommonitem, img_id); + lv_obj_set_hidden(image_option_02_scr_uiflowmenucommonitem, false); + }else if(i == 2){ + lv_obj_set_hidden(container_option_3_scr_uiflowmenucommonitem, true); + lv_plugin_img_set_src(image_option_03_scr_uiflowmenucommonitem, img_id); + lv_obj_set_hidden(image_option_03_scr_uiflowmenucommonitem, false); + }else if(i == 3){ + lv_obj_set_hidden(container_option_4_scr_uiflowmenucommonitem, true); + lv_plugin_img_set_src(image_option_04_scr_uiflowmenucommonitem, img_id); + lv_obj_set_hidden(image_option_04_scr_uiflowmenucommonitem, false); + }else if(i == 4){ + lv_obj_set_hidden(container_option_5_scr_uiflowmenucommonitem, true); + lv_plugin_img_set_src(image_option_05_scr_uiflowmenucommonitem, img_id); + lv_obj_set_hidden(image_option_05_scr_uiflowmenucommonitem, false); + } + } + + + itemIndex++; +#endif + } + if(u_ItemSel){ + if(i == 0){ + lv_obj_set_hidden(image_option_01_scr_uiflowmenucommonitem, true); + lv_obj_set_hidden(container_option_1_scr_uiflowmenucommonitem, true); + }else if(i == 1){ + lv_obj_set_hidden(image_option_02_scr_uiflowmenucommonitem, true); + lv_obj_set_hidden(container_option_2_scr_uiflowmenucommonitem, true); + }else if(i == 2){ + lv_obj_set_hidden(image_option_03_scr_uiflowmenucommonitem, true); + lv_obj_set_hidden(container_option_3_scr_uiflowmenucommonitem, true); + }else if(i == 3){ + lv_obj_set_hidden(image_option_04_scr_uiflowmenucommonitem, true); + lv_obj_set_hidden(container_option_4_scr_uiflowmenucommonitem, true); + }else if(i == 4){ + lv_obj_set_hidden(image_option_05_scr_uiflowmenucommonitem, true); + lv_obj_set_hidden(container_option_5_scr_uiflowmenucommonitem, true); + } + } + + + } + +} + + +static void UIFlowMenuCommonItem_ScrOpen(lv_obj_t* obj) +{ + DBG_DUMP("UIFlowMenuCommonItem_ScrOpen\r\n"); + sf_set_keep_alive_time(MENU_SCREEN_GO_TO_WORK_MODE_TIME_S); + gBattery = sf_cardv_battery_value_get(); + + /*********************************************************************************** + * Add Menu Screen into group and set group to keypad indev + ***********************************************************************************/ + set_indev_keypad_group(obj); + + + /*********************************************************************************** + * create a plugin menu, the menu should contains below widgets : + * + * container (parent) + * + * btn or imgbtn (item1) + * label + img (item1's label and img) + * + * btn or imgbtn (item2) + * label + img (item2's label and img) + * + * .... + * + * those widgets styles and number of buttons are configured in the builder, + * btn's label or img is not mandatory + * + **********************************************************************************/ + if(menu_item == NULL){ + menu_item = lv_plugin_menu_create(obj, container_main_menu_scr_uiflowmenucommonitem); + lv_plugin_menu_set_wrap(menu_item, true); + } + + if(menu_tab == NULL){ + menu_tab = lv_plugin_menu_create(obj, container_tab_scr_uiflowmenucommonitem); + lv_plugin_menu_set_wrap(menu_tab, true); + } + + LV_MenuItem_OnOpen(obj); + + gMenuLuck = MENU_UNLUCK; + #if HUNTING_CAMERA_MCU == ENABLE + sf_set_menu_open(TRUE); + #endif + +} + +static void UIFlowMenuCommonItem_Key(lv_obj_t* obj, uint32_t key) +{ + TM_MENU* pMenu = TM_GetMenu(); + + #if HUNTING_CAMERA_MCU == ENABLE + sf_set_auto_off_time(0); + #endif + + printf("[UIFlowMenuCommonItem_Key]key: %d\n",key); + + + switch(key) + { + case LV_USER_KEY_UP: + + case LV_USER_KEY_DOWN: + { + printf("[UIFlowMenuCommonItem_Key]error input\n",key); + } + + case LV_USER_KEY_NEXT: + { + printf("[UIFlowMenuCommonItem_Key]>>>DOWN\n"); + LV_MenuItem_OnNext(obj); + break; + } + + case LV_USER_KEY_PREV: + { + printf("[UIFlowMenuCommonItem_Key]>>>UP\n"); + LV_MenuItem_OnPrev(obj); + break; + } + + case LV_KEY_LEFT: + { + printf("[UIFlowMenuCommonItem_Key]>>>LEFT\n"); + load_info_from_sf(); + LV_MenuItem_OnUp(obj); + break; + } + + case LV_KEY_RIGHT: + { + printf("[UIFlowMenuCommonItem_Key]>>>RIGHT\n"); + load_info_from_sf(); + LV_MenuItem_OnDown(obj); + break; + } + + // case LV_USER_KEY_SELECT: + // { + // CHKPNT; + // printf("========================== select.\n"); + // LV_MenuItem_OnSelected(obj); + // break; + // } + + case LV_KEY_ENTER: + { + if (pMenu->Status == TMS_ON_TAB) + { + lv_plugin_scr_close(obj, NULL); + } + else + { + LV_MenuItem_OnSelected(obj); + } + break; + } +#if HUNTING_CAMERA_MCU == ENABLE + case LV_USER_KEY_DATAREADY: + { + printf("[dataready] %s(%d)\n", __FUNCTION__, __LINE__); + sf_mcu_dataready_get(); + break; + } +#endif + } + +} + +static void UIFlowMenuCommonItem_ScrClose(lv_obj_t* obj) +{ + DBG_DUMP("%s\r\n", __func__); + sf_set_keep_alive_time(DEFAULT_GO_TO_WORK_MODE_TIME_S); + Save_MenuInfo(); + LV_MenuItem_OnClose(obj); + gMenuLuck = MENU_CLOSED; +} + + +static void UIFlowMenuCommonItem_ChildScrClose(lv_obj_t* obj,const LV_USER_EVENT_NVTMSG_DATA* msg) +{ + DBG_DUMP("%s\r\n", __func__); + + set_indev_keypad_group(obj); + if(msg){ + if(msg->event == NVTRET_ENTER_MENU){ + load_info_from_sf(); + TM_MENU* pMenu = TM_GetMenu(); + TM_PAGE *pPage; +// TM_ITEM *pItem; + + pPage = &pMenu->pPages[pMenu->SelPage]; +// pItem = &pPage->pItems[pPage->SelItem]; + pMenu->Status = TMS_ON_ITEM; + LV_MenuCommonItem_UpdateContent(pMenu); + //DBG_DUMP("%s SelItem:%d \r\n", __func__, pPage->SelItem); + lv_plugin_menu_select_item(menu_item, pPage->SelItem); + } + } + + gMenuLuck = MENU_UNLUCK; + #if HUNTING_CAMERA_MCU == ENABLE + sf_set_menu_open(FALSE); + #endif +} + + +void container_main_menu_callback(lv_obj_t* obj, lv_event_t event) +{ + DBG_DUMP("%s\r\n", __func__); +} + +void UIFlowMenuCommonItemEventCallback(lv_obj_t* obj, lv_event_t event) +{ + printf("[UIFlowMenuCommonItemEventCallback]event:%d\n",event); + switch(event) + { + case LV_PLUGIN_EVENT_SCR_OPEN: + { + load_info_from_sf(); + UIFlowMenuCommonItem_ScrOpen(obj); + break; + } + + case LV_PLUGIN_EVENT_SCR_CLOSE: + { + UIFlowMenuCommonItem_ScrClose(obj); + break; + } + + case LV_PLUGIN_EVENT_CHILD_SCR_CLOSE: + { + UIFlowMenuCommonItem_ChildScrClose(obj,(const LV_USER_EVENT_NVTMSG_DATA*)lv_event_get_data()); + + break; + } + +#if 0 + case LV_EVENT_PRESSED: + lv_plugin_menu_set_selected_item_pressed(menu_item); + break; + + case LV_EVENT_RELEASED: + lv_plugin_menu_set_selected_item_released(menu_item); + break; +#endif + + //case LV_EVENT_CLICKED: + case LV_KEY_ENTER: + CHKPNT; + LV_MenuItem_OnSelected(obj); + break; + + // case LV_EVENT_KEY: + case LV_USER_EVENT_KEY_RELEASE: + { + uint32_t* key = (uint32_t*)lv_event_get_data(); + + /* handle key event */ + UIFlowMenuCommonItem_Key(obj, *key); + + /*********************************************************************************** + * IMPORTANT!! + * + * calling lv_indev_wait_release to avoid duplicate event in long pressed key state + * the event will not be sent again until released + * + ***********************************************************************************/ + if(*key != LV_KEY_ENTER) + lv_indev_wait_release(lv_indev_get_act()); + break; + } + + default: + break; + + } + +} diff --git a/code/application/source/cardv/SrcCode/UIWnd/s530-ntk/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonOption/UIFlowMenuCommonOptionEventCallback.c b/code/application/source/cardv/SrcCode/UIWnd/s530-ntk/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonOption/UIFlowMenuCommonOptionEventCallback.c index 1e8f7b74f..aba6e9f62 100644 --- a/code/application/source/cardv/SrcCode/UIWnd/s530-ntk/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonOption/UIFlowMenuCommonOptionEventCallback.c +++ b/code/application/source/cardv/SrcCode/UIWnd/s530-ntk/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonOption/UIFlowMenuCommonOptionEventCallback.c @@ -360,14 +360,14 @@ static void LV_MenuCommonOption_UpdateContent(TM_MENU *pMenu) printf("\033[33m[LV_MenuCommonOption_UpdateContent] 3 \033[0m\n"); lv_plugin_menu_set_item_string_id(menu_option, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, pOption->TextId); - printf("[*x]s_SelOption: %d", s_SelOption); + printf("s_SelOption: %d", s_SelOption); //first init page add select icon if (s_SelOption == 100 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption) { s_SelOption = i + (Selindex * OPTION_PAGE_NUM); if (i == 1) { - printf("[*x]first init and is on\n"); + printf("first init and is on\n"); itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT2;//black > √ } else{ @@ -377,7 +377,7 @@ static void LV_MenuCommonOption_UpdateContent(TM_MENU *pMenu) } else if(s_SelOption == 100 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] != SelOption && i == 1){ - printf("[*x]first init and is off\n"); + printf("first init and is off\n"); switch (pItem->ItemId) { case IDM_DELAY:{} case IDM_OPERATING_TIME:{} @@ -400,31 +400,33 @@ static void LV_MenuCommonOption_UpdateContent(TM_MENU *pMenu) } else if (i == 1 && s_SelOption < 100) { - printf("[*x][LV_MenuCommonOption_UpdateContent] add > icon\n"); + //printf("[LV_MenuCommonOption_UpdateContent] add > icon\n"); switch (pItem->ItemId) { + case IDM_DELAY:{} case IDM_OPERATING_TIME:{} case IDM_DATE_AND_TIME:{} + case IDM_MAX_NUM_DAY:{} case IDM_PASSWORD:{} case IDM_CAMERA_NAME: { if (s_SelOption == 0 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption){ - printf("[*x][LV_MenuCommonOption_UpdateContent] add black > \n"); + printf("[LV_MenuCommonOption_UpdateContent] add black > \n"); itemIconId = LV_PLUGIN_IMG_ID_SF_NEXT2;//black > lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 288, 0); } else if (s_SelOption == 0 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] != SelOption){ - printf("[*x][LV_MenuCommonOption_UpdateContent] add white > \n"); + printf("[LV_MenuCommonOption_UpdateContent] add white > \n"); itemIconId = LV_PLUGIN_IMG_ID_SF_NEXT1;//white > lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 288, 0); } else if (s_SelOption == 1 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption){ - printf("[*x][LV_MenuCommonOption_UpdateContent] add black √ > \n"); + printf("[LV_MenuCommonOption_UpdateContent] add black √ > \n"); itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT2;//*black > √ lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 262, 0); } else{ - printf("[*x][LV_MenuCommonOption_UpdateContent] add white √ > \n"); + printf("[LV_MenuCommonOption_UpdateContent] add white √ > \n"); itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT1;//*white > √ lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 262, 0); } @@ -433,7 +435,7 @@ static void LV_MenuCommonOption_UpdateContent(TM_MENU *pMenu) } default: { - printf("[*x][LV_MenuCommonOption_UpdateContent] add √ \n"); + printf("[LV_MenuCommonOption_UpdateContent] add √ \n"); itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED;//√ lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 272, 0); if (s_SelOption == 1) @@ -450,7 +452,6 @@ static void LV_MenuCommonOption_UpdateContent(TM_MENU *pMenu) lv_plugin_menu_set_item_hidden(menu_option, i, false); if (enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption){ - printf("[*x]select item\n"); lv_plugin_menu_select_item(menu_option, i); } @@ -578,6 +579,7 @@ static void LV_MenuOption_OnNext(lv_obj_t* obj) // DBG_DUMP("%s SelItem=%d\r\n", __func__,pPage->SelItem); // DBG_DUMP("%s Count=%d\r\n", __func__,pItem->Count); // DBG_DUMP("%s SelOption=%d\r\n", __func__,SelOption); + SelOption++; if (SelOption >= pItem->Count){ // Close current UI Window now @@ -605,6 +607,7 @@ static void LV_MenuOption_OnPrev(lv_obj_t* obj) pPage = &pMenu->pPages[pMenu->SelPage]; pItem = &pPage->pItems[pPage->SelItem]; SelOption = SysGetFlag(pItem->SysFlag); + if (SelOption == 0) { // Close current UI Window now //SysSetFlag(pItem->SysFlag, PrevOption); @@ -1017,8 +1020,42 @@ static void CommondOptionKeyCallback(lv_obj_t* obj, uint32_t* key) pPage = &pMenu->pPages[pMenu->SelPage]; pItem = &pPage->pItems[pPage->SelItem]; UINT16 itemID = pItem->ItemId; - printf("\033[33m[UIFlowMenuCommonOptionEventCallback]LV_USER_EVENT_KEY_RELEASE key:%d\033[0m\n", *key); + printf("\033[33m[CommondOptionKeyCallback]LV_USER_EVENT_KEY_RELEASE key:%d\033[0m\n", *key); /* handle key event */ + switch(*key) + { + case LV_USER_KEY_NEXT: + case LV_USER_KEY_DOWN: + { + printf("[CommondOptionKeyCallback]>>>DOWN\n"); + break; + } + + case LV_USER_KEY_PREV: + case LV_USER_KEY_UP: + { + printf("[CommondOptionKeyCallback]>>>UP\n"); + break; + } + + case LV_KEY_LEFT: + { + printf("[CommondOptionKeyCallback]>>>LEFT\n"); + break; + } + + case LV_KEY_RIGHT: + { + printf("[CommondOptionKeyCallback]>>>RIGHT\n"); + break; + } + case LV_KEY_ENTER: + { + printf("[CommondOptionKeyCallback]>>>ENTER\n"); + break; + } + } + switch(itemID) { case IDM_NETWORK_SELECTION: