完善Delay功能及UI

This commit is contained in:
zyj 2023-11-09 14:10:23 +08:00
parent 3ca10087ad
commit 5c14360b7a
3 changed files with 130 additions and 24 deletions

View File

@ -503,6 +503,8 @@ void Option_Sensitivity_Key(lv_obj_t* obj, uint32_t key)
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
static int DelayIndex = 0; static int DelayIndex = 0;
static lv_obj_t* DelayMatrixObj = NULL; static lv_obj_t* DelayMatrixObj = NULL;
static lv_obj_t* DelayImage = NULL;
static lv_obj_t* DelayLabel = NULL;
static char DelayHHBuf[3] = "00"; static char DelayHHBuf[3] = "00";
static char DelayMMBuf[3] = "00"; static char DelayMMBuf[3] = "00";
static char DelaySSBuf[3] = "00"; static char DelaySSBuf[3] = "00";
@ -518,29 +520,36 @@ static const char* DelayMap[6] =
static void update_Delay_msg(lv_obj_t* obj) static void update_Delay_msg(lv_obj_t* obj)
{ {
UIMenuStoreInfo *puiPara = sf_ui_para_get(); if(DelayMatrixObj == NULL || DelayImage == NULL)
{
DBG_ERR("Delay component is not initialized");
return;
}
UIMenuStoreInfo *puiPara = sf_ui_para_get();
snprintf(DelayHHBuf, 3, "%02d", puiPara->PirDelayTime.Hour); snprintf(DelayHHBuf, 3, "%02d", puiPara->PirDelayTime.Hour);
snprintf(DelayMMBuf, 3, "%02d", puiPara->PirDelayTime.Min); snprintf(DelayMMBuf, 3, "%02d", puiPara->PirDelayTime.Min);
snprintf(DelaySSBuf, 3, "%02d", puiPara->PirDelayTime.Sec); snprintf(DelaySSBuf, 3, "%02d", puiPara->PirDelayTime.Sec);
lv_btnmatrix_set_map(DelayMatrixObj, DelayMap);
lv_btnmatrix_set_focused_btn(DelayMatrixObj, DelayIndex); lv_btnmatrix_set_focused_btn(DelayMatrixObj, DelayIndex);
lv_btnmatrix_set_map(DelayMatrixObj, DelayMap);
lv_obj_set_x(DelayImage, (96 + ((32 + 16) / 2) * DelayIndex));
} }
void show_Delay_page(lv_obj_t* obj) void show_Delay_page(lv_obj_t* obj)
{ {
if(DelayMatrixObj != NULL || DelayImage != NULL || DelayLabel != NULL)
{
DBG_ERR("Operating Time component is initialized");
return;
}
DelayIndex = 0; DelayIndex = 0;
init_Matrix_style(); init_Matrix_style();
UIMenuStoreInfo *puiPara = sf_ui_para_get(); UIMenuStoreInfo *puiPara = sf_ui_para_get();
// if(!puiPara->PirDelaySwitch)
// {
// puiPara->PirDelayTime.Hour = 0;
// puiPara->PirDelayTime.Min = 0;
// puiPara->PirDelayTime.Sec = 30;
// }
snprintf(DelayHHBuf, 3, "%02d", puiPara->PirDelayTime.Hour); snprintf(DelayHHBuf, 3, "%02d", puiPara->PirDelayTime.Hour);
snprintf(DelayMMBuf, 3, "%02d", puiPara->PirDelayTime.Min); snprintf(DelayMMBuf, 3, "%02d", puiPara->PirDelayTime.Min);
snprintf(DelaySSBuf, 3, "%02d", puiPara->PirDelayTime.Sec); snprintf(DelaySSBuf, 3, "%02d", puiPara->PirDelayTime.Sec);
@ -549,41 +558,65 @@ void show_Delay_page(lv_obj_t* obj)
lv_obj_set_hidden(DelayMatrixObj, false); lv_obj_set_hidden(DelayMatrixObj, false);
lv_obj_set_click(DelayMatrixObj, true); lv_obj_set_click(DelayMatrixObj, true);
lv_obj_set_drag(DelayMatrixObj, false); lv_obj_set_drag(DelayMatrixObj, false);
lv_obj_set_pos(DelayMatrixObj, 92, 58); lv_obj_set_pos(DelayMatrixObj, 96, 108);
lv_obj_set_size(DelayMatrixObj, 136, 140); lv_obj_set_size(DelayMatrixObj, 128, 24);
lv_btnmatrix_set_map(DelayMatrixObj, DelayMap); lv_btnmatrix_set_map(DelayMatrixObj, DelayMap);
lv_btnmatrix_set_one_check(DelayMatrixObj, true); lv_btnmatrix_set_one_check(DelayMatrixObj, true);
lv_btnmatrix_set_align(DelayMatrixObj, LV_LABEL_ALIGN_CENTER); lv_btnmatrix_set_align(DelayMatrixObj, LV_LABEL_ALIGN_CENTER);
lv_btnmatrix_set_focused_btn(DelayMatrixObj,0); lv_btnmatrix_set_focused_btn(DelayMatrixObj,0);
lv_btnmatrix_set_one_check(DelayMatrixObj, false); lv_btnmatrix_set_one_check(DelayMatrixObj, false);
lv_btnmatrix_set_btn_width(DelayMatrixObj, 0, 2);
lv_btnmatrix_set_btn_width(DelayMatrixObj, 2, 2);
lv_btnmatrix_set_btn_width(DelayMatrixObj, 4, 2);
lv_obj_add_style(DelayMatrixObj, 0, &gMatrixStylebg); lv_obj_add_style(DelayMatrixObj, 0, &gMatrixStylebg);
lv_obj_add_style(DelayMatrixObj, 1, &gMatrixStylebtn); lv_obj_add_style(DelayMatrixObj, 1, &gMatrixStylebtn);
DelayImage = lv_img_create(obj, NULL);
lv_obj_set_hidden(DelayImage, false);
lv_obj_set_click(DelayImage, false);
lv_obj_set_drag(DelayImage, false);
lv_obj_set_pos(DelayImage, 96, 78);
lv_obj_set_size(DelayImage, 32, 88);
lv_img_set_src(DelayImage, &sf_pwd_down_up);
DelayLabel = lv_label_create(obj, NULL);
lv_label_set_text(DelayLabel, "HH : MM : SS");
lv_label_set_align(DelayLabel, LV_LABEL_ALIGN_CENTER);
lv_obj_set_pos(DelayLabel, 100, 155);
lv_obj_set_size(DelayLabel, 128, 21);
lv_obj_add_style(DelayLabel, 0, &gStyleLabel0);
} }
void hidde_Delay_page(void) void hidde_Delay_page(void)
{ {
printf("[%s]\n", __FUNCTION__);
DelayIndex = 0;
if(DelayMatrixObj) if(DelayMatrixObj)
{ {
lv_obj_del(DelayMatrixObj); lv_obj_del(DelayMatrixObj);
DelayMatrixObj = NULL;
}
if(DelayImage)
{
lv_obj_del(DelayImage);
DelayImage = NULL;
}
if(DelayLabel)
{
lv_obj_del(DelayLabel);
DelayLabel = NULL;
} }
} }
void Option_Delay_Key(lv_obj_t* obj, uint32_t key) void Option_Delay_Key(lv_obj_t* obj, uint32_t key)
{ {
if(DelayMatrixObj == NULL) printf("[%s]key:%d\n", __FUNCTION__, key);
{
printf("DelayMatrixObj is NULL");
return;
}
// char result[2];
UIMenuStoreInfo *puiPara = sf_ui_para_get(); UIMenuStoreInfo *puiPara = sf_ui_para_get();
printf("key:%d\n",key);
switch(key) switch(key)
{ {
case LV_USER_KEY_NEXT: case LV_USER_KEY_NEXT:
printf("\033[33m[Option_Sensitivity_Key]s\033[0m\n");
if(DelayIndex == 0) if(DelayIndex == 0)
{ {
if(puiPara->PirDelayTime.Hour > 0 && puiPara->PirDelayTime.Hour <= 23) if(puiPara->PirDelayTime.Hour > 0 && puiPara->PirDelayTime.Hour <= 23)
@ -610,7 +643,6 @@ void Option_Delay_Key(lv_obj_t* obj, uint32_t key)
update_Delay_msg(obj); update_Delay_msg(obj);
break; break;
case LV_USER_KEY_PREV: case LV_USER_KEY_PREV:
printf("\033[33m[Option_Sensitivity_Key]w\033[0m\n");
if(DelayIndex == 0) if(DelayIndex == 0)
{ {
if(puiPara->PirDelayTime.Hour >= 23) if(puiPara->PirDelayTime.Hour >= 23)
@ -637,17 +669,14 @@ void Option_Delay_Key(lv_obj_t* obj, uint32_t key)
update_Delay_msg(obj); update_Delay_msg(obj);
break; break;
case LV_USER_KEY_LEFT: case LV_USER_KEY_LEFT:
printf("\033[33m[Option_Sensitivity_Key]a\033[0m\n");
DelayIndex = (DelayIndex - 2 + 6) % 6; DelayIndex = (DelayIndex - 2 + 6) % 6;
update_Delay_msg(obj); update_Delay_msg(obj);
break; break;
case LV_USER_KEY_RIGHT: case LV_USER_KEY_RIGHT:
printf("\033[33m[Option_Sensitivity_Key]d\033[0m\n");
DelayIndex = (DelayIndex + 2) % 6; DelayIndex = (DelayIndex + 2) % 6;
update_Delay_msg(obj); update_Delay_msg(obj);
break; break;
case LV_KEY_ENTER: case LV_KEY_ENTER:
printf("\033[33m[Option_Sensitivity_Key]SELECT\033[0m\n");
puiPara->PirDelaySwitch = 1; puiPara->PirDelaySwitch = 1;
lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0)); lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0));
hidde_Delay_page(); hidde_Delay_page();
@ -657,6 +686,77 @@ void Option_Delay_Key(lv_obj_t* obj, uint32_t key)
} }
} }
void Option_Delay_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(DelayIndex == 0)
{
if(puiPara->PirDelayTime.Hour > 0 && puiPara->PirDelayTime.Hour <= 23)
puiPara->PirDelayTime.Hour--;
else
puiPara->PirDelayTime.Hour = 23;
}
else if(DelayIndex == 2)
{
if(puiPara->PirDelayTime.Min > 0 && puiPara->PirDelayTime.Min <= 59)
puiPara->PirDelayTime.Min--;
else
puiPara->PirDelayTime.Min = 59;
}
else if(DelayIndex == 4)
{
if(puiPara->PirDelayTime.Sec > 0 && puiPara->PirDelayTime.Sec <= 59)
puiPara->PirDelayTime.Sec--;
else
puiPara->PirDelayTime.Sec = 59;
}
if(puiPara->PirDelayTime.Min == 0 && (puiPara->PirDelayTime.Sec >= 0 && puiPara->PirDelayTime.Sec < 5))
puiPara->PirDelayTime.Sec = 59;
update_Delay_msg(obj);
break;
case LV_USER_KEY_PREV:
if(DelayIndex == 0)
{
if(puiPara->PirDelayTime.Hour >= 23)
puiPara->PirDelayTime.Hour = 0;
else
puiPara->PirDelayTime.Hour++;
}
else if(DelayIndex == 2)
{
if(puiPara->PirDelayTime.Min >= 59)
puiPara->PirDelayTime.Min = 0;
else
puiPara->PirDelayTime.Min++;
}
else if(DelayIndex == 4)
{
if(puiPara->PirDelayTime.Sec == 59)
puiPara->PirDelayTime.Sec = 0;
else
puiPara->PirDelayTime.Sec++;
}
if(puiPara->PirDelayTime.Min == 0 && (puiPara->PirDelayTime.Sec >= 0 && puiPara->PirDelayTime.Sec < 5))
puiPara->PirDelayTime.Sec = 5;
update_Delay_msg(obj);
break;
case LV_USER_KEY_LEFT:
break;
case LV_USER_KEY_RIGHT:
break;
case LV_KEY_ENTER:
break;
default:
break;
}
}
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// Operating Time // Operating Time
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
@ -684,7 +784,7 @@ static void update_Operating_Time_msg(lv_obj_t* obj)
{ {
if(OperatingTimeMatrixObj == NULL || OperatingTimeImage == NULL) if(OperatingTimeMatrixObj == NULL || OperatingTimeImage == NULL)
{ {
DBG_ERR("Password component is not initialized"); DBG_ERR("Operating Time component is not initialized");
return; return;
} }
@ -704,7 +804,7 @@ void show_Operating_Time_page(lv_obj_t* obj)
{ {
if(OperatingTimeMatrixObj != NULL || OperatingTimeImage != NULL || OperatingTimeLabel != NULL) if(OperatingTimeMatrixObj != NULL || OperatingTimeImage != NULL || OperatingTimeLabel != NULL)
{ {
DBG_ERR("Password component is initialized"); DBG_ERR("Operating Time component is initialized");
return; return;
} }

View File

@ -22,6 +22,7 @@ extern void hidde_DateTime_page(void);
extern void Option_Sensitivity_Key(lv_obj_t* obj, uint32_t key); extern void Option_Sensitivity_Key(lv_obj_t* obj, uint32_t key);
extern void Option_Delay_Key(lv_obj_t* obj, uint32_t key); extern void Option_Delay_Key(lv_obj_t* obj, uint32_t key);
extern void Option_Delay_Key_Long_Press(lv_obj_t* obj, uint32_t key);
extern void Option_Operating_Time_Key(lv_obj_t* obj, uint32_t key); extern void Option_Operating_Time_Key(lv_obj_t* obj, uint32_t key);
extern void Option_Operating_Time_Key_Long_Press(lv_obj_t* obj, uint32_t key); extern void Option_Operating_Time_Key_Long_Press(lv_obj_t* obj, uint32_t key);
extern void Option_DateTime_Key(lv_obj_t* obj, uint32_t key); extern void Option_DateTime_Key(lv_obj_t* obj, uint32_t key);

View File

@ -860,6 +860,11 @@ void UIFlowMenuCommonOptionEventCallback(lv_obj_t* obj, lv_event_t event)
if(KeyPressingTimeMs > 1 * 1000) if(KeyPressingTimeMs > 1 * 1000)
Option_Camera_Name_Key_Long_Press(obj, *key); Option_Camera_Name_Key_Long_Press(obj, *key);
break; break;
case IDM_DELAY:
KeyPressingTimeMs += LONG_PRESS_INTERVAL;
if(KeyPressingTimeMs > 1 * 1000)
Option_Delay_Key_Long_Press(obj, *key);
break;
case IDM_OPERATING_TIME: case IDM_OPERATING_TIME:
KeyPressingTimeMs += LONG_PRESS_INTERVAL; KeyPressingTimeMs += LONG_PRESS_INTERVAL;
if(KeyPressingTimeMs > 1 * 1000) if(KeyPressingTimeMs > 1 * 1000)