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 + -
显示快捷键?