📄 mmitoolkit.c
字号:
}
return 1;
}
return 0;
}
static void timer_editor(T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_timer_edt * edt_data = (T_timer_edt *)win_data->user;
T_MFW_WIN * win_data1 = ((T_MFW_HDR *)timer_win)->data;
timerdata* data1 = (timerdata*)win_data1->user;
T_DISPLAY_DATA display_info;
timerdata* timer_data = (timerdata *)parameter;//tida main data
TRACE_EVENT("timer_editor");
/*
* depending on event
*/
switch (event)
{
case MIDDLE:
TRACE_EVENT("MIDDLE");
if(!timenumber)
{
statusflag=TIMER_START;
StartPlayByReason(ALARMPLAY,0);
tim_stop(edt_data->info_tim);
//StartVibrator();
display_info.KeyEvents = KEY_CLEAR | KEY_RIGHT | KEY_LEFT;
display_info.LeftSoftKey = '\0';
display_info.RightSoftKey = TxtSoftConfirm;
display_info.TextString = '\0';
display_info.TextString2 = '\0';
display_info.TextId2 =TxtTimeup;
display_info.TextId = '\0';
display_info.Time = 30*ONE_SECS;
display_info.Callback = (T_VOID_FUNC)timer_memo_dialog_cb;
/*
* Call Info Screen
*/
info_dialog (win, &display_info);
//statusflag=END;
}
else{
timStart(edt_data->info_tim);
}
winShow(win);
break;
case TIMER_START:
edt_data->LeftKey=FALSE;
Sprintf((char*)edt_data->elapsed_time,"%s","00:00:00");
winShow(edt_data->editor_win);
break;
case END:
timer_edt_destroy(win);
break;
default:
break;
}
}
static int timer_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_timer_edt * edt_data = (T_timer_edt *)win_data->user;//tida edt data
T_MFW_WIN * win_timer =((T_MFW_HDR *)edt_data->parent_win)->data;
timerdata* timer_data = (timerdata*)win_timer->user; // tida main data
T_DISPLAY_DATA display_info;
int flag=1;
int t;
char lin1[12];
char lin2[12];
TRACE_EVENT("timer_edt_kbd_cb");
if(statusflag==TIMER_START)
{
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->index NEQ 7)
{
if((edt_data->index NEQ 1)&&(edt_data->index NEQ 4))
{
edt_data->elapsed_time[edt_data->index] = '0' + kc->code;
//edtChar(edt_data->editor_handle,edt_data->elapsed_time[edt_data->index]);
edt_data->index++;
}
else
{
edt_data->elapsed_time[edt_data->index] = '0' + kc->code;
//edtChar(edt_data->editor_handle,edt_data->elapsed_time[edt_data->index]);
edt_data->index++;
/*edtChar(edt_data->editor_handle,':');
edt_data->elapsed_time[edt_data->index] = ':';*/
//edtChar(edt_data->editor_handle,ecRight);
edt_data->index++;
}
}
else
{
if(flag)
{
edt_data->elapsed_time[edt_data->index] = '0' + kc->code;
//edtChar(edt_data->editor_handle,edt_data->elapsed_time[edt_data->index]);
//edtChar(edt_data->editor_handle,ecTop);
edt_data->index=0;
//t=(int)edt_data->elapsed_time[4]-48;
//flag=0;
}
else
{
edt_data->elapsed_time[edt_data->index] =(char)(t-48);
///edtChar(edt_data->editor_handle,edt_data->elapsed_time[edt_data->index]);
}
}
if(((((int)edt_data->elapsed_time[0]-48)*10+((int)edt_data->elapsed_time[1]-48))>=24)||((((int)edt_data->elapsed_time[3]-48)*10+((int)edt_data->elapsed_time[4]-48))>59))
{
memset((char*)edt_data->elapsed_time,0,sizeof(edt_data->elapsed_time));
edt_data->index=0;
display_info.KeyEvents = KEY_OK | KEY_RIGHT | KEY_LEFT;
display_info.LeftSoftKey = '\0';
display_info.RightSoftKey = '\0';
display_info.TextString = '\0';
display_info.TextString2 = '\0';
display_info.TextId2 =TxtInputError;
display_info.TextId = '\0';
display_info.Time = ONE_SECS;
display_info.Callback = (T_VOID_FUNC)timer_memo_dialog_cb;
/*
* Call Info Screen
*/
info_dialog(edt_data->editor_win, &display_info);
}
/* if(edt_data->index < 8)
{
if((edt_data->index NEQ 2)&&(edt_data->index NEQ 5))
{
edt_data->elapsed_time[edt_data->index] = '0' + kc->code;
edtChar(edt_data->editor_handle,edt_data->elapsed_time[edt_data->index]);
edt_data->index++;
}
if((edt_data->index EQ 2)||(edt_data->index EQ 5))
{
edtChar(edt_data->editor_handle,':');
edt_data->elapsed_time[edt_data->index] = ':';
edt_data->index++;
}
}*/
winShow(edt_data->editor_win);
break;
case KCD_LEFT: /* select and ok button */
//edtClear(edt_data->editor_handle);
//edtHide(edt_data->editor_handle);
edt_data->LeftKey=!edt_data->LeftKey;
timenumber=chartoint((char*)edt_data->elapsed_time);
timer_flag=TRUE;
statusflag=MIDDLE;
SEND_EVENT(win, statusflag, 0, 0);
winShow(win);
break;
case KCD_RIGHT: /* back to previous menu */
TRACE_EVENT("KCD_RIGHT");
tim_stop(edt_data->info_tim);
timer_edt_destroy(edt_data->editor_win);
timerdestroy(timer_win);
break;
case KCD_MNUUP: /* cursor to right */
edt_data->index++;
edtChar(edt_data->editor_handle,ecRight);
if(((edt_data->index EQ 2)||(edt_data->index EQ 5)))
{
edt_data->index++;
edtChar(edt_data->editor_handle,ecRight);
}
break;
case KCD_HUP:
case KCD_MNUDOWN: /* cursor to left or clear */
if(edt_data->index EQ 0)
;
else
edt_data->index--;
if((edt_data->index EQ 2)||(edt_data->index EQ 5))
{
if(edt_data->index EQ 0)
;
else
edt_data->index--;
edtChar(edt_data->editor_handle,ecLeft);
edtChar(edt_data->editor_handle,ecLeft);
}
else
edtChar(edt_data->editor_handle,ecLeft);
break;
default:
return MFW_EVENT_CONSUMED;
}
}
else if(statusflag==MIDDLE)
{
switch(kc->code)
{
case KCD_LEFT:
edt_data->LeftKey=!edt_data->LeftKey;
//timenumber=0;
//statusflag=TIMER_START;
if(edt_data->LeftKey)
tim_start(edt_data->info_tim);
else
tim_stop(edt_data->info_tim);
//SEND_EVENT(win, statusflag, 0, 0);
winShow(win);
//timerdestroy(win);
break;
case KCD_RIGHT:
if(!edt_data->LeftKey)
{
timenumber=0;
statusflag=TIMER_START;
}
SEND_EVENT(edt_data->editor_win, END, 0, 0);
timerdestroy(timer_win);
break;
default:
break;
}
}
else{
switch(kc->code)
{
default:
SEND_EVENT(edt_data->editor_win, END, 0, 0);
timerdestroy(timer_win);
break;
}
}
return MFW_EVENT_CONSUMED;
}
void timer_edt_destroy(T_MFW_HND own_window)
{
T_timer_edt * data ;
T_MFW_WIN * win;
if (own_window)
{
TRACE_FUNCTION ("timer_edt_destroy");
win = ((T_MFW_HDR *)own_window)->data;
data = (T_timer_edt *)win->user;
kbd_delete(data->kbd_handle);
win_delete (own_window);
if(data)
{
//edt_delete(data->editor_handle);
FREE_MEMORY((void *)data,(sizeof(T_timer_edt)));
}
}
}
static T_MFW_CB timer_tim_cb (T_MFW_EVENT event, T_MFW_TIM *tc)
{
T_MFW_HND win = mfw_parent (mfw_header());
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_timer_edt* data = (T_timer_edt*)win_data->user;
T_DISPLAY_DATA display_info;
char str[8];
TRACE_EVENT ("timer_tim_cb()");
// switch (statusflag)
//{
// case MIDDLE:
if (timenumber!=0)
{
TRACE_EVENT ("continue the second timer");
timenumber--;
// it shows here the elapsed time
memset((char *)data->display_id1,0,sizeof(data->display_id1));
if(timenumber/3600<10)
sprintf((char *)str,"0%d:",timenumber/3600);
else
sprintf((char *)str,"%d:",timenumber/3600);
strcat((char *)data->display_id1,(char *)str);
if(timenumber%3600/60<10)
sprintf((char *)str,"0%d:",timenumber%3600/60);
else
sprintf((char *)str,"%d:",timenumber%3600/60);
strcat((char *)data->display_id1,(char *)str);
if(timenumber%3600%60<10)
sprintf((char *)str,"0%d",timenumber%3600%60);
else
sprintf((char *)str,"%d",timenumber%3600%60);
strcat((char *)data->display_id1,(char *)str);
strcpy(data->elapsed_time,data->display_id1);
//sprintf((char*)data->display_id1,"%2d:%2d:%2d", timenumber/3600,timenumber%3600/60,timenumber%3600%60);
TRACE_EVENT ((char*)data->display_id1);
//continue the second timer
timStart (data->info_tim);
}
else
{
//SEND_EVENT(win, statusflag, 0, 0);
timStop(data->info_tim);
timer_flag=FALSE;
StartPlayByReason(ALARMPLAY,0);
//StartVibrator();
display_info.KeyEvents = KEY_CLEAR | KEY_RIGHT | KEY_LEFT;
display_info.LeftSoftKey = '\0';
display_info.RightSoftKey = TxtSoftConfirm;
display_info.TextString = '\0';
display_info.TextString2 = '\0';
display_info.TextId2 =TxtTimeup;
display_info.TextId = '\0';
display_info.Time = 30*ONE_SECS;
display_info.Callback = (T_VOID_FUNC)timer_memo_dialog_cb;
/*
* Call Info Screen
*/
info_dialog (win, &display_info);
}
//break;
//default:
// break;
TRACE_EVENT("test");
//Update the screen
winShow(win);
return 0;
}
static int chartoint(char* str)
{
int result=0,number=0;
TRACE_EVENT("char to int");
/* get the number of seconds*/
number=(int)str[1]-48+((int)str[0]-48)*10;
result=result+number*3600;
number=0;
/*get the number of munites and turn it into seconds*/
number=(int)str[4]-48+((int)str[3]-48)*10;
result=result+number*60;
number=0;
/*get the number of hours and turn it into seconds*/
number=(int)str[7]-48+((int)str[6]-48)*10;
result=result+number;
return result;
}
void timerdestroy (T_MFW_HND own_window)
{
T_MFW_WIN * win = ((T_MFW_HDR *)own_window)->data;
timerdata* data = (timerdata*)win->user;
TRACE_EVENT ("timerdestroy()");
if (own_window)
{
/*
* Delete WIN Handler
*/
win_delete (own_window);
/*
* Free Memory
*/
FREE_MEMORY ((void *)data, sizeof (timerdata));
}
}
static void reset_edt_attr_sett1(U16 winPx,U16 winPy,U16 winSx,U16 winSy,U8 fgColor,U8 font,U8 mode,
U8 *controls, char *text,U16 size,MfwEdtAttr* attr,U8 dsplTitle)
{
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;
attr->title_id=dsplTitle;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -