完善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 lv_obj_t* DelayMatrixObj = NULL;
static lv_obj_t* DelayImage = NULL;
static lv_obj_t* DelayLabel = NULL;
static char DelayHHBuf[3] = "00";
static char DelayMMBuf[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)
{
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(DelayMMBuf, 3, "%02d", puiPara->PirDelayTime.Min);
snprintf(DelaySSBuf, 3, "%02d", puiPara->PirDelayTime.Sec);
lv_btnmatrix_set_map(DelayMatrixObj, DelayMap);
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)
{
if(DelayMatrixObj != NULL || DelayImage != NULL || DelayLabel != NULL)
{
DBG_ERR("Operating Time component is initialized");
return;
}
DelayIndex = 0;
init_Matrix_style();
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(DelayMMBuf, 3, "%02d", puiPara->PirDelayTime.Min);
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_click(DelayMatrixObj, true);
lv_obj_set_drag(DelayMatrixObj, false);
lv_obj_set_pos(DelayMatrixObj, 92, 58);
lv_obj_set_size(DelayMatrixObj, 136, 140);
lv_obj_set_pos(DelayMatrixObj, 96, 108);
lv_obj_set_size(DelayMatrixObj, 128, 24);
lv_btnmatrix_set_map(DelayMatrixObj, DelayMap);
lv_btnmatrix_set_one_check(DelayMatrixObj, true);
lv_btnmatrix_set_align(DelayMatrixObj, LV_LABEL_ALIGN_CENTER);
lv_btnmatrix_set_focused_btn(DelayMatrixObj,0);
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, 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)
{
printf("[%s]\n", __FUNCTION__);
DelayIndex = 0;
if(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)
{
if(DelayMatrixObj == NULL)
{
printf("DelayMatrixObj is NULL");
return;
}
printf("[%s]key:%d\n", __FUNCTION__, key);
// char result[2];
UIMenuStoreInfo *puiPara = sf_ui_para_get();
printf("key:%d\n",key);
switch(key)
{
case LV_USER_KEY_NEXT:
printf("\033[33m[Option_Sensitivity_Key]s\033[0m\n");
if(DelayIndex == 0)
{
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);
break;
case LV_USER_KEY_PREV:
printf("\033[33m[Option_Sensitivity_Key]w\033[0m\n");
if(DelayIndex == 0)
{
if(puiPara->PirDelayTime.Hour >= 23)
@ -637,17 +669,14 @@ void Option_Delay_Key(lv_obj_t* obj, uint32_t key)
update_Delay_msg(obj);
break;
case LV_USER_KEY_LEFT:
printf("\033[33m[Option_Sensitivity_Key]a\033[0m\n");
DelayIndex = (DelayIndex - 2 + 6) % 6;
update_Delay_msg(obj);
break;
case LV_USER_KEY_RIGHT:
printf("\033[33m[Option_Sensitivity_Key]d\033[0m\n");
DelayIndex = (DelayIndex + 2) % 6;
update_Delay_msg(obj);
break;
case LV_KEY_ENTER:
printf("\033[33m[Option_Sensitivity_Key]SELECT\033[0m\n");
puiPara->PirDelaySwitch = 1;
lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0));
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
// --------------------------------------------------------------------------
@ -684,7 +784,7 @@ static void update_Operating_Time_msg(lv_obj_t* obj)
{
if(OperatingTimeMatrixObj == NULL || OperatingTimeImage == NULL)
{
DBG_ERR("Password component is not initialized");
DBG_ERR("Operating Time component is not initialized");
return;
}
@ -704,7 +804,7 @@ void show_Operating_Time_page(lv_obj_t* obj)
{
if(OperatingTimeMatrixObj != NULL || OperatingTimeImage != NULL || OperatingTimeLabel != NULL)
{
DBG_ERR("Password component is initialized");
DBG_ERR("Operating Time component is initialized");
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_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_Long_Press(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)
Option_Camera_Name_Key_Long_Press(obj, *key);
break;
case IDM_DELAY:
KeyPressingTimeMs += LONG_PRESS_INTERVAL;
if(KeyPressingTimeMs > 1 * 1000)
Option_Delay_Key_Long_Press(obj, *key);
break;
case IDM_OPERATING_TIME:
KeyPressingTimeMs += LONG_PRESS_INTERVAL;
if(KeyPressingTimeMs > 1 * 1000)