📄 mmiectimedate.c
字号:
uMode = dspl_Enable(0);
dspl_ClearAll();
if( tida_data->state EQ TIME_ENTRY_EC )
{
TRACE_EVENT("dspl_title");
/* background display */
TD_drawBkg(BG_rect, BG_attr);
/* title display */
/* 2004/06 sunsj modify for picture manage */
DRAW_ICON(ICON_MENUUP);
/*dspl_BitBlt( menuup[FlashSettingData.theme].area.px,menuup[FlashSettingData.theme].area.py,
menuup[FlashSettingData.theme].area.sx,menuup[FlashSettingData.theme].area.sy,
menuup[FlashSettingData.theme].nIcons,menuup[FlashSettingData.theme].icons,0);
*/
/* 2004/05/20 yhf modify */
#if(MAIN_LCD_SIZE==3)
if(Mmi_getCurrentLanguage()==CHINESE_LANGUAGE)//标题显示
dspl_colorTextOut(32,0,DSPL_TXTATTR_TRANSPARENT,MmiRsrcGetText(TxtEnterTime),0x0);
else
dspl_colorTextOut((102-wstrlen(MmiRsrcGetText(TxtEnterTime))*6)/2,0,DSPL_TXTATTR_TRANSPARENT,MmiRsrcGetText(TxtEnterTime),0x0);
#elif(MAIN_LCD_SIZE==4)
if( Mmi_getCurrentLanguage()==CHINESE_LANGUAGE )
dspl_colorTextOut(32,0,DSPL_TXTATTR_TRANSPARENT,MmiRsrcGetText(TxtEnterTime),0x0);
else
dspl_colorTextOut((102-wstrlen(MmiRsrcGetText(TxtEnterTime))*6)/2,0,DSPL_TXTATTR_TRANSPARENT,MmiRsrcGetText(TxtEnterTime),0x0);
#endif
/* input rect display */
if( !edt_data->position ) //focus on input rect
{
TD_drawSolidRectangle(AL_input_rect, AL_input_attr1);
l = AL_index_l;
#if(MAIN_LCD_SIZE==3)
l.x1 = AL_index_l.x1 + edt_data->index*8;
l.x2 = AL_index_l.x2 + edt_data->index*8;
#elif(MAIN_LCD_SIZE==4)
l.x1 = AL_index_l.x1 + edt_data->index*8;
l.x2 = AL_index_l.x2 + edt_data->index*8;
#endif
TD_drawLine(l, AL_index_c);
}
else
{
TD_drawSolidRectangle(AL_input_rect, AL_input_attr2);
}
/* hint rect dispaly */
#if(MAIN_LCD_SIZE==3)
dspl_colorTextOut(30+EX, 20, DSPL_TXTATTR_TRANSPARENT, edt_data->edtbuf1,0 );
#elif(MAIN_LCD_SIZE==4)
dspl_colorTextOut(40+EX, 57, DSPL_TXTATTR_TRANSPARENT, edt_data->edtbuf1,0 );
#endif
TD_drawSolidRectangle(AL_hint_rect, AL_hint_attr);
set_font_type(UNI12X12_FONT);
#if(MAIN_LCD_SIZE==4)
if( FFS_flashData.time_format==TWENTYFOUR_HOUR )
{
if( Mmi_getCurrentLanguage()==CHINESE_LANGUAGE )
dspl_colorTextOut(37+EX, 103, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtTwentyfourHour),0);
else
dspl_colorTextOut(36+EX, 103, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtTwentyfourHour),0);
}
else
{
if( Mmi_getCurrentLanguage()==CHINESE_LANGUAGE )
dspl_colorTextOut(37+EX, 103, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtTwelveHour),0);
else
dspl_colorTextOut(36+EX, 103, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtTwelveHour),0);
}
#elif(MAIN_LCD_SIZE==3)
if(FFS_flashData.time_format==TWENTYFOUR_HOUR)
{
if(Mmi_getCurrentLanguage()==CHINESE_LANGUAGE)
dspl_colorTextOut(28+EX, 50, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtTwentyfourHour),0);
else
dspl_colorTextOut(28+EX, 50, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtTwentyfourHour),0);
}
else
{
if(Mmi_getCurrentLanguage()==CHINESE_LANGUAGE)
dspl_colorTextOut(28+EX, 50, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtTwelveHour),0);
else
dspl_colorTextOut(28+EX, 50, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtTwelveHour),0);
}
#endif
/* AM/PM rect display */
if( FFS_flashData.time_format==TWELVE_HOUR )
{
memset(string,0,4);
if( edt_data->AMANDPM )
strcpy(string,"PM");
else
strcpy(string,"AM");
if( edt_data->position ) //focus on AM/PM rect
{
TD_drawSolidRectangle(AL_AP_rect, AL_AP_attr);
/*dspl_BitBlt(35+EX, 38, 4, 8, 0, (void *)left_key, DSPL_BMPXOR);
dspl_BitBlt(35+EX, 38, 4, 8, 0, (void *)left_key_mask, DSPL_BMPAND);
dspl_BitBlt(35+EX, 38, 4, 8, 0, (void *)left_key, DSPL_BMPXOR);
dspl_BitBlt(64+EX, 38, 4, 8, 0, (void *)right_key, DSPL_BMPXOR);
dspl_BitBlt(64+EX, 38, 4, 8, 0, (void *)right_key_mask, DSPL_BMPAND);
dspl_BitBlt(64+EX, 38, 4, 8, 0, (void *)right_key, DSPL_BMPXOR);*/
dspl_colorTextOut(52+EX, 81, DSPL_TXTATTR_TRANSPARENT, string, 0xffffff);
}
else
{
dspl_colorTextOut(52+EX, 81, DSPL_TXTATTR_TRANSPARENT, string, 0x000000);
}
}
/* icon display */
/* 2004/06 sunsj modify for picture manage */
//dspl_BitBlt(13+EX, 59, idl_Attr[iconIdAlarm].area.sx, idl_Attr[iconIdAlarm].area.sy, 0, idl_Attr[iconIdAlarm].icons, DSPL_BMPXOR);
//dspl_BitBlt(13+EX, 59, idl_AttrMask[iconIdAlarm].area.sx, idl_AttrMask[iconIdAlarm].area.sy, 0, idl_AttrMask[iconIdAlarm].icons, DSPL_BMPAND);
//dspl_BitBlt(13+EX, 59, idl_Attr[iconIdAlarm].area.sx, idl_Attr[iconIdAlarm].area.sy, 0, idl_Attr[iconIdAlarm].icons, DSPL_BMPXOR);
#if(MAIN_LCD_SIZE==3)
DRAW_ICON_ATTRIBUTE(ICON_IDLESTATE, 3+EX,20, iconIdAlarm, ICON_MASK|ICON_LOCATION);
#elif(MAIN_LCD_SIZE==4)
DRAW_ICON_ATTRIBUTE(ICON_IDLESTATE, 13+EX, 59, iconIdAlarm, ICON_MASK|ICON_LOCATION);
#endif
/***end yhf modify***/
displaySoftKeys(TxtSoftOK,TxtSoftBack);
}
else if( tida_data->state EQ TIME_SHOW_EC )
{
if( (DateTimeEntryMode == SETTING) || (FFS_flashData.alarm_day == 0) )
sprintf(lin2,"%02d:%02d",currclock.hour, currclock.min);
else
sprintf(lin2,"%02d:%02d",FFS_flashData.alarm_hour, FFS_flashData.alarm_minute);
strncpy(edt_data->edtbuf1,lin2,MAX_LEN_TIME);
edtShow(edt_data->editor_handle);
edtChar(edt_data->editor_handle, ecTop);
}
dspl_Enable(uMode );
return 1;
}
return 0;
}
/*******************************************************************************
$Function: tida_editor
$Description: dialog function for editor for time and date
$Returns: none.
$Arguments:
*******************************************************************************/
/* "每日闹钟" "每周闹钟"窗口事件处理
* 2003.10.28 wyj 解决AM/PM问题 */
static void tida_editor(T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_tida_edt * edt_data = (T_tida_edt *)win_data->user;
T_tida * tida_data = (T_tida *)parameter;//tida main data
char lin2[MAX_DIG_TIDA];
int hour;
edt_data->state = tida_data->state;
TRACE_FUNCTION("MmiTimeDate:tida_editor");
/* depending on event */
switch( event )
{
case DATE_SHOW_EC:
case TIME_SHOW_EC:
memset(edt_data->edtbuf1, '\0', sizeof(edt_data->edtbuf1));/* initial buffer */
edt_data->index = 0;
winShow(edt_data->tida_edt_win);
break;
case DATE_ENTRY_EC:
case TIME_ENTRY_EC:
memset(lin2,0,sizeof(lin2));
memset(edt_data->edtbuf1,0,sizeof(edt_data->edtbuf1));
if( DateTimeEntryMode == SETTING )
sprintf(lin2,"%02d:%02d",currclock.hour, currclock.min);
else if( DateTimeEntryMode == DAILY_ALARM )
{
hour=FFS_flashData.dailyAlarm_hour;
/* 2003.10.28 wyj 解决AM/PM问题 */
if( FFS_flashData.time_format == TWELVE_HOUR )
{
if( hour > 11 ) //PM
{
edt_data->AMANDPM = 1;
if( hour != 12 )
hour %= 12;
}
else //AM
{
edt_data->AMANDPM = 0;
}
}
sprintf(lin2,"%02d:%02d",hour, FFS_flashData.dailyAlarm_min);
}
else if( DateTimeEntryMode == WEEKLY_ALARM )
{
hour=FFS_flashData.weeklyAlarm_hour; //2003.10.28 wyj 修正
/* 2003.10.28 wyj 解决AM/PM问题 */
if( FFS_flashData.time_format == TWELVE_HOUR )
{
if( hour > 11 ) //PM
{
edt_data->AMANDPM = 1;
if( hour != 12 )
hour %= 12;
}
else //AM
{
edt_data->AMANDPM=0;
}
}
sprintf(lin2,"%02d:%02d",hour, FFS_flashData.weeklyAlarm_min);
}
edt_data->position=0;
strcpy(edt_data->edtbuf1,lin2);
TRACE_EVENT(edt_data->edtbuf1);
winShow(edt_data->tida_edt_win);
break;
default:
break;
}
}
/*******************************************************************************
$Function: tida_edt_kbd_cb
$Description: keyboard event handler for time and date
$Returns: none.
$Arguments:
*******************************************************************************/
/* "每日闹钟" "每周闹钟"按键处理
* 2003.10.28 wyj 12/24小时制问题 */
static int tida_edt_kbd_cb (MfwEvt e, MfwKbd *kc)
{
T_MFW_HND win = mfw_parent(mfw_header());
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_tida_edt * edt_data = (T_tida_edt *)win_data->user;//tida edt data
T_MFW_WIN * win_tida =((T_MFW_HDR *)edt_data->parent_win)->data;
T_tida * tida_data = (T_tida *)win_tida->user; // tida main data
//nm T_DateTime currentTime;
char lin1[MAX_LEN_DATE];
char lin2[MAX_LEN_TIME];
T_DISPLAY_DATA display_info;
int return_value=1;
int hour;
int minute;
char temp_hour[3];
char temp_minute[3];
//nm memset(lin1, '\0', sizeof(lin1));/* initial string */
//nm memset(lin2, '\0', sizeof(lin2));
TRACE_FUNCTION ("MmiTimeDate: tida_edt_kbd_cb");
switch( kc->code )
{
case KCD_0:
case KCD_1:
case KCD_2:
case KCD_3:
case KCD_4:
case KCD_5:
case KCD_6:
case KCD_7:
case KCD_8:
case KCD_9:
if( edt_data->state EQ DATE_ENTRY_EC ) /* date entering */
{
if( edt_data->index < (MAX_LEN_DATE - 1) )
{
if( (edt_data->index NEQ 2) && (edt_data->index NEQ 5) )
{
edt_data->edtbuf1[edt_data->index] = '0' + kc->code;
edtChar(edt_data->editor_handle,edt_data->edtbuf1[edt_data->index]);
edt_data->index++;
}
if( (edt_data->index EQ 2) || (edt_data->index EQ 5) )
{
edtChar(edt_data->editor_handle,'/');
edt_data->edtbuf1[edt_data->index] = '/';
edt_data->index++;
}
if( edt_data->index == 10 ) //zgz,2002.8.16 added
{
edt_data->index = 0;
edtChar(edt_data->editor_handle,ecTop);
}
}
}
else if( edt_data->state EQ TIME_ENTRY_EC ) /* time entering */
{
/* 2003.10.15 wyj 加入 检查输入*/
checkAlarmNumInput(edt_data, kc->code);
}
winShow(win);
break;
case KCD_LEFT: /* select and ok button */
case KCD_OK:
if( edt_data->state EQ DATE_ENTRY_EC )
{
if( check_date1(win,edt_data)>0 )
{
TRACE_EVENT("datecheck ok");
edtClear(edt_data->editor_handle);
edtHide(edt_data->editor_handle); /* verification date successfull */
date_time_edt_destroy(edt_data->tida_edt_win);
SEND_EVENT(tida_data->tida_win,ENTRY_OK_EC,0,tida_data); //SEND_EVENT(tida_data->tida_win,TIME_ENTRY_EC,0,tida_data);
}
else
{
memset(edt_data->edtbuf1, '\0', sizeof(edt_data->edtbuf1));/* initial buffer */
edt_data->index = 0;
sprintf(lin1,"%02d/%02d/%04d",currdate.day,currdate.month,currdate.year);
//sprintf(lin1,"%d/%d/%d",currdate.day,currdate.month,currdate.year);
strncpy(edt_data->edtbuf1,lin1,MAX_LEN_DATE);
edtReset(edt_data->editor_handle);
edtShow(edt_data->editor_handle);
edtChar(edt_data->editor_handle, ecTop);
dialog_info_init(&display_info);//gdy add
display_info.TextId2 =TxtFailed;
display_info.Time = FOREVER;
display_info.iconindex = REMIND_FAILURE;
display_info.Callback = (T_VOID_FUNC)NULL;//auto_dialog_cb;
/* Call Info Screen */
info_dialog (edt_data->parent_win, &display_info);
}
}
else if( edt_data->state EQ TIME_ENTRY_EC )
{
memset(temp_hour,0,3);
memset(temp_minute,0,3);
temp_hour[0]=edt_data->edtbuf1[0];
temp_hour[1]=edt_data->edtbuf1[1];
temp_minute[0]=edt_data->edtbuf1[3];
temp_minute[1]=edt_data->edtbuf1[4];
hour=atoi(temp_hour);
minute=atoi(temp_minute);
/* 2003.10.28 wyj 12/24小时制问题 */
if( FFS_flashData.time_format == TWELVE_HOUR )
{
if( edt_data->AMANDPM )
{
if( hour<12 && hour>0 )
{
hour += 12;
}
}
memset(edt_data->edtbuf1,0,sizeof(edt_data->edtbuf1));
sprintf(edt_data->edtbuf1,"%02d:%02d",hour,minute);
}
if( check_time1(win,edt_data)>0 )
{
TRACE_EVENT("timecheck ok");
edtClear(edt_data->editor_handle);
edtHide(edt_data->editor_handle); /* verification date successfull */
date_time_edt_destroy(edt_data->tida_edt_win);
SEND_EVENT(tida_data->tida_win,ENTRY_OK_EC,0,tida_data);
}
else
{
memset(edt_data->edtbuf1, '\0', sizeof(edt_data->edtbuf1));/* initial buffer */
edt_data->index = 0;
sprintf(lin2,"%02d:%02d",currclock.hour, currclock.min);
strncpy(edt_data->edtbuf1,lin2,MAX_LEN_TIME);
edtReset(edt_data->editor_handle);
edtShow(edt_data->editor_handle);
edtChar(edt_data->editor_handle, ecTop);
dialog_info_init(&display_info);//gdy add
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -