📄 mmiautopower.c
字号:
/* 关机窗口显示回调函数 */
static int conAuto_win_cb(T_MFW_EVENT event,T_MFW_WIN * win)
{
confirmdata *data = (confirmdata*)win->user;
char string[6];
TRACE_FUNCTION ("timer_edt_win_cb");
if( event EQ MfwWinVisible )
{
dspl_ClearAll();
/* background display */
/* 2004/05/20 yhf modify */
//TD_drawBkg(BG_rect, BG_attr);
/* title display */
/*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);
if(Mmi_getCurrentLanguage()==CHINESE_LANGUAGE)
dspl_colorTextOut(28+EX,0,DSPL_TXTATTR_TRANSPARENT,MmiRsrcGetText(TxtAutoPowerOff),0x0);
else
dspl_colorTextOut(20,0,DSPL_TXTATTR_TRANSPARENT,MmiRsrcGetText(TxtAutoPowerOff),0x0);
if(Mmi_getCurrentLanguage()==CHINESE_LANGUAGE)
{
dspl_colorTextOut(12, 14, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtAutoOff), 0xcd7f32);
dspl_colorTextOut(28, 30, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtAutoConfirm), 0xcd7f32);
}
else
{
dspl_colorTextOut(8, 14, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtAutoOff), 0xcd7f32);
dspl_colorTextOut(28, 38, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtAutoConfirm), 0xcd7f32);
}*/
dspl_colorTextOut(12, 10, 0, MmiRsrcGetText(TxtAutoOff), 0xcd7f32);
dspl_colorTextOut(28, 26, 0, MmiRsrcGetText(TxtAutoConfirm), 0xcd7f32);
if( data->tim_num==1||data->tim_num==0 )
sprintf(string,"%d%s",data->tim_num,"second");
else
sprintf(string,"%d%s",data->tim_num,"seconds");
dspl_colorTextOut(28, 50, 0, string, 0x0000ff);
/***end yhf modify***/
displaySoftKeys(TxtYes,TxtNo);//confirm
return 1;
}
return 0;
}
/* 关闭窗口事件处理函数 */
static void confirm_DialogCB(T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
confirmdata* data = (confirmdata*)win_data->user;
TRACE_EVENT("confirm_DialogCB");
data->tim_num=10;
tim_start(data->info_tim);
}
/* 关闭窗口按键处理函数 */
static int confirm_kbd_cb (MfwEvt e, MfwKbd *kc)
{
T_MFW_HND win = mfw_parent(mfw_header());
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
MfwHnd times_switchoff;
confirmdata* data = (confirmdata*)win_data->user;
TRACE_EVENT("auto_kbd_cb");
switch( kc->code )
{
case KCD_LEFT:
case KCD_OK:
//FfsWriteAllEvent();
//conAuto_destroy(win);
//AutoPowerOn();
//showGoodBye ( idle_get_window () );
conAuto_destroy(win);
AutoPowerOn();
FfsWriteAllEvent();//hxl add for save file completely 20021125
FieldTestExit();
/* 2004/07/09 sunsj add for forbidden hall off */
HallOffForbid = TRUE;
showGoodBye ( idle_get_window () ); //gb
#if 0 /* Robert.Chen removed, 2004-05-05 */
times_switchoff = timCreate(0,THREE_SECS,(MfwCb)goodbye_cb);
timStart(times_switchoff);
#endif
// nm_deregistration(); /* start deregistration procedure */
// BaseWinExit();
break;
case KCD_RIGHT:
conAuto_destroy(win);
break;
default:
break;
}
return MFW_EVENT_CONSUMED;
}
/* 关闭窗口销毁函数 */
void conAuto_destroy (T_MFW_HND own_window)
{
T_MFW_WIN *win = ((T_MFW_HDR *)own_window)->data;
confirmdata *data = (confirmdata*)win->user;
TRACE_EVENT ("conAuto_destroy()");
if( own_window )
{
/*
* Delete WIN Handler
*/
win_delete (own_window);
/*
* Free Memory
*/
FREE_MEMORY ((void *)data, sizeof (confirmdata));
}
}
/* 关机前等10秒种 */
static T_MFW_CB confirm_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_MFW_HND tim_win;
MfwHnd times_switchoff;
confirmdata * data = (confirmdata *)win_data->user;
if( !data->tim_num )
{
//FfsWriteAllEvent();
//conAuto_destroy(win);
//AutoPowerOn();
//showGoodBye ( idle_get_window () );
conAuto_destroy(win);
AutoPowerOn();
/* robert.chen add, 2004-08-10, for MMS integration */
#ifdef MMS_WAP_ENABLED
{
extern void mms_pushfile_exit();
mms_pushfile_exit();
}
#endif
#ifdef _MMS_ENABLE_
MMS_Exit();
#endif
FfsWriteAllEvent();//hxl add for save file completely 20021125
FieldTestExit();
/* 2004/07/09 sunsj add for forbidden hall off */
HallOffForbid = TRUE;
showGoodBye ( idle_get_window () ); //gb
//2004-04-26 Sunny remove
//times_switchoff = timCreate(0,THREE_SECS,(MfwCb)goodbye_cb);
//timStart(times_switchoff);
//2004-04-26 Sunny remove end
//nm_deregistration(); /* start deregistration procedure */
//BaseWinExit();
}
else
{
if( call_data.win_incoming||call_data.win_calling||call_win_flag||alarm_win )
{
conAuto_destroy(win);
tim_win=timCreate(win, 1000, (T_MFW_CB)autopower_tim_cb);
timStart(tim_win);
}
else
{
data->tim_num--;
tim_start(data->info_tim);
winShow(win);
}
}
}
/**********************************************************************************
* Function Name : checkAutoNumInput
* Function Description : 改写自动关机时间设置的数字键处理函数,使之不接受错误输入
*
* Parameters : autodata *data I/O
* : U8 keynum I
*
* Return : void
*
* Author Name : Wu Yajun
* Date : 2002.10.16
* History: Date :
* Author :
* Modify :
***********************************************************************************/
static void checkAutoNumInput(autodata *data, U8 keynum)
{
/* 检查输入的数子,保证小时分钟秒钟没有越界 */
switch( data->index )
{
case 0: // 小时十位
if( FFS_flashData.time_format == TWELVE_HOUR )
{
if( keynum > 1 )
return;
}
else
{
if( keynum > 2 )
return;
}
//data->time格式hh:mm
data->time[data->index++] = '0' + keynum;
break;
case 1: //小时个位
if( FFS_flashData.time_format == TWELVE_HOUR )
{
if( (data->time[data->index-1]=='1') && (keynum>2) )
return;
}
else
{
if( (data->time[data->index-1]=='2') && (keynum>3) )
return;
}
data->time[data->index++] = '0' + keynum;
data->index++;
break;
case 3: //分钟十位
if( keynum > 5 )
return;
data->time[data->index++] = '0' + keynum;
break;
case 4: //分钟个位
data->time[data->index++] = '0' + keynum;
data->index = 0;
break;
default:
break;
}
}
/**********************************************************************************
* Function Name : checkAutoLeftInput
* Function Description : 改写自动关机时间设置的菜单左键处理函数,使之不接受错误输入
*
* Parameters : autodata *data I/O
*
* Return : void
*
* Author Name : Wu Yajun
* Date : 2002.10.16
* History: Date :
* Author :
* Modify :
***********************************************************************************/
static void checkAutoLeftInput(autodata *data)
{
char *p;
int value;
//时间格式hh:mm
switch( data->index )
{
case 1: //不需要检查
case 4:
data->index--;
break;
case 0: //检查小时
p = &data->time[0];
value = (p[0]-48)*10 + (p[1]-48);
if( FFS_flashData.time_format == TWELVE_HOUR )
{
//十二小时制小时上限12
if( value > 12 )
return;
}
else
{
//二十四小时制小时上限23
if( value > 23 )
return;
}
data->index = 4;
break;
case 3: //检查分钟
if( data->time[3] > '5' )
return;
data->index = 1;
break;
default:
break;
}
}
/**********************************************************************************
* Function Name : checkAutoRightInput
* Function Description : 改写自动关机时间设置的菜单右键处理函数,使之不接受错误输入
*
* Parameters : TR_data *data I/O
*
* Return : void
*
* Author Name : Wu Yajun
* Date : 2002.10.16
* History: Date :
* Author :
* Modify :
***********************************************************************************/
static void checkAutoRightInput(autodata *data)
{
char *p;
int value;
//时间格式hh:mm
switch( data->index )
{
case 0: //不需要检查
case 3:
data->index++;
break;
case 1: //检查小时
p = &data->time[0];
value = (p[0]-48)*10 + (p[1]-48);
if( FFS_flashData.time_format == TWELVE_HOUR )
{
//十二小时制小时上限12
if( value > 12 )
return;
}
else
{
//二十四小时制小时上限23
if( value > 23 )
return;
}
data->index = 3;
break;
case 4: //检查分钟
if( data->time[3] > '5' )
return;
data->index = 0;
break;
default:
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -