Fixed setting screen bug about left key long pressing.

This commit is contained in:
xiaojiazhu 2023-11-21 16:29:35 +08:00
parent 182c6ea68a
commit 08de3740d2
3 changed files with 390 additions and 114 deletions

View File

@ -523,10 +523,12 @@ bool pointer_read(lv_indev_drv_t * indev_drv, lv_indev_data_t * data)
/*Return `false` because we are not buffering and no more data to read*/ /*Return `false` because we are not buffering and no more data to read*/
return false; return false;
} }
extern int is_menu_screen_luck(void);
void UserMainProc(void) void UserMainProc(void)
{ {
TM_BOOT_BEGIN("flow", "preboot"); TM_BOOT_BEGIN("flow", "preboot");
#define PRESSING_EVENT_INTERVAL_MS 500
static unsigned long leftKeyPressingTime_ms = 0;
////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////
UserMainProc_Init(); UserMainProc_Init();
@ -599,6 +601,7 @@ void UserMainProc(void)
} }
else{ else{
g_keyboard_pressed = false; g_keyboard_pressed = false;
leftKeyPressingTime_ms = 0;
} }
//call input task immediately for read key state //call input task immediately for read key state
if(indev_keypad){ if(indev_keypad){
@ -629,6 +632,18 @@ void UserMainProc(void)
} }
if(paramArray[0] == NVTEVT_KEY_CONTINUE){ if(paramArray[0] == NVTEVT_KEY_CONTINUE){
uint32_t nvt_user_key = lv_user_keymap_find(evt); uint32_t nvt_user_key = lv_user_keymap_find(evt);
#define MENU_UNLUCK 0
if (LV_USER_KEY_LEFT == nvt_user_key && MENU_UNLUCK == is_menu_screen_luck())
{
printf(" check left key continue.\n");
leftKeyPressingTime_ms += PRESSING_EVENT_INTERVAL_MS;
#define RETURN_TO_PHOTO_SCREEN (2 * 1000)
if (leftKeyPressingTime_ms >= RETURN_TO_PHOTO_SCREEN)
{
Ux_PostEvent(NVTEVT_SYSTEM_MODE, 1, PRIMARY_MODE_PHOTO);
leftKeyPressingTime_ms = 0;
}
}
if(nvt_user_key != LV_USER_KEY_UNKNOWN){ if(nvt_user_key != LV_USER_KEY_UNKNOWN){
if(indev_keypad && indev_keypad->group){ if(indev_keypad && indev_keypad->group){

View File

@ -22,7 +22,18 @@ static lv_obj_t* menu_item = NULL;
//#NT#Support IVOT_N12144_CO-148 -5 //#NT#Support IVOT_N12144_CO-148 -5
BOOL PrevSel_Img = false; BOOL PrevSel_Img = false;
//#NT#2023/11/03#Eric - end //#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;
}
#if 0 #if 0
static lv_obj_t* container_option1 = NULL; static lv_obj_t* container_option1 = NULL;
static lv_obj_t* container_option2 = NULL; static lv_obj_t* container_option2 = NULL;
@ -317,6 +328,10 @@ static void LV_MenuItem_OnSelected(lv_obj_t* obj)
return; return;
} }
#endif #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) \ if((pItem->ItemId == IDM_CHECK_IN_PHOTO) || (pItem->ItemId == IDM_SD_LOOP) \
//#NT#2023/11/03#Eric - begin //#NT#2023/11/03#Eric - begin
//#NT#Support IVOT_N12144_CO-148 -6 //#NT#Support IVOT_N12144_CO-148 -6
@ -755,6 +770,7 @@ static void UIFlowMenuCommonItem_ScrOpen(lv_obj_t* obj)
LV_MenuItem_OnOpen(obj); LV_MenuItem_OnOpen(obj);
gMenuLuck = MENU_UNLUCK;
#if HUNTING_CAMERA_MCU == ENABLE #if HUNTING_CAMERA_MCU == ENABLE
// sf_set_menu_open(TRUE); // sf_set_menu_open(TRUE);
#endif #endif
@ -842,6 +858,7 @@ static void UIFlowMenuCommonItem_ScrClose(lv_obj_t* obj)
DBG_DUMP("%s\r\n", __func__); DBG_DUMP("%s\r\n", __func__);
Save_MenuInfo(); Save_MenuInfo();
LV_MenuItem_OnClose(obj); LV_MenuItem_OnClose(obj);
gMenuLuck = MENU_CLOSED;
} }
@ -865,6 +882,7 @@ static void UIFlowMenuCommonItem_ChildScrClose(lv_obj_t* obj,const LV_USER_EVENT
} }
} }
gMenuLuck = MENU_UNLUCK;
// sf_set_menu_open(FALSE); // sf_set_menu_open(FALSE);
} }

View File

@ -788,7 +788,247 @@ static void UIFlowMenuCommonOption_Key(lv_obj_t* obj, uint32_t key)
} }
} }
static void CommondOptionCloseSencondPage(lv_obj_t* obj, uint32_t* key)
{
TM_MENU* pMenu = TM_GetMenu();
TM_PAGE* pPage;
TM_ITEM* pItem;
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);
/* handle key event */
switch(itemID)
{
case IDM_NETWORK_SELECTION:
// Option_Network_Selection_Key(obj, *key);
break;
case IDM_QR_PICTURE:
// UIFlowMenuCommonOption_Key(obj, *key);
break;
case IDM_PASSWORD:
if(isSetting)
{
Option_Password_Key(obj, *key);
}
else
{
// UIFlowMenuCommonOption_Key(obj, *key);
}
break;
case IDM_CAMERA_INFO:
// Option_CAMERA_INFO_Key(obj, *key);
break;
case IDM_CAMERA_NAME:
if(isSetting)
{
Option_Camera_Name_Key(obj, *key);
}
else
{
// UIFlowMenuCommonOption_Key(obj, *key);
}
break;
case IDM_CAMERA_MODE:
case IDM_IMAGE_SIZE:
case IDM_VIDEO_SIZE:
case IDM_VIDEA_LENGTH:
case IDM_FLASH_POWER:
// UIFlowMenuCommonOption_Key(obj, *key);
break;
case IDM_SENSITIVITY:
// Option_Sensitivity_Key(obj, *key);
break;
case IDM_DELAY:
if(isSetting)
{
Option_Delay_Key(obj, *key);
}
else
{
// UIFlowMenuCommonOption_Key(obj, *key);
}
break;
case IDM_OPERATING_TIME:
if(isSetting)
{
Option_Operating_Time_Key(obj, *key);
}
else
{
// UIFlowMenuCommonOption_Key(obj, *key);
}
break;
case IDM_FORMAT_SD:
case IDM_DATE_AND_TIME:
if(isSetting)
{
Option_DateTime_Key(obj, *key);
}
else
{
// UIFlowMenuCommonOption_Key(obj, *key);
}
break;
case IDM_MAX_NUM_DAY:
if(isSetting)
{
Option_MaxNum_Key(obj, *key);
}
else
{
// UIFlowMenuCommonOption_Key(obj, *key);
}
break;
case IDM_SETTINGS_CHECK:
// UIFlowMenuCommonOption_Key(obj, *key);
break;
case IDM_SEND_TYPE:
if(isSetting)
{
Option_send_time_Key(obj, *key);
}
else
{
// UIFlowMenuCommonOption_Key(obj, *key);
}
break;
case IDM_CHECK_IN_PHOTO:
case IDM_GPS:
// UIFlowMenuCommonOption_Key(obj, *key);
break;
case IDM_BATTERY_TYPE:
case IDM_SD_LOOP:
case IDM_CAMERA_FW_UPGRADE:
case IDM_MODULE_FW_UPGRADE:
case IDM_RESET:
// UIFlowMenuCommonOption_Key(obj, *key);
break;
default:
break;
}
isSetting = 0;
}
static void CommondOptionKeyCallback(lv_obj_t* obj, uint32_t* key)
{
TM_MENU* pMenu = TM_GetMenu();
TM_PAGE* pPage;
TM_ITEM* pItem;
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);
/* handle key event */
switch(itemID)
{
case IDM_NETWORK_SELECTION:
Option_Network_Selection_Key(obj, *key);
break;
case IDM_QR_PICTURE:
UIFlowMenuCommonOption_Key(obj, *key);
break;
case IDM_PASSWORD:
if(isSetting)
{
Option_Password_Key(obj, *key);
}
else
{
UIFlowMenuCommonOption_Key(obj, *key);
}
break;
case IDM_CAMERA_INFO:
Option_CAMERA_INFO_Key(obj, *key);
break;
case IDM_CAMERA_NAME:
if(isSetting)
{
Option_Camera_Name_Key(obj, *key);
}
else
{
UIFlowMenuCommonOption_Key(obj, *key);
}
break;
case IDM_CAMERA_MODE:
case IDM_IMAGE_SIZE:
case IDM_VIDEO_SIZE:
case IDM_VIDEA_LENGTH:
case IDM_FLASH_POWER:
UIFlowMenuCommonOption_Key(obj, *key);
break;
case IDM_SENSITIVITY:
Option_Sensitivity_Key(obj, *key);
break;
case IDM_DELAY:
if(isSetting)
{
Option_Delay_Key(obj, *key);
}
else
{
UIFlowMenuCommonOption_Key(obj, *key);
}
break;
case IDM_OPERATING_TIME:
if(isSetting)
{
Option_Operating_Time_Key(obj, *key);
}
else
{
UIFlowMenuCommonOption_Key(obj, *key);
}
break;
case IDM_FORMAT_SD:
case IDM_DATE_AND_TIME:
if(isSetting)
{
Option_DateTime_Key(obj, *key);
}
else
{
UIFlowMenuCommonOption_Key(obj, *key);
}
break;
case IDM_MAX_NUM_DAY:
if(isSetting)
{
Option_MaxNum_Key(obj, *key);
}
else
{
UIFlowMenuCommonOption_Key(obj, *key);
}
break;
case IDM_SETTINGS_CHECK:
UIFlowMenuCommonOption_Key(obj, *key);
break;
case IDM_SEND_TYPE:
if(isSetting)
{
Option_send_time_Key(obj, *key);
}
else
{
UIFlowMenuCommonOption_Key(obj, *key);
}
break;
case IDM_CHECK_IN_PHOTO:
case IDM_GPS:
UIFlowMenuCommonOption_Key(obj, *key);
break;
case IDM_BATTERY_TYPE:
case IDM_SD_LOOP:
case IDM_CAMERA_FW_UPGRADE:
case IDM_MODULE_FW_UPGRADE:
case IDM_RESET:
UIFlowMenuCommonOption_Key(obj, *key);
break;
default:
break;
}
}
void UIFlowMenuCommonOptionEventCallback(lv_obj_t* obj, lv_event_t event) void UIFlowMenuCommonOptionEventCallback(lv_obj_t* obj, lv_event_t event)
{ {
TM_MENU* pMenu = TM_GetMenu(); TM_MENU* pMenu = TM_GetMenu();
@ -811,6 +1051,8 @@ void UIFlowMenuCommonOptionEventCallback(lv_obj_t* obj, lv_event_t event)
case LV_PLUGIN_EVENT_SCR_CLOSE: case LV_PLUGIN_EVENT_SCR_CLOSE:
{ {
printf("\033[33m[UIFlowMenuCommonOptionEventCallback]LV_PLUGIN_EVENT_SCR_CLOSE\033[0m\n"); printf("\033[33m[UIFlowMenuCommonOptionEventCallback]LV_PLUGIN_EVENT_SCR_CLOSE\033[0m\n");
uint32_t key = LV_KEY_ENTER;
CommondOptionCloseSencondPage(obj, &key);
isSetting = 0; isSetting = 0;
UIFlowMenuCommonOption_ScrClose(obj); UIFlowMenuCommonOption_ScrClose(obj);
break; break;
@ -885,120 +1127,121 @@ void UIFlowMenuCommonOptionEventCallback(lv_obj_t* obj, lv_event_t event)
case LV_USER_EVENT_KEY_RELEASE: case LV_USER_EVENT_KEY_RELEASE:
{ {
uint32_t* key = (uint32_t*)lv_event_get_data(); uint32_t* key = (uint32_t*)lv_event_get_data();
printf("\033[33m[UIFlowMenuCommonOptionEventCallback]LV_USER_EVENT_KEY_RELEASE key:%d\033[0m\n", *key); CommondOptionKeyCallback(obj, key);
/* handle key event */ // printf("\033[33m[UIFlowMenuCommonOptionEventCallback]LV_USER_EVENT_KEY_RELEASE key:%d\033[0m\n", *key);
switch(itemID) // /* handle key event */
{ // switch(itemID)
case IDM_NETWORK_SELECTION: // {
Option_Network_Selection_Key(obj, *key); // case IDM_NETWORK_SELECTION:
break; // Option_Network_Selection_Key(obj, *key);
case IDM_QR_PICTURE: // break;
UIFlowMenuCommonOption_Key(obj, *key); // case IDM_QR_PICTURE:
break; // UIFlowMenuCommonOption_Key(obj, *key);
case IDM_PASSWORD: // break;
if(isSetting) // case IDM_PASSWORD:
{ // if(isSetting)
Option_Password_Key(obj, *key); // {
} // Option_Password_Key(obj, *key);
else // }
{ // else
UIFlowMenuCommonOption_Key(obj, *key); // {
} // UIFlowMenuCommonOption_Key(obj, *key);
break; // }
case IDM_CAMERA_INFO: // break;
Option_CAMERA_INFO_Key(obj, *key); // case IDM_CAMERA_INFO:
break; // Option_CAMERA_INFO_Key(obj, *key);
case IDM_CAMERA_NAME: // break;
if(isSetting) // case IDM_CAMERA_NAME:
{ // if(isSetting)
Option_Camera_Name_Key(obj, *key); // {
} // Option_Camera_Name_Key(obj, *key);
else // }
{ // else
UIFlowMenuCommonOption_Key(obj, *key); // {
} // UIFlowMenuCommonOption_Key(obj, *key);
break; // }
// break;
case IDM_CAMERA_MODE: // case IDM_CAMERA_MODE:
case IDM_IMAGE_SIZE: // case IDM_IMAGE_SIZE:
case IDM_VIDEO_SIZE: // case IDM_VIDEO_SIZE:
case IDM_VIDEA_LENGTH: // case IDM_VIDEA_LENGTH:
case IDM_FLASH_POWER: // case IDM_FLASH_POWER:
UIFlowMenuCommonOption_Key(obj, *key); // UIFlowMenuCommonOption_Key(obj, *key);
break; // break;
case IDM_SENSITIVITY: // case IDM_SENSITIVITY:
Option_Sensitivity_Key(obj, *key); // Option_Sensitivity_Key(obj, *key);
break; // break;
case IDM_DELAY: // case IDM_DELAY:
if(isSetting) // if(isSetting)
{ // {
Option_Delay_Key(obj, *key); // Option_Delay_Key(obj, *key);
} // }
else // else
{ // {
UIFlowMenuCommonOption_Key(obj, *key); // UIFlowMenuCommonOption_Key(obj, *key);
} // }
break; // break;
case IDM_OPERATING_TIME: // case IDM_OPERATING_TIME:
if(isSetting) // if(isSetting)
{ // {
Option_Operating_Time_Key(obj, *key); // Option_Operating_Time_Key(obj, *key);
} // }
else // else
{ // {
UIFlowMenuCommonOption_Key(obj, *key); // UIFlowMenuCommonOption_Key(obj, *key);
} // }
break; // break;
case IDM_FORMAT_SD: // case IDM_FORMAT_SD:
case IDM_DATE_AND_TIME: // case IDM_DATE_AND_TIME:
if(isSetting) // if(isSetting)
{ // {
Option_DateTime_Key(obj, *key); // Option_DateTime_Key(obj, *key);
} // }
else // else
{ // {
UIFlowMenuCommonOption_Key(obj, *key); // UIFlowMenuCommonOption_Key(obj, *key);
} // }
break; // break;
case IDM_MAX_NUM_DAY: // case IDM_MAX_NUM_DAY:
if(isSetting) // if(isSetting)
{ // {
Option_MaxNum_Key(obj, *key); // Option_MaxNum_Key(obj, *key);
} // }
else // else
{ // {
UIFlowMenuCommonOption_Key(obj, *key); // UIFlowMenuCommonOption_Key(obj, *key);
} // }
break; // break;
case IDM_SETTINGS_CHECK: // case IDM_SETTINGS_CHECK:
UIFlowMenuCommonOption_Key(obj, *key); // UIFlowMenuCommonOption_Key(obj, *key);
break; // break;
case IDM_SEND_TYPE: // case IDM_SEND_TYPE:
if(isSetting) // if(isSetting)
{ // {
Option_send_time_Key(obj, *key); // Option_send_time_Key(obj, *key);
} // }
else // else
{ // {
UIFlowMenuCommonOption_Key(obj, *key); // UIFlowMenuCommonOption_Key(obj, *key);
} // }
break; // break;
case IDM_CHECK_IN_PHOTO: // case IDM_CHECK_IN_PHOTO:
case IDM_GPS: // case IDM_GPS:
UIFlowMenuCommonOption_Key(obj, *key); // UIFlowMenuCommonOption_Key(obj, *key);
break; // break;
case IDM_BATTERY_TYPE: // case IDM_BATTERY_TYPE:
case IDM_SD_LOOP: // case IDM_SD_LOOP:
case IDM_CAMERA_FW_UPGRADE: // case IDM_CAMERA_FW_UPGRADE:
case IDM_MODULE_FW_UPGRADE: // case IDM_MODULE_FW_UPGRADE:
case IDM_RESET: // case IDM_RESET:
UIFlowMenuCommonOption_Key(obj, *key); // UIFlowMenuCommonOption_Key(obj, *key);
break; // break;
default: // default:
break; // break;
} // }
KeyPressingTimeMs = 0; KeyPressingTimeMs = 0;