mmistopwatch.c
来自「是一个手机功能的模拟程序」· C语言 代码 · 共 1,911 行 · 第 1/5 页
C
1,911 行
info_dialog (win, &display_info);
dynamicRecordMenu_destroy(win);
}
break;
case DYNAMIC_RECORD_EXIT:
dynamicRecordMenu_destroy(win);
break;
}
}
static int dynamic_win_cb (T_MFW_EVENT event, T_MFW_WIN * win)
{
DynamicRecordData* data = (DynamicRecordData *)win->user;
int old_color;
TRACE_EVENT ("dynamic_win_cb()");
if( data EQ 0 )
return 1;
switch( event )
{
case E_WIN_VISIBLE:
if( win->flags & E_WIN_VISIBLE )
{
/*
* Clear Screen
*/
dspl_ClearAll();
recorddisplay(data);
displaySoftKeys(0, TxtSoftBack);
}
}
}
/* 秒表显示记录 */
void recorddisplay(DynamicRecordData* data)
{
#if 0
int i,Number;
int old_color,t;
game_Rectangle rectangle;
char string[20],tem_str[4];
U8 uMode = 0;
uMode = dspl_Enable(0);
TRACE_EVENT("recorddisplay");
//title display
dspl_ClearAll();
TD_drawBkg(BG_rect, BG_attr);
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);
dspl_colorTextOut((102-6*wstrBitlen(temp_data.name))/2, 0, DSPL_TXTATTR_TRANSPARENT, temp_data.name, 0x0);
if( data->currentNumber == data->screenNumber ) //最后一页
{
Number = GetNumber(); //总记录数
if( !(Number%3) )
Number=(data->currentNumber-1)*3;
}
else
{
Number=(data->currentNumber)*3;
}
memset((char*)string,0,sizeof(string));
memset((char*)tem_str,0,sizeof(tem_str));
for( i =(data->currentNumber-1)*3; i < Number; i++ )
{
if( i>39 )
return;
/* 数字框显示 */
drawSolidRectangle(5+EX, 20+i%3*16, 20+EX, 17+i%3*16+12, 3, 0x5AC7FF,0x5AC7FF);
/* 编号显示 */
set_font_type(UNI12X12_FONT);
sprintf((char*)tem_str,"%02d",i+1);
dspl_colorTextOut(7+EX, 19+i%3*16,DSPL_TXTATTR_TRANSPARENT,(char*)tem_str,0xffffff);
/* 记录显示 */
sprintf((char*)tem_str,"%02d:",temp_data.record[i]/36000);//hours
strcpy((char*)string,(char*)tem_str);
sprintf((char*)tem_str,"%02d:",(temp_data.record[i]%36000)/600);//munites
strcat((char*)string,(char*)tem_str);
sprintf((char*)tem_str,"%02d:",((temp_data.record[i]%36000)%600)/10);//seconds
strcat(string,(char*)tem_str);
sprintf((char*)tem_str,"%d",((temp_data.record[i]%36000)%600)%10);//ms
strcat((char*)string,(char*)tem_str);
set_font_type(UNI12X12_FONT);
dspl_colorTextOut(34+EX, 19+i%3*16,DSPL_TXTATTR_TRANSPARENT, (char*)string, 0x000000);
}
dspl_Enable(uMode );
#endif
int i,Number;
int old_color,t;
game_Rectangle rectangle;
char string[20],tem_str[4];
TRACE_EVENT("recorddisplay");
/* 2004/06 sunsj modify for picture manage */
DRAW_ICON(ICON_MENUUP);
/*
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);
*/
dspl_colorTextOut((120-8*wstrBitlen(temp_data.name))/2+EX, 0, DSPL_TXTATTR_TRANSPARENT, temp_data.name, 0x0);
if( data->currentNumber == data->screenNumber ) //最后一页
{
Number = GetNumber(); //总记录数
#if (MAIN_LCD_SIZE==4)
if( !(Number%7) )
Number=(data->currentNumber-1)*7;
#elif (MAIN_LCD_SIZE==3)
if( !(Number%6) )
Number=(data->currentNumber-1)*6;
#endif
}
else
{
#if (MAIN_LCD_SIZE==4)
Number=(data->currentNumber)*7;
#elif (MAIN_LCD_SIZE==3)
Number=(data->currentNumber)*6;
#endif
}
memset((char*)string,0,sizeof(string));
memset((char*)tem_str,0,sizeof(tem_str));
#if (MAIN_LCD_SIZE==4)
for( i =(data->currentNumber-1)*7; i < Number; i++ )
{
if( i>39 )
return;
/* 数字框显示 */
drawSolidRectangle(11+EX, 22+i%7*17, 26+EX, 20+i%7*17+12, 3, 0x5AC7FF,0x5AC7FF);
/* 编号显示 */
set_font_type(UNI12X12_FONT);
sprintf((char*)tem_str,"%02d",i+1);
dspl_colorTextOut(13+EX,22+i%7*17,DSPL_TXTATTR_TRANSPARENT,(char*)tem_str,0xffffff);
/* 记录显示 */
sprintf((char*)tem_str,"%02d:",temp_data.record[i]/36000);//hours
strcpy((char*)string,(char*)tem_str);
sprintf((char*)tem_str,"%02d:",(temp_data.record[i]%36000)/600);//munites
strcat((char*)string,(char*)tem_str);
sprintf((char*)tem_str,"%02d:",((temp_data.record[i]%36000)%600)/10);//seconds
strcat(string,(char*)tem_str);
sprintf((char*)tem_str,"%d",((temp_data.record[i]%36000)%600)%10);//ms
strcat((char*)string,(char*)tem_str);
if( (i+1)%2 )
{
rectangle.x1 = 38+EX;
rectangle.y1 = 20+i%7*17;
rectangle.x2 = 108+EX;
rectangle.y2 = 20+i%7*17+15;
rectangle.color = 0xc7eceb;
rectangle.fillcolor = 0xc7eceb;
DrawRectagle(rectangle);
set_font_type(UNI12X12_FONT);
dspl_colorTextOut(43+EX, 22+i%7*17,DSPL_TXTATTR_TRANSPARENT, (char*)string, 0x000000);
}
else
{
set_font_type(UNI12X12_FONT);
dspl_colorTextOut(43+EX, 22+i%7*17+1,0, (char*)string, 0x000000);
}
}
#elif (MAIN_LCD_SIZE==3)
for( i =(data->currentNumber-1)*6; i < Number; i++ )
{
if( i>39 )
return;
/* 数字框显示 */
drawSolidRectangle(11+EX, 22+i%6*16, 26+EX, 20+i%6*16+12, 3, 0x5AC7FF,0x5AC7FF);
/* 编号显示 */
set_font_type(UNI12X12_FONT);
sprintf((char*)tem_str,"%02d",i+1);
dspl_colorTextOut(13+EX,22+i%6*16,DSPL_TXTATTR_TRANSPARENT,(char*)tem_str,0xffffff);
/* 记录显示 */
sprintf((char*)tem_str,"%02d:",temp_data.record[i]/36000);//hours
strcpy((char*)string,(char*)tem_str);
sprintf((char*)tem_str,"%02d:",(temp_data.record[i]%36000)/600);//munites
strcat((char*)string,(char*)tem_str);
sprintf((char*)tem_str,"%02d:",((temp_data.record[i]%36000)%600)/10);//seconds
strcat(string,(char*)tem_str);
sprintf((char*)tem_str,"%d",((temp_data.record[i]%36000)%600)%10);//ms
strcat((char*)string,(char*)tem_str);
if( (i+1)%2 )
{
rectangle.x1 = 38+EX;
rectangle.y1 = 20+i%6*16;
rectangle.x2 = 108+EX;
rectangle.y2 = 20+i%6*16+15;
rectangle.color = 0xc7eceb;
rectangle.fillcolor = 0xc7eceb;
DrawRectagle(rectangle);
set_font_type(UNI12X12_FONT);
dspl_colorTextOut(43+EX, 22+i%6*16,DSPL_TXTATTR_TRANSPARENT, (char*)string, 0x000000);
}
else
{
set_font_type(UNI12X12_FONT);
dspl_colorTextOut(43+EX, 22+i%6*16+1,0, (char*)string, 0x000000);
}
}
#endif
}
static int dynamic_kbd_cb(T_MFW_EVENT event, T_MFW_KBD *keyboard)
{
T_MFW_HND win = mfw_parent (mfw_header());
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
DynamicRecordData* data = (DynamicRecordData *)win_data->user;
TRACE_EVENT("dynamic_kbd_cb");
switch( keyboard->code )
{
case KCD_MNUDOWN:
if( data->screenNumber==1 )
break;
else
{
data->currentNumber++;
if( data->currentNumber>data->screenNumber )
data->currentNumber=data->screenNumber;
#if (MAIN_LCD_SIZE==4)
if( (data->currentNumber==data->screenNumber)&&(!(data->numberOfRecords%7)) )
#elif (MAIN_LCD_SIZE==3)
if( (data->currentNumber==data->screenNumber)&&(!(data->numberOfRecords%6)) )
#endif
data->currentNumber--;
winShow(win);
break;
}
case KCD_MNUUP:
if( data->screenNumber==1 )
break;
else
{
data->currentNumber--;
if( data->currentNumber<1 )
data->currentNumber=1;
#if (MAIN_LCD_SIZE==4)
if( (data->currentNumber==data->screenNumber)&&(!(data->numberOfRecords%7)) )
#elif (MAIN_LCD_SIZE==3)
if( (data->currentNumber==data->screenNumber)&&(!(data->numberOfRecords%6)) )
#endif
data->currentNumber++;
winShow(win);
break;
}
case KCD_RIGHT:
case KCD_HUP:
dynamicRecordMenu_destroy(win);
break;
}
return MFW_EVENT_CONSUMED;
}
void dynamicRecordMenu_destroy(T_MFW_HND own_window)
{
T_MFW_WIN * win = ((T_MFW_HDR *)own_window)->data;
DynamicRecordData* data = (DynamicRecordData*)win->user;
TRACE_EVENT ("dynamicRecordMenu_destroy()");
if( own_window )
{
/*
* Delete WIN Handler
*/
controlBrowseNew(); // MI18800000279
win_delete(own_window);
/*
* Free Memory
*/
FREE_MEMORY ((void *)data, sizeof (DynamicRecordData));
}
}
/*void recordList_cb(T_MFW_HND Parent, ListMenuData * ListData)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *)Parent)->data;
DynamicRecordData * data = (DynamicRecordData *)win_data->user;
T_MFW_HND win;
TRACE_EVENT("StopwList_cb");
if((ListData->Reason EQ LISTS_REASON_BACK) || (ListData->Reason EQ LISTS_REASON_CLEAR)
|| (ListData->Reason EQ LISTS_REASON_HANGUP))
{
TRACE_EVENT("LISTS_REASON_BACK");
listsDestroy(data->menu_list_data->win);
dynamicRecordMenu_destroy(data->win);
}
}*/
static T_MFW_HND delete_All_create(MfwHnd parent_window)
{
T_MFW_WIN * win;
DeleteData* data = (DeleteData *)ALLOC_MEMORY (sizeof (DeleteData ));
TRACE_EVENT("delete_All_create");
if( data EQ NULL )
{
return NULL;
}
// Create window handler
data->win = win_create(parent_window, 0, E_WIN_VISIBLE, 0);//(T_MFW_CB)dynamic_win_cb);
if( data->win EQ NULL )
{
return NULL;
}
// connect the dialog data to the MFW-window
data->mmi_control.dialog = (T_DIALOG_FUNC)delete_DialogCB;
data->mmi_control.data = data;
win = ((T_MFW_HDR *)data->win)->data;
win->user = (void *)data;
data->parent_win = parent_window;
return data->win;
}
static void delete_DialogCB (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data;
DeleteData* data = (DeleteData *) win_data->user;
int old_color,i;
BOOL flag=FALSE;
T_DISPLAY_DATA display_info;
game_Line line;
switch( event )
{
case DELETE_INITIAL:
for( i=0;i<NUMBER_OF_GROUP;i++ )
{
if( FFS_StopwData.group[i].record[0] )
flag=TRUE;
}
if( !flag )
{
dialog_info_init(&display_info);
display_info.Te
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?