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;
}
extern int is_menu_screen_luck(void);
void UserMainProc(void)
{
TM_BOOT_BEGIN("flow", "preboot");
#define PRESSING_EVENT_INTERVAL_MS 500
static unsigned long leftKeyPressingTime_ms = 0;
//////////////////////////////////////////////////////////////
UserMainProc_Init();
@ -599,6 +601,7 @@ void UserMainProc(void)
}
else{
g_keyboard_pressed = false;
leftKeyPressingTime_ms = 0;
}
//call input task immediately for read key state
if(indev_keypad){
@ -629,6 +632,18 @@ void UserMainProc(void)
}
if(paramArray[0] == NVTEVT_KEY_CONTINUE){
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(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
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;
}
#if 0
static lv_obj_t* container_option1 = NULL;
static lv_obj_t* container_option2 = NULL;
@ -317,6 +328,10 @@ static void LV_MenuItem_OnSelected(lv_obj_t* obj)
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
@ -755,6 +770,7 @@ static void UIFlowMenuCommonItem_ScrOpen(lv_obj_t* obj)
LV_MenuItem_OnOpen(obj);
gMenuLuck = MENU_UNLUCK;
#if HUNTING_CAMERA_MCU == ENABLE
// sf_set_menu_open(TRUE);
#endif
@ -842,6 +858,7 @@ static void UIFlowMenuCommonItem_ScrClose(lv_obj_t* obj)
DBG_DUMP("%s\r\n", __func__);
Save_MenuInfo();
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);
}

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)
{
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:
{
printf("\033[33m[UIFlowMenuCommonOptionEventCallback]LV_PLUGIN_EVENT_SCR_CLOSE\033[0m\n");
uint32_t key = LV_KEY_ENTER;
CommondOptionCloseSencondPage(obj, &key);
isSetting = 0;
UIFlowMenuCommonOption_ScrClose(obj);
break;
@ -885,120 +1127,121 @@ void UIFlowMenuCommonOptionEventCallback(lv_obj_t* obj, lv_event_t event)
case LV_USER_EVENT_KEY_RELEASE:
{
uint32_t* key = (uint32_t*)lv_event_get_data();
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;
CommondOptionKeyCallback(obj, key);
// 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_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_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;
}
// 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;
// }
KeyPressingTimeMs = 0;