⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmiectimedate.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
        uMode = dspl_Enable(0);

        dspl_ClearAll();

        if( tida_data->state EQ TIME_ENTRY_EC )
        {
            TRACE_EVENT("dspl_title");

            /* background display */
            TD_drawBkg(BG_rect, BG_attr);

            /* title display */
            /* 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);
            */
            /* 2004/05/20 yhf modify */
#if(MAIN_LCD_SIZE==3)
			if(Mmi_getCurrentLanguage()==CHINESE_LANGUAGE)//标题显示
				dspl_colorTextOut(32,0,DSPL_TXTATTR_TRANSPARENT,MmiRsrcGetText(TxtEnterTime),0x0);
			else			
				dspl_colorTextOut((102-wstrlen(MmiRsrcGetText(TxtEnterTime))*6)/2,0,DSPL_TXTATTR_TRANSPARENT,MmiRsrcGetText(TxtEnterTime),0x0);
#elif(MAIN_LCD_SIZE==4)
            if( Mmi_getCurrentLanguage()==CHINESE_LANGUAGE )
                dspl_colorTextOut(32,0,DSPL_TXTATTR_TRANSPARENT,MmiRsrcGetText(TxtEnterTime),0x0);
            else
                dspl_colorTextOut((102-wstrlen(MmiRsrcGetText(TxtEnterTime))*6)/2,0,DSPL_TXTATTR_TRANSPARENT,MmiRsrcGetText(TxtEnterTime),0x0);
#endif
            /* input rect display */
            if( !edt_data->position )         //focus on input rect
            {
                TD_drawSolidRectangle(AL_input_rect, AL_input_attr1);
                l       = AL_index_l;
#if(MAIN_LCD_SIZE==3)
				l.x1	= AL_index_l.x1 + edt_data->index*8;
				l.x2	= AL_index_l.x2 + edt_data->index*8;
#elif(MAIN_LCD_SIZE==4)
                l.x1    = AL_index_l.x1 + edt_data->index*8;
                l.x2    = AL_index_l.x2 + edt_data->index*8;
#endif
                TD_drawLine(l, AL_index_c);
            }
            else
            {
                TD_drawSolidRectangle(AL_input_rect, AL_input_attr2);
            }    
            /* hint rect dispaly */
#if(MAIN_LCD_SIZE==3)
			dspl_colorTextOut(30+EX, 20, DSPL_TXTATTR_TRANSPARENT, edt_data->edtbuf1,0 );
#elif(MAIN_LCD_SIZE==4)
			dspl_colorTextOut(40+EX, 57, DSPL_TXTATTR_TRANSPARENT, edt_data->edtbuf1,0 );
#endif			
            TD_drawSolidRectangle(AL_hint_rect, AL_hint_attr);
            set_font_type(UNI12X12_FONT);
#if(MAIN_LCD_SIZE==4)
            if( FFS_flashData.time_format==TWENTYFOUR_HOUR )
            {
                if( Mmi_getCurrentLanguage()==CHINESE_LANGUAGE )
                    dspl_colorTextOut(37+EX, 103, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtTwentyfourHour),0);
                else
                    dspl_colorTextOut(36+EX, 103, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtTwentyfourHour),0);
            }
            else
            {
                if( Mmi_getCurrentLanguage()==CHINESE_LANGUAGE )
                    dspl_colorTextOut(37+EX, 103, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtTwelveHour),0);
                else
                    dspl_colorTextOut(36+EX, 103, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtTwelveHour),0);
            }
#elif(MAIN_LCD_SIZE==3)
			if(FFS_flashData.time_format==TWENTYFOUR_HOUR)
			{       
				if(Mmi_getCurrentLanguage()==CHINESE_LANGUAGE)
					dspl_colorTextOut(28+EX, 50, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtTwentyfourHour),0);
				else
					dspl_colorTextOut(28+EX, 50, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtTwentyfourHour),0);
			}
			else
			{		
				if(Mmi_getCurrentLanguage()==CHINESE_LANGUAGE)
					dspl_colorTextOut(28+EX, 50, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtTwelveHour),0);
				else
					dspl_colorTextOut(28+EX, 50, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtTwelveHour),0);
			}
#endif
            /* AM/PM rect display */
            if( FFS_flashData.time_format==TWELVE_HOUR )
            {
                memset(string,0,4);

                if( edt_data->AMANDPM )
                    strcpy(string,"PM");
                else
                    strcpy(string,"AM");    

                if( edt_data->position )      //focus on AM/PM rect
                {
                    TD_drawSolidRectangle(AL_AP_rect, AL_AP_attr);

                    /*dspl_BitBlt(35+EX, 38, 4, 8, 0, (void *)left_key, DSPL_BMPXOR);
                    dspl_BitBlt(35+EX, 38, 4, 8, 0, (void *)left_key_mask, DSPL_BMPAND);
                    dspl_BitBlt(35+EX, 38, 4, 8, 0, (void *)left_key, DSPL_BMPXOR);

                    dspl_BitBlt(64+EX, 38, 4, 8, 0, (void *)right_key, DSPL_BMPXOR);
                    dspl_BitBlt(64+EX, 38, 4, 8, 0, (void *)right_key_mask, DSPL_BMPAND);
                    dspl_BitBlt(64+EX, 38, 4, 8, 0, (void *)right_key, DSPL_BMPXOR);*/

                    dspl_colorTextOut(52+EX, 81, DSPL_TXTATTR_TRANSPARENT, string, 0xffffff);   
                }
                else
                {
                    dspl_colorTextOut(52+EX, 81, DSPL_TXTATTR_TRANSPARENT, string, 0x000000);   
                }
            }

            /*  icon display */
            /* 2004/06 sunsj modify for picture manage */
            //dspl_BitBlt(13+EX, 59, idl_Attr[iconIdAlarm].area.sx, idl_Attr[iconIdAlarm].area.sy, 0, idl_Attr[iconIdAlarm].icons, DSPL_BMPXOR);
            //dspl_BitBlt(13+EX, 59, idl_AttrMask[iconIdAlarm].area.sx, idl_AttrMask[iconIdAlarm].area.sy, 0, idl_AttrMask[iconIdAlarm].icons, DSPL_BMPAND);
            //dspl_BitBlt(13+EX, 59, idl_Attr[iconIdAlarm].area.sx, idl_Attr[iconIdAlarm].area.sy, 0, idl_Attr[iconIdAlarm].icons, DSPL_BMPXOR);
#if(MAIN_LCD_SIZE==3)
			DRAW_ICON_ATTRIBUTE(ICON_IDLESTATE, 3+EX,20, iconIdAlarm, ICON_MASK|ICON_LOCATION);
#elif(MAIN_LCD_SIZE==4)
            DRAW_ICON_ATTRIBUTE(ICON_IDLESTATE, 13+EX, 59, iconIdAlarm, ICON_MASK|ICON_LOCATION);
#endif
            /***end yhf modify***/

            displaySoftKeys(TxtSoftOK,TxtSoftBack);
        }
        else if( tida_data->state EQ TIME_SHOW_EC )
        {
            if( (DateTimeEntryMode == SETTING) || (FFS_flashData.alarm_day == 0) )
                sprintf(lin2,"%02d:%02d",currclock.hour, currclock.min);
            else
                sprintf(lin2,"%02d:%02d",FFS_flashData.alarm_hour, FFS_flashData.alarm_minute);

            strncpy(edt_data->edtbuf1,lin2,MAX_LEN_TIME);
            edtShow(edt_data->editor_handle);
            edtChar(edt_data->editor_handle, ecTop);
        }

        dspl_Enable(uMode );
        return 1;
    }
    return 0;
}
/*******************************************************************************

 $Function:  tida_editor  

 $Description:	 dialog function for editor for time and date

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
/* "每日闹钟" "每周闹钟"窗口事件处理 
 * 2003.10.28 wyj 解决AM/PM问题 */
static void tida_editor(T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
    T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
    T_tida_edt * edt_data = (T_tida_edt *)win_data->user;

    T_tida * tida_data = (T_tida *)parameter;//tida main data
    char lin2[MAX_DIG_TIDA];
    int hour;

    edt_data->state = tida_data->state;

    TRACE_FUNCTION("MmiTimeDate:tida_editor");

    /* depending on event */
    switch( event )
    {
    case DATE_SHOW_EC:
    case TIME_SHOW_EC:
        memset(edt_data->edtbuf1, '\0', sizeof(edt_data->edtbuf1));/* initial buffer  */
        edt_data->index = 0;
        winShow(edt_data->tida_edt_win);
        break;
    case DATE_ENTRY_EC:
    case TIME_ENTRY_EC:
        memset(lin2,0,sizeof(lin2));
        memset(edt_data->edtbuf1,0,sizeof(edt_data->edtbuf1));
        if( DateTimeEntryMode == SETTING )
            sprintf(lin2,"%02d:%02d",currclock.hour, currclock.min);
        else if( DateTimeEntryMode == DAILY_ALARM )
        {
            hour=FFS_flashData.dailyAlarm_hour;
            /* 2003.10.28 wyj 解决AM/PM问题 */
            if( FFS_flashData.time_format == TWELVE_HOUR )
            {
                if( hour > 11 )               //PM
                {
                    edt_data->AMANDPM = 1;
                    if( hour != 12 )
                        hour %= 12;
                }
                else                        //AM
                {
                    edt_data->AMANDPM = 0;
                }
            }
            sprintf(lin2,"%02d:%02d",hour, FFS_flashData.dailyAlarm_min);
        }
        else if( DateTimeEntryMode == WEEKLY_ALARM )
        {
            hour=FFS_flashData.weeklyAlarm_hour;    //2003.10.28 wyj 修正
            /* 2003.10.28 wyj 解决AM/PM问题 */
            if( FFS_flashData.time_format == TWELVE_HOUR )
            {
                if( hour > 11 )               //PM
                {
                    edt_data->AMANDPM = 1;
                    if( hour != 12 )
                        hour %= 12;
                }
                else                        //AM
                {
                    edt_data->AMANDPM=0;
                }
            }
            sprintf(lin2,"%02d:%02d",hour, FFS_flashData.weeklyAlarm_min);
        }
        edt_data->position=0;
        strcpy(edt_data->edtbuf1,lin2);
        TRACE_EVENT(edt_data->edtbuf1);
        winShow(edt_data->tida_edt_win);
        break;
    default:
        break;
    }
}
/*******************************************************************************

 $Function:  tida_edt_kbd_cb  

 $Description:	 keyboard event handler for time and date

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
/* "每日闹钟" "每周闹钟"按键处理
 * 2003.10.28 wyj 12/24小时制问题 */
static int tida_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_tida_edt * edt_data = (T_tida_edt *)win_data->user;//tida edt data

    T_MFW_WIN * win_tida =((T_MFW_HDR *)edt_data->parent_win)->data;
    T_tida * tida_data = (T_tida *)win_tida->user; // tida main data

    //nm T_DateTime currentTime;
    char lin1[MAX_LEN_DATE];
    char lin2[MAX_LEN_TIME];
    T_DISPLAY_DATA display_info;
    int return_value=1;
    int hour;
    int minute;
    char temp_hour[3];
    char temp_minute[3];
    //nm   memset(lin1, '\0', sizeof(lin1));/* initial string  */
    //nm   memset(lin2, '\0', sizeof(lin2));

    TRACE_FUNCTION ("MmiTimeDate: tida_edt_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->state EQ DATE_ENTRY_EC )                  /* date entering            */
        {
            if( edt_data->index < (MAX_LEN_DATE - 1) )
            {
                if( (edt_data->index NEQ 2) && (edt_data->index NEQ 5) )
                {
                    edt_data->edtbuf1[edt_data->index] = '0' + kc->code;
                    edtChar(edt_data->editor_handle,edt_data->edtbuf1[edt_data->index]);
                    edt_data->index++;
                }
                if( (edt_data->index EQ 2) || (edt_data->index EQ 5) )
                {
                    edtChar(edt_data->editor_handle,'/');
                    edt_data->edtbuf1[edt_data->index] = '/';
                    edt_data->index++;
                }
                if( edt_data->index == 10 )  //zgz,2002.8.16 added
                {
                    edt_data->index = 0;
                    edtChar(edt_data->editor_handle,ecTop);
                }
            }
        }
        else if( edt_data->state EQ TIME_ENTRY_EC )             /* time entering            */
        {
            /* 2003.10.15 wyj 加入 检查输入*/   
            checkAlarmNumInput(edt_data,  kc->code);
        }
        winShow(win);
        break;

    case KCD_LEFT:                                 /* select and ok button */
    case KCD_OK:
        if( edt_data->state EQ DATE_ENTRY_EC )
        {
            if( check_date1(win,edt_data)>0 )
            {
                TRACE_EVENT("datecheck ok");
                edtClear(edt_data->editor_handle);
                edtHide(edt_data->editor_handle);   /* verification date successfull */
                date_time_edt_destroy(edt_data->tida_edt_win);
                SEND_EVENT(tida_data->tida_win,ENTRY_OK_EC,0,tida_data); //SEND_EVENT(tida_data->tida_win,TIME_ENTRY_EC,0,tida_data);
            }
            else
            {
                memset(edt_data->edtbuf1, '\0', sizeof(edt_data->edtbuf1));/* initial buffer  */
                edt_data->index = 0;
                sprintf(lin1,"%02d/%02d/%04d",currdate.day,currdate.month,currdate.year);
                //sprintf(lin1,"%d/%d/%d",currdate.day,currdate.month,currdate.year);
                strncpy(edt_data->edtbuf1,lin1,MAX_LEN_DATE);
                edtReset(edt_data->editor_handle);
                edtShow(edt_data->editor_handle);
                edtChar(edt_data->editor_handle, ecTop);

                dialog_info_init(&display_info);//gdy add 						
                display_info.TextId2     =TxtFailed;                       
                display_info.Time       = FOREVER;
                display_info.iconindex = REMIND_FAILURE;
                display_info.Callback     = (T_VOID_FUNC)NULL;//auto_dialog_cb;

                /* Call Info Screen	*/
                info_dialog (edt_data->parent_win, &display_info);
            }
        }
        else if( edt_data->state EQ TIME_ENTRY_EC )
        {
            memset(temp_hour,0,3);
            memset(temp_minute,0,3);
            temp_hour[0]=edt_data->edtbuf1[0];
            temp_hour[1]=edt_data->edtbuf1[1];
            temp_minute[0]=edt_data->edtbuf1[3];
            temp_minute[1]=edt_data->edtbuf1[4];
            hour=atoi(temp_hour);
            minute=atoi(temp_minute);
            /* 2003.10.28 wyj 12/24小时制问题 */
            if( FFS_flashData.time_format == TWELVE_HOUR )
            {
                if( edt_data->AMANDPM )
                {
                    if( hour<12 && hour>0 )
                    {
                        hour += 12;
                    }
                }

                memset(edt_data->edtbuf1,0,sizeof(edt_data->edtbuf1));
                sprintf(edt_data->edtbuf1,"%02d:%02d",hour,minute);
            }

            if( check_time1(win,edt_data)>0 )
            {
                TRACE_EVENT("timecheck ok");
                edtClear(edt_data->editor_handle);
                edtHide(edt_data->editor_handle);   /* verification date successfull */
                date_time_edt_destroy(edt_data->tida_edt_win);
                SEND_EVENT(tida_data->tida_win,ENTRY_OK_EC,0,tida_data);
            }
            else
            {
                memset(edt_data->edtbuf1, '\0', sizeof(edt_data->edtbuf1));/* initial buffer  */
                edt_data->index = 0;

                sprintf(lin2,"%02d:%02d",currclock.hour, currclock.min);
                strncpy(edt_data->edtbuf1,lin2,MAX_LEN_TIME);
                edtReset(edt_data->editor_handle);
                edtShow(edt_data->editor_handle);
                edtChar(edt_data->editor_handle, ecTop);

                dialog_info_init(&display_info);//gdy add 						

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -