mmiautopower.c
来自「是一个手机功能的模拟程序」· C语言 代码 · 共 1,497 行 · 第 1/4 页
C
1,497 行
{
dialog_info_init(&display_info);
display_info.RightSoftKey = TxtSoftBack;
display_info.TextId2 = TxtDeActivated;
display_info.iconindex = REMIND_NORECORD;
display_info.Time = FOREVER;
display_info.Callback = (T_VOID_FUNC)autoBrowse_dialog_cb;
info_dialog(win, &display_info);
return;
}
/* background display */
/* 2004/05/20 yhf remove */
//TD_drawBkg(BG_rect, BG_attr);
/* 2004/05/26 sunsj modify */
displayTitle( 0, (char *)MmiRsrcGetText(TxtBrowseAlarm), NULL, TITLE_MIDDLE, 0x000000, 0x000000);
#if 0
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( Mmi_getCurrentLanguage()==CHINESE_LANGUAGE )
dspl_colorTextOut(28+EX, 0, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtBrowseAlarm),0xffffff);
else
dspl_colorTextOut(8+EX, 0, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtBrowseAlarm),0xffffff);
#endif
if( Mmi_getCurrentLanguage()==CHINESE_LANGUAGE )
dspl_colorTextOut(14+EX, 23, 0, MmiRsrcGetText(TxtPowerOnTime),0);
else
dspl_colorTextOut(6+EX, 23, 0, MmiRsrcGetText(TxtPowerOnTime),0);
if( FFS_flashData.poweron_switch )
{
memset(string,0,8);
sprintf(string,"%02d:%02d",FFS_flashData.opentime[0],FFS_flashData.opentime[1]);
drawSolidRectangle(57+EX, 43, 106+EX, 62, 3,0xDBFFFF,0xDBFFFF);
dspl_colorTextOut(63+EX,45,DSPL_TXTATTR_TRANSPARENT,string,0);
}
else
{
drawSolidRectangle(59+EX, 43, 100+EX, 62, 3,0x5AC7FF,0x5AC7FF);
dspl_colorTextOut(67+EX, 45,DSPL_TXTATTR_TRANSPARENT,MmiRsrcGetText(TxtClose),0xffffff);
}
/***end yhf modify***/
/*2004/05/20 yhf add*/
line.x1=7+EX;
line.y1=79;
line.x2=113+EX;
line.y2=79;
line.color=0xB9D9EA;
DrawLine(line);
line.x1=6+EX;
line.y1=80;
line.x2=114+EX;
line.y2=80;
line.color=0x5474A7;
DrawLine(line);
line.x1=7+EX;
line.y1=81;
line.x2=113+EX;
line.y2=81;
line.color=0xB9D9EA;
DrawLine(line);
/***end yhf add***/
/* 2004/05/20 yhf modify */
if( Mmi_getCurrentLanguage()==CHINESE_LANGUAGE )
dspl_colorTextOut(14+EX, 87, 0, MmiRsrcGetText(TxtPowerOffTime),0);
else
dspl_colorTextOut(6+EX, 87, 0, MmiRsrcGetText(TxtPowerOffTime),0);
if( FFS_flashData.poweroff_switch )
{
memset(string,0,8);
sprintf(string,"%02d:%02d",FFS_flashData.closetime[0],FFS_flashData.closetime[1]);
drawSolidRectangle(57+EX, 106, 106+EX, 125, 3,0xDBFFFF,0xDBFFFF);
dspl_colorTextOut(63+EX,108,DSPL_TXTATTR_TRANSPARENT,string,0);
}
else
{
drawSolidRectangle(59+EX, 106, 100+EX, 125, 3,0x5AC7FF,0x5AC7FF);
dspl_colorTextOut(67+EX,108,DSPL_TXTATTR_TRANSPARENT,MmiRsrcGetText(TxtClose),0xffffff);
}
/***end yhf modify***/
displaySoftKeys(0, TxtSoftBack);
}
/* 查看状态的按键处理函数 */
static int autoBrowse_kbd_cb(MfwEvt e, MfwKbd *kc)
{
T_MFW_HND win = mfw_parent(mfw_header());
T_MFW_WIN *win_data = ((T_MFW_HDR *)win)->data;
auto_browse_data *edt_data = (auto_browse_data*)win_data->user;
switch( kc->code )
{
case KCD_RIGHT:
case KCD_HUP:
autoBrowse_destroy(win);
break;
default:
break;
}
return 1;
}
/* 查看状态的窗口销毁函数 */
static void autoBrowse_destroy(T_MFW_HND own_window)
{
T_MFW_WIN *win = ((T_MFW_HDR *)own_window)->data;
auto_browse_data *data = (auto_browse_data*)win->user;
if( own_window )
{
/*
* Delete WIN Handler
*/
win_delete (own_window);
/*
* Free Memory
*/
FREE_MEMORY ((void *)data, sizeof (auto_browse_data));
}
}
/* 查看状态信息窗口的回调函数 */
void autoBrowse_dialog_cb(T_MFW_HND win, USHORT event, UBYTE reason)
{
autoBrowse_destroy(win);
}
/* 自动开关机的窗口创建函数 */
static T_MFW_HND auto_create(MfwHnd parent_window)
{
autodata *data = (autodata*)ALLOC_MEMORY (sizeof (autodata));
T_MFW_WIN *win;
TRACE_EVENT("timer_create");
if( data EQ NULL )
{
return NULL;
}
// Create window handler
data->win = win_create (parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)auto_win_cb);
if( data->win EQ NULL )
{
return NULL;
}
// connect the dialog data to the MFW-window
data->mmi_control.dialog = (T_DIALOG_FUNC)auto_DialogCB;
data->mmi_control.data= data;
win= ((T_MFW_HDR *)data->win)->data;
win->user= (void *)data;
data->parent_win= parent_window;
//reset_edt_attr_sett2(32,60,70,16,0,0,edtCurBar1,0,(char*)data->time,5,&data->editAttr,0);
data->editor_handle = edt_create(data->win,&data->editAttr,0,0);
data->kbd= kbd_create(data->win,KEY_ALL,(T_MFW_CB)auto_kbd_cb);
return data->win;
}
/* 自动开关机的窗口事件处理函数
* 2003.10.28 wyj 修改 12/24小时制问题 */
static void auto_DialogCB(T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
T_MFW_WIN *win_data = ((T_MFW_HDR *)win)->data;
autodata *data = (autodata*)win_data->user;
int hour;
TRACE_EVENT("auto_DialogCB");
switch( event )
{
case AUTOPOWERON:
TraceInt(FFS_flashData.opentime[0]);
TraceInt(FFS_flashData.opentime[1]);
data->id = AUTOPOWERON;
data->index = 0;
data->positon = 0;
data->power_switch = TRUE;
time_status = OPENTIME;
memset(data->ontime,0,6);
memset(data->time,0,6);
hour = FFS_flashData.opentime[0];
memset(data->time,0,6);
/* 2003.10.28 wyj 修改 12/24小时制问题 */
if( FFS_flashData.time_format == TWELVE_HOUR )
{
if( hour > 11 ) //PM
{
data->AMANDPM = 1;
if( hour != 12 )
hour %= 12;
}
else //AM
{
data->AMANDPM = 0;
}
}
sprintf(data->ontime,"%02d:%02d",hour,FFS_flashData.opentime[1]);
//sprintf(data->offtime,"%02d:%02d",FFS_flashData.closetime[0],FFS_flashData.closetime[1]);
strcpy(data->time,data->ontime);
winShow(data->win);
break;
case AUTOPOWEROFF:
data->id=AUTOPOWEROFF;
data->index=0;
data->positon=0;
data->power_switch=TRUE;
time_status=CLOSETIME;
//memset(data->ontime,0,6);
memset(data->offtime,0,6);
memset(data->time,0,6);
hour=FFS_flashData.closetime[0];
/* 2003.10.28 wyj 修改 12/24小时制问题 */
if( FFS_flashData.time_format==TWELVE_HOUR )
{
if( hour > 11 ) //PM
{
data->AMANDPM = 1;
if( hour != 12 )
hour %= 12;
}
else //AM
{
data->AMANDPM = 0;
}
}
//sprintf(data->ontime,"%02d:%02d",FFS_flashData.opentime[0],FFS_flashData.opentime[1]);
sprintf(data->offtime,"%02d:%02d",hour,FFS_flashData.closetime[1]);
strcpy(data->time,data->offtime);
winShow(data->win);
break;
case DEACTIVIATE:
case AUTODESTROY:
auto_destroy(win);
break;
default:
break;
}
}
/* 2003.10.16 wyj 加入对时间参数的检查
* 2003.10.28 wyj 解决AM/PM问题
* 自动开关机窗口的按键处理函数
*/
static int auto_kbd_cb (MfwEvt e, MfwKbd *kc)
{
T_MFW_HND win = mfw_parent(mfw_header());
T_MFW_WIN *win_data = ((T_MFW_HDR *)win)->data;
autodata *edt_data = (autodata*)win_data->user;//tida edt data
char hour[3];
char minute[3];
int temp_hour;
int temp_minute;
game_Rectangle rectangle;
game_Line line;
T_DISPLAY_DATA display_info;
int flag = 1,t;
TRACE_EVENT("auto_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->positon )
break;
/* 2003.10.16 wyj 加入对时间参数的检查 */
checkAutoNumInput(edt_data, kc->code);
winShow(win);
break;
case KCD_MNULEFT:
if( !edt_data->positon ) //焦点在时间输入框
{
/* 2003.10.16 wyj 加入对时间参数的检查 */
checkAutoLeftInput(edt_data);
}
else if( edt_data->positon==1 ) //焦点在开启/关闭框
{
edt_data->power_switch=!edt_data->power_switch;
}
else //焦点在AM/PM设置框
{
if( FFS_flashData.time_format==TWELVE_HOUR )
{
edt_data->AMANDPM=!edt_data->AMANDPM;
}
}
winShow(win);
break;
case KCD_MNURIGHT:
if( !edt_data->positon )
{
/* 2003.10.16 wyj 加入对时间参数的检查 */
checkAutoRightInput(edt_data);
}
else if( edt_data->positon==1 )
{
edt_data->power_switch=!edt_data->power_switch;
}
else
{
if( FFS_flashData.time_format==TWELVE_HOUR )
{
edt_data->AMANDPM=!edt_data->AMANDPM;
}
}
winShow(win);
break;
case KCD_MNUDOWN:
edt_data->index=0;
if( FFS_flashData.time_format==TWELVE_HOUR )
{
if( edt_data->positon==2 )
edt_data->positon=0;
else
edt_data->positon++;
}
else
{
if( edt_data->positon )
edt_data->positon=0;
else
edt_data->positon=1;
}
winShow(win);
break;
case KCD_MNUUP:
edt_data->index=0;
if( FFS_flashData.time_format==TWELVE_HOUR )
{
if( edt_data->positon==0 )
edt_data->positon=2;
else
edt_data->positon--;
}
else
{
if( edt_data->positon )
edt_data->positon=0;
else
edt_data->positon=1;
}
winShow(win);
break;
case KCD_LEFT: /* select and ok button */
case KCD_OK:
TRACE_EVENT("KCD_LEFT");
memset(hour,0,3);
memset(minute,0,3);
hour[0]=edt_data->time[0];
hour[1]=edt_data->time[1];
minute[0]=edt_data->time[3];
minute[1]=edt_data->time[4];
temp_hour=atoi(hour);
temp_minute=atoi(minute);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?