📄 mmiectimedate.c
字号:
currclock.min = tempclock.min;
//zgz,2002.8.15 ClockSet(&currclock);
if( updateRtcClock(tempclock)<0 )
return -1;
}
else if( DateTimeEntryMode == WEEKLY_ALARM )
{
if( tmpSwitch != FFS_flashData.weeklyAlarm_switch )
FFS_flashData.weeklyAlarm_switch = tmpSwitch;
FFS_flashData.weeklyAlarm_hour= tempclock.hour;
FFS_flashData.weeklyAlarm_min= tempclock.min;
flash_write();
iconsSetState(iconIdAlarm);
}
set_latest_alarm();
return TRUE;
}
static int check_date1(T_MFW_HND win, void * edt_dat)
{
U8 i;
T_tida_edt * edt_data = (T_tida_edt *)edt_dat;
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_tida * tida_data = (T_tida *)win_data->user;
Date tempdate;
char internday[3];
char internmonth[3];
char internyear[5];
char debug[20];
TRACE_FUNCTION ("MmiTimeDate:check_date1");
TRACE_EVENT(edt_data->edtbuf1);
memset(internday, '\0', sizeof(internday));/* initial string */
memset(internmonth, '\0', sizeof(internmonth));
memset(internyear, '\0', sizeof(internyear));
internday[0] = edt_data->edtbuf1[0];
internday[1] = edt_data->edtbuf1[1];
internmonth[0] = edt_data->edtbuf1[3];
internmonth[1] = edt_data->edtbuf1[4];
for( i = 0;i<4;i++ )
{
internyear[i] = edt_data->edtbuf1[6+i];
}
tempdate.month = atoi(internmonth);
if( (tempdate.month > 12) || (tempdate.month < 1) )
return FALSE;
tempdate.day = atoi(internday);
if( (tempdate.day > 30) || (tempdate.day < 1) )
{
if( tempdate.day EQ 31 )
{
switch( tempdate.month )
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
break;
default:
return FALSE;
}
}
else
return FALSE;
}
tempdate.year = atoi(internyear);
if( (tempdate.year) < 2000 || (tempdate.year > 2099) ) //zgz,2002.8.16 revise it
return FALSE;
if( (tempdate.month EQ 2) && (tempdate.day EQ 29) )
{
if( !(tempdate.year%4)&&(tempdate.year%100)||!(tempdate.year%400) ) // zgz,if the year is runnian.
{
if( DateTimeEntryMode == DAILY_ALARM )
{
FFS_flashData.alarm_day = tempdate.day;
FFS_flashData.alarm_month = tempdate.month;
FFS_flashData.alarm_year = tempdate.year;
flash_write(); // zgz, 2002.8.15 just only write alarm setting to flash
}
else
{
FFS_flashData.current_day = tempdate.day;
FFS_flashData.current_month = tempdate.month;
FFS_flashData.current_year = tempdate.year;
currdate.day = tempdate.day;
currdate.month = tempdate.month;
currdate.year = tempdate.year;
}
//flash_write();
if( updateRtcDate(tempdate)<0 )
return -1;
set_latest_alarm();
return TRUE;
}
else
return FALSE;
}
else if( !((tempdate.month EQ 2) && (tempdate.day EQ 30)) )
{
if( DateTimeEntryMode == DAILY_ALARM )
{
FFS_flashData.alarm_day = tempdate.day;
FFS_flashData.alarm_month = tempdate.month;
FFS_flashData.alarm_year = tempdate.year;
if( flash_write() ) // zgz, 2002.8.15 just only write alarm setting to flash
return FALSE;
}
else
{
FFS_flashData.current_day = tempdate.day;
FFS_flashData.current_month = tempdate.month;
FFS_flashData.current_year = tempdate.year;
currdate.day = tempdate.day;
currdate.month = tempdate.month;
currdate.year = tempdate.year;
}
//flash_write();
updateRtcDate(tempdate);
set_latest_alarm();
return TRUE;
}
else
{
return FALSE;
}
}
/*******************************************************************************
$Function: reset_edt_attr_sett
$Description: initialize editor buffer for time and date
$Returns: none.
$Arguments:
*******************************************************************************/
static void reset_edt_attr_sett(U16 winPx,U16 winPy,U16 winSx,U16 winSy,U8 fgColor,U8 font,U8 mode,
U8 *controls, char *text,U16 size,MfwEdtAttr* attr)
{
attr->win.px = winPx;
attr->win.py = winPy;
attr->win.sx = winSx;
attr->win.sy = winSy;
attr->fgColor = fgColor;
attr->font = font;
attr->mode = mode;
attr->controls = controls;
attr->text = text;
attr->size = size;
}
static int updateRtcDate(Date newDate) // zgz,2002.8.15 Mobile Innovation
{
T_RTC_DATE_TIME rtcTime;
RTC_GetDateTime(&rtcTime);
if( rtcTime.hour>23 )
rtcTime.hour=23;
if( rtcTime.hour<0 )
rtcTime.hour=0;
if( rtcTime.minute>59 )
rtcTime.minute=59;
if( rtcTime.minute<0 )
rtcTime.minute=0;
if( rtcTime.second>59 )
rtcTime.second=59;
if( rtcTime.second<0 )
rtcTime.second=0;
rtcTime.mode_12_hour=FALSE;
rtcTime.day = newDate.day;
rtcTime.month = newDate.month;
rtcTime.year = newDate.year - 2000;
return RTC_SetDateTime(rtcTime);
}
static int updateRtcClock(CLOCK newClock) // zgz,2002.8.15 Mobile Innovation
{
T_RTC_DATE_TIME rtcTime;
TRACE_EVENT("updateRtcClock");
RTC_GetDateTime(&rtcTime);
if( rtcTime.year>99 )
rtcTime.year=99;
if( rtcTime.year<0 )
rtcTime.year=0;
if( rtcTime.month>12 )
rtcTime.month=12;
if( rtcTime.month<1 )
rtcTime.month=1;
switch( rtcTime.month )
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if( rtcTime.day>31 )
rtcTime.day=31;
if( rtcTime.day<1 )
rtcTime.day=1;
break;
case 2:
/*talcon 2004.05.26,talcon modify*/
//if(!((rtcTime.year+2000)%4)&&((rtcTime.year+2000)%100)&&!((rtcTime.year+2000)%400))
if( ( (rtcTime.year+2000)%4 ==0 && (rtcTime.year+2000)%100 !=0 )
||( (rtcTime.year+2000)%400 == 0) )
{
if( rtcTime.day>29 )
rtcTime.day=29;
if( rtcTime.day<1 )
rtcTime.day=1;
}
else
{
if( rtcTime.day>28 )
rtcTime.day=28;
if( rtcTime.day<1 )
rtcTime.day=1;
}
break;
case 4:
case 6:
case 9:
case 11:
if( rtcTime.day>30 )
rtcTime.day=30;
if( rtcTime.day<1 )
rtcTime.day=1;
break;
}
rtcTime.mode_12_hour=FALSE;
rtcTime.hour= newClock.hour;
rtcTime.minute= newClock.min;
rtcTime.second= newClock.sec;
return RTC_SetDateTime(rtcTime);
}
int setSystemDate(MfwMnu* m, MfwMnuItem* i)
{
T_MFW_HND parent = mfwParent( mfw_header());
T_MFW_HND win = timedate_create(parent);
DateTimeEntryMode =SETTING;
if( win NEQ NULL )
{
SEND_EVENT(win, DATE_ENTRY_EC, 0, 0);
}
return 1;
}
int setSystemTime(MfwMnu* m, MfwMnuItem* i)
{
T_MFW_HND parent = mfwParent( mfw_header());
T_MFW_HND win = timedate_create(parent);
DateTimeEntryMode =SETTING;
if( win NEQ NULL )
{
SEND_EVENT(win, TIME_ENTRY_EC, 0, 0);
}
return 1;
}
static T_MFW_HND timedate_create(T_MFW_HND parent_window)
{
T_MFW_WIN * win;
tidaData * data = (tidaData *)ALLOC_MEMORY (sizeof (tidaData));
data->win = win_create(parent_window, 0, MfwWinVisible, (T_MFW_CB)timeDate_win_cb);
TRACE_FUNCTION("MmiTimeDate:timedate_create");
if( data->win EQ 0 )
return 0;
/*
* Create window handler
*/
data->mmi_control.dialog = (T_DIALOG_FUNC)tida_DialogCB;/* dialog main function */
data->mmi_control.data = data;
data->parent_win = parent_window;
win = ((T_MFW_HDR *)data->win)->data;
win->user = (void *) data;
/*
* return window handle
*/
//mfwSetSignallingMethod(1);
//winShow(data->win);
tida_win=data->win;
return data->win;
}
/* 2003.10.28 wyj AM/PM修正 */
static void tida_DialogCB (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data;
tidaData* data = (tidaData *) win_data->user;
T_RTC_DATE_TIME rtcTime;
RTC_GetDateTime(&rtcTime);
TRACE_EVENT("tida_DialogCB");
if( FFS_flashData.time_format==TWELVE_HOUR )
{
data->AMPM_index = 0;//'0' indicates AM,'1' indecates PM
data->tmode_flag = 1;
}
else
{
data->tmode_flag = 2;
}
data->position_flag = 1;
data->index=0;
data->id=event;
data->kbd_win=kbd_create(win,KEY_ALL,(T_MFW_CB)timedate_kbd_cb);
switch( event )
{
case DATE_ENTRY_EC:
memset(data->date_string,0,sizeof(data->date_string));
sprintf(data->date_string,"%d/%02d/%02d",rtcTime.year+2000,rtcTime.month,rtcTime.day);
winShow(win);
break;
case TIME_ENTRY_EC:
//data->tim_win=timCreate(data->win,1000,(T_MFW_CB)timedate_tim_cb);
data->temp_time.hour=rtcTime.hour;
data->temp_time.min=rtcTime.minute;
data->temp_time.sec=rtcTime.second;
memset(data->time_string,0,sizeof(data->time_string));
/* 2003.10.28 wyj AM/PM修正 */
if( FFS_flashData.time_format == TWELVE_HOUR )
{
if( data->temp_time.hour > 11 ) //PM
{
data->AMPM_index = 1;
if( data->temp_time.hour != 12 )
data->temp_time.hour %= 12;
}
else //AM
data->AMPM_index=0;
sprintf(data->time_string,"%02d:%02d:%02d",data->temp_time.hour,data->temp_time.min,data->temp_time.sec);
}
else
{
sprintf(data->time_string,"%02d:%02d:%02d",data->temp_time.hour,data->temp_time.min,data->temp_time.sec);
}
//timStart(data->tim_win);
winShow(win);
break;
default:
break;
}
}
/* 时间日期设置显示回调函数 */
static int timeDate_win_cb (T_MFW_EVENT event, T_MFW_WIN * win)
{
tidaData *data = (tidaData *)win->user;
int old_color;
UINT32 oldColor,oldFontColor;
game_Line line;
TD_Line l;
game_Rectangle recta
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -