📄 mmiectimedate.c
字号:
0 /* number of items */
};
static const int weekdayId[] ={
TxtSunday,
TxtMonday,
TxtTuesday,
TxtWednesday,
TxtThursday,
TxtFriday,
TxtSaturday
};
/*
Settings menu subs:
*/
/* #define TIMERESULT 1000 time for results */
#define TIMERCLEAR 2500
//Flag to indicate whether we're setting the current or alarm date/time.
static UBYTE DateTimeEntryMode;
static UBYTE dailyAlarmed =0; //xsf add for check if the alarm is alerted 09.24
static UBYTE weeklyAlarmed=0;
extern UBYTE getcurrentAlarmTone(void); //mmisounds
extern T_RTC_DATE_TIME timedate;//zhonghz,globel var,define in mmimain.c
extern MfwHnd gtVibator; //XSF 08.14 static MfwHnd gtVibator;
/* 2003.10.14 wyj 加入对时间设置输入框的检查 */
static void checkTimeSetNumInput(tidaData *data, U8 keynum);
static void checkTimeSetLeftInput(tidaData *data);
static void checkTimeSetRightInput(tidaData *data);
/* 2003.10.15 wyj 加入对日期设置输入框的检查 */
static void checkDateSetNumInput(tidaData *data, U8 keynum);
static void checkDateSetLeftInput(tidaData *data);
static void checkDateSetRightInput(tidaData *data);
/* 2003.10.15 wyj 加入对闹钟设置输入框的检查 */
static void checkAlarmNumInput(T_tida_edt *data, U8 keynum);
static void checkAlarmLeftInput(T_tida_edt *data);
static void checkAlarmRightInput(T_tida_edt *data);
/* 2003.12.1 wyj 加入时制转换时显示的转换 */
static void timeset_12_to_24(tidaData *data);
static void timeset_24_to_12(tidaData *data);
/* 2003.12.8 wyj 每周闹钟查看显示 */
static void weekc(void);
static void weeken(void);
/* 时间设置 */
extern const TD_Rect TS_input_rect;
extern const TD_Attri TS_input_attr1;
extern const TD_Attri TS_input_attr2;
extern const TD_Line TS_index_l;
extern const Color TS_index_c;
extern const TD_Rect TS_tm_rect;
extern const TD_Attri TS_tm_attr;
extern const TD_Rect TS_AP_rect;
extern const TD_Attri TS_AP_attr;
/* 日期设置 */
extern const TD_Rect DS_input_rect;
extern const TD_Attri DS_input_attr;
extern const TD_Rect DS_hint_rect;
extern const TD_Attri DS_hint_attr;
extern const TD_Attri TS_tm_attr1;
extern const TD_Line DS_index_l;
extern const Color DS_index_c;
/* 闹钟设置 */
extern const TD_Rect AL_input_rect;
extern const TD_Attri AL_input_attr1;
extern const TD_Attri AL_input_attr2;
extern const TD_Line AL_index_l;
extern const Color AL_index_c;
extern const TD_Rect AL_hint_rect;
extern const TD_Attri AL_hint_attr;
extern const TD_Rect AL_AP_rect;
extern const TD_Attri AL_AP_attr;
/* icon */
extern const MfwIcnAttr idl_AttrMask[];
/*******************************************************************************
$Function: date_time_create
$Description: create main dialog for time and date (SINGLE_DYNAMIC)
$Returns: none.
$Arguments:
*******************************************************************************/
/* "每日闹钟" "每周闹钟" 窗口创建 */
static T_MFW_HND date_time_create (T_MFW_HND parent_window)
{
T_MFW_WIN * win;
T_tida * data = (T_tida *)ALLOC_MEMORY (sizeof (T_tida));
data->tida_win = win_create (parent_window, 0, MfwWinVisible, (T_MFW_CB)tida_win_cb);
TRACE_FUNCTION("MmiTimeDate:date_time_create");
if( data->tida_win EQ 0 )
return 0;
/* Create window handler */
data->mmi_control.dialog = (T_DIALOG_FUNC)tida_main;/* dialog main function */
data->mmi_control.data = data;
data->parent_win = parent_window;
win = ((T_MFW_HDR *)data->tida_win)->data;
win->user = (void *) data;
/* return window handle */
mfwSetSignallingMethod(1);
winShow(data->tida_win);
return data->tida_win;
}
/*******************************************************************************
$Function: date_time_destroy
$Description: destroy main dialog for time and date
$Returns: none.
$Arguments:
*******************************************************************************/
static void date_time_destroy (T_MFW_HND own_window)
{
T_tida * data;
T_MFW_WIN * win;
if( own_window )
{
TRACE_EVENT("MmiTimeDate:date_time_destroy");
win = ((T_MFW_HDR *)own_window)->data;
data = (T_tida *)win->user;
if( data )
{
win_delete (data->tida_win);
FREE_MEMORY((void *)data,(sizeof(T_tida)));
}
}
}
/*******************************************************************************
$Function: date_time_edt_create
$Description: create editor dialog for time and date(SINGLE_DYNAMIC)
$Returns: none.
$Arguments:
*******************************************************************************/
/* "每日闹钟" "每周闹钟"窗口初始化 */
static T_MFW_HND date_time_edt_create(T_MFW_HND parent_window)
{
T_tida_edt * data = (T_tida_edt *)ALLOC_MEMORY (sizeof (T_tida_edt));
T_MFW_WIN * win;
T_MFW_WIN * win_data = ((T_MFW_HDR *)parent_window)->data; //zgz,2002.8.30
T_tida * tida_data = (T_tida *)win_data->user;//tida main data
data->tida_edt_win = win_create (parent_window, 0, MfwWinVisible, (T_MFW_CB)tida_edt_win_cb);
TRACE_FUNCTION("MmiTimeDate:date_time_edt_create");
if( data->tida_edt_win EQ 0 )
return 0;
/* Create window handler*/
data->mmi_control.dialog = (T_DIALOG_FUNC)tida_editor;
data->mmi_control.data = data;
data->parent_win = parent_window;
win = ((T_MFW_HDR *)data->tida_edt_win)->data;
win->user = (void *) data;
/* Create any other handler */
//reset_edt_attr_sett(0,10,70,10,0,0,edtCurBar1 | edtModOverWr,0,(char*)data->edtbuf1,MAX_DIG_TIDA,&data->edit1Attr);
if( tida_data->state == DATE_ENTRY_EC )
reset_edt_attr_sett(20,55,90,20,0,0,edtCurBar1 | edtModOverWr,0,(char*)data->edtbuf1,MAX_DIG_TIDA,&data->edit1Attr);
//else
// reset_edt_attr_sett(36,55,90,20,0,0,edtCurBar1 | edtModOverWr,0,(char*)data->edtbuf1,MAX_DIG_TIDA,&data->edit1Attr);
//zgz,data->tim_out_handle = tim_create(data->tida_edt_win,TIMERCLEAR,(T_MFW_CB)tida_edt_tim_out_cb);
// data->editor_handle = edt_create(data->tida_edt_win,&data->edit1Attr,0,0);
data->kbd_handle = kbd_create(data->tida_edt_win,KEY_ALL,(T_MFW_CB)tida_edt_kbd_cb);
//zgz,data->kbd_long_handle = kbd_create(data->tida_edt_win,KEY_ALL | KEY_LONG,(T_MFW_CB)tida_edt_kbd_long_cb);
/* return window handle */
return data->tida_edt_win;
}
/*******************************************************************************
$Function: date_time_edt_destroy
$Description: destroy editor dialog for time and date
$Returns: none.
$Arguments:
*******************************************************************************/
static void date_time_edt_destroy (T_MFW_HND own_window)
{
T_tida_edt * data ;
T_MFW_WIN * win;
if( own_window )
{
TRACE_FUNCTION ("MmiTimeDate:date_time_edt_destroy");
win = ((T_MFW_HDR *)own_window)->data;
data = (T_tida_edt *)win->user;
if( data )
{
win_delete (data->tida_edt_win);
FREE_MEMORY((void *)data,(sizeof(T_tida_edt)));
}
}
}
/*******************************************************************************
$Function: tida_main
$Description: main dialog function for time and date
$Returns: none.
$Arguments:
*******************************************************************************/
/* "每日闹钟" "每周闹钟"窗口事件处理 */
static void tida_main(T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
T_MFW_WIN *win_data = ((T_MFW_HDR *)win)->data;
T_tida *tida_data = (T_tida *)win_data->user;//tida main data
T_tida_edt *tida_edt_data = (T_tida_edt *) parameter;//tida editor data
T_MFW_HND tida_edt_win;
T_DISPLAY_DATA display_info;
TRACE_FUNCTION("MmiTimeDate:tida_main");
switch( event )
{
case DATE_SHOW_EC:
tida_data->state = DATE_SHOW_EC;
tida_data->display_id1 = TxtEnterDate;
tida_edt_win = date_time_edt_create(tida_data->tida_win);
if( tida_edt_win )
{
SEND_EVENT(tida_edt_win,event,0,tida_data);
}
break;
case DATE_ENTRY_EC:
tida_data->state = DATE_ENTRY_EC;
tida_data->display_id1 = TxtEnterDate;
tida_edt_win = date_time_edt_create(tida_data->tida_win);
{
SEND_EVENT(tida_edt_win,event,0,tida_data);
}
break;
case TIME_ENTRY_EC:
tida_data->state = TIME_ENTRY_EC;
tida_data->display_id1 = TxtEnterTime;
tida_edt_win = date_time_edt_create(tida_data->tida_win);
if( tida_edt_win )
{
SEND_EVENT(tida_edt_win,event,0,tida_data);
}
break;
case TIME_SHOW_EC:
tida_data->state = TIME_SHOW_EC;
tida_data->display_id1 = TxtEnterTime;
tida_edt_win = date_time_edt_create(tida_data->tida_win);
if( tida_edt_win )
{
SEND_EVENT(tida_edt_win,event,0,tida_data);
}
break;
case ENTRY_OK_EC:
dialog_info_init(&display_info);
display_info.TextId2 = TxtSaved;
display_info.RightSoftKey = TxtSoftBack;
display_info.Time = FOREVER;
display_info.KeyEvents = KEY_OK | KEY_RIGHT | KEY_LEFT;
display_info.iconindex = REMIND_COMPLETE;
display_info.Callback = (T_VOID_FUNC)ECtida_info_cb;
info_dialog(tida_data->tida_win,&display_info); /* information screen "Saved" */
break;
case SAVED_EC:
case TIDA_ABORT_EC:
case TIDA_CLEAR_EC:
case TIDA_TO_IDLE_EC:
date_time_destroy(tida_data->tida_win);
break;
default:
break;
}
}
/*******************************************************************************
$Function: ECtida_info_cb
$Description: callback function from info dialog for time and date
$Returns: none.
$Arguments:
*******************************************************************************/
void ECtida_info_cb(T_MFW_HND win, USHORT identifier, UBYTE reasons)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_tida * tida_data = (T_tida *)win_data->user;
//int i,uIndex=0;
TRACE_FUNCTION ("MmiTimeDate: ECtida_info_cb");
date_time_destroy(tida_data->tida_win);
/*switch(identifier)
{
case SAVED_EC:
SEND_EVENT(tida_data->tida_win,identifier,0,NULL);
break;
default:
break;
}*/
}
/*******************************************************************************
$Function: tida_win_cb
$Description: windows main callback function for time and date
$Returns: none.
$Arguments:
*******************************************************************************/
static int tida_win_cb (T_MFW_EVENT event, T_MFW_WIN * win)
{
TRACE_FUNCTION ("MmiTimeDate: tida_win_cb");
if( event EQ MfwWinVisible )
{
/* Top Window has no output */
dspl_ClearAll();
return 1;
}
return 0;
}
/*******************************************************************************
$Function: tida_edt_win_cb
$Description: windows callback function for editor for time and date
$Returns: none.
$Arguments: 7
*******************************************************************************/
/* "每日闹钟" "每周闹钟" 窗口显示回调 */
static int tida_edt_win_cb (T_MFW_EVENT event,T_MFW_WIN * win)
{
T_tida_edt *edt_data = (T_tida_edt *)win->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
char lin1[MAX_LEN_DATE];
char lin2[MAX_LEN_TIME];
char string[4];
int old_color;
game_Line line;
game_Rectangle rectangle;
TD_Line l;
memset(lin1, '\0', sizeof(lin1));
memset(lin2, '\0', sizeof(lin2));
TRACE_FUNCTION ("MmiTimeDate:tida_edt_win_cb");
if( event EQ MfwWinVisible )
{
U8 uMode = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -