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

📄 mmitimedate.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
{
    T_MFW_HND       win  = mfw_parent (mfw_header());
    T_MFW_WIN     * win_data = ((T_MFW_HDR *)win)->data;
    ALARM_DATA* data = (ALARM_DATA*)win_data->user;

    TRACE_EVENT("alarm_tim_cb");
    /* 2004/07/12 sunsj modify for alarm in simtoolkit */
    if( winIsFocussed(data->win) )
    {
    if( (data->id!=ALARM_STROKE)&&(!call_win_flag)&&(!call_data.win_incoming)&&(!call_data.win_calling) )
    {
        /*2004/05/31 yhf modify*/
        if( data->count>60 )              // MI18800000263
        {
            //Stopplayingdevice();  xsf changed 12.31
            StopPlayByReasonId(ALARMPLAY);
            timStop(data->info_time);
            alarm_destroy(win);
        }
        else
        {
            data->count++;
            data->animal_id=!data->animal_id;  
            if( data->AfterCall )
            {
                data->AfterCall++;
                if( data->AfterCall==3 )
                {
                    StartPlayByReason(ALARMPLAY,0);
                }
            }

            if( data->id==ALARM_ODINARY )
            {
                switch( data->count%2 )
                {
                case 0:
                    /* 2004/06 sunsj modify for picture manage */
                    DRAW_ICON_SEL(ICON_ALARM_ANIM, 0);
                    //dspl_BitBlt(40, 69, 49, 57, 0, (void*)alarm_animal1, 0);
                    break;
                case 1:
                    /* 2004/06 sunsj modify for picture manage */
                    DRAW_ICON_SEL(ICON_ALARM_ANIM, 0);
                    DRAW_ICON_SEL(ICON_ALARM_ANIM, 1);
                    //dspl_BitBlt(40, 69, 49, 57, 0, (void*)alarm_animal1, 0);
                    //dspl_BitBlt(40, 69, 49, 18, 0, (void*)alarm_animal2, 0);
                    break;
                }                
            }
            //end yhf modify

            timStart(data->info_time);
            /* if(data->id==ALARM_ODINARY)
                 {
                  dspl_Clear(40, 53, 80, 106);
                  if(!data->animal_id)
                     dspl_BitBlt(40, 53, 40, 53, 0, (void*)alarm_animal1, 0);
                  else
                     dspl_BitBlt(0, 17, 120, 128, 0, (void*)alarm_animal2, 0);
                 }*/
        }
    }
    else if( data->id==ALARM_STROKE )
    {
        if( data->count>20 )
        {
            StopTone();
            timDelete(data->info_time);
            alarm_destroy(win);
        }
        else
        {
            data->count++;              
            timStart(data->info_time);                              
        }
    }
    else
    {
        //timDelete(data->info_time);
        //alarm_destroy(win);
        //StopPlayByReasonId(ALARMPLAY);
        if( data->Melody_index )
        {
            data->Melody_index=FALSE;
        }
        //timStart(data->info_time);
    }
}
    else
    {
        StopPlayByReasonId(ALARMPLAY);
        //StopTone();
        timDelete(data->info_time);
        alarm_destroy(win);
    }
}


static int alarm_kbd_cb (MfwEvt e, MfwKbd *kc)
{
    T_MFW_WIN * win_data = ((T_MFW_HDR *)alarm_win)->data;
    ALARM_DATA* data = (ALARM_DATA *)win_data->user;  


    TraceInt(kc->code);
    switch( kc->code )
    {
    case KCD_LEFT:
        TRACE_EVENT("gdy KCD_LEFT");
        if( data->id==ALARM_SCHEDULE )
        {
            if( Flash_ScheRead((char*)ScheTable[FFS_flashData.latest_alarm.schedule_position/SCHEDULE_NUMBER])>0 )
            {
                if( FFS_ScheData.FfsSche[FFS_flashData.latest_alarm.schedule_position%SCHEDULE_NUMBER].type==PHONE )
                {
                    //Stopplayingdevice();  xsf changed 12.31
                    StopPlayByReasonId(ALARMPLAY);                                    
                    callNumber((UBYTE*)FFS_ScheData.FfsSche[FFS_flashData.latest_alarm.schedule_position%SCHEDULE_NUMBER].text);
                    alarm_destroy(alarm_win);
                    break;
                }
            }
            //Stopplayingdevice();  xsf changed 12.31
            StopPlayByReasonId(ALARMPLAY);
            SEND_EVENT(alarm_win,ALARM_EXIT,0,0);
        }
        break;

    case KCD_F4:
        if( GetHallStatus() )             //hall on 
            break;
    case KCD_RIGHT:
    case KCD_HUP:
        timStop(data->info_time);       //MI18800000246
        StopPlayByReasonId(ALARMPLAY);
        //StopTone();
        SEND_EVENT(alarm_win,ALARM_EXIT,0,0);
        break;

    case KCD_ABC:         // 2004.4.5 WYJ fix MI18800000155
        break;

    default:  
        //timStop(data->info_time);		MI18800000246
        //StopPlayByReasonId(ALARMPLAY);
        //StopTone();
        //SEND_EVENT(alarm_win,ALARM_EXIT,0,0);
        break;
    }
    return MFW_EVENT_CONSUMED;
}


static int alarm_win_cb  (T_MFW_EVENT event,T_MFW_WIN * win)
{
    ALARM_DATA* data = (ALARM_DATA *)win->user;
    T_MFW_WIN * edt_win =((T_MFW_HDR *)data->parent_win)->data;

    TRACE_FUNCTION ("MmiTimeDate:alarm_win_cb");


    if( event EQ MfwWinVisible )
    {
        //dspl_ClearAll();
        disp_alarm_screen(data);

        return 1;
    }

    return 0;  
}

void disp_alarm_screen(ALARM_DATA* data)
{
    char text[5];
    char stroke_string[8];
    int old_color;

    //2004/05/25 yhf modify
    //StartTone();
    switch( data->id )
    {
    case ALARM_ODINARY:
        if( call_data.win_incoming||call_data.win_calling||call_win_flag )
        {

            if( FFS_flashData.latest_alarm.schedule_position )
                dspl_colorTextOut(28, 125 , DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtWeeklyAlarm), 0xffffff);
            else
                dspl_colorTextOut(28, 125 , DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtDailyAlarm), 0xffffff); 

            break;
        }
        dspl_ClearAll();
        draw_special_background();
        /* 2004/06 sunsj modify for picture manage */
        DRAW_ICON_SEL(ICON_ALARM_ANIM, 0);
        //dspl_BitBlt(40, 69, 49, 57, 0, (void*)alarm_animal1, 0);
        sprintf(text, "%02d:%02d", FFS_flashData.latest_alarm.hour, FFS_flashData.latest_alarm.minute);
        if( Mmi_getCurrentLanguage()==CHINESE_LANGUAGE )
        {
            dspl_colorTextOut( 45, 28 , DSPL_TXTATTR_TRANSPARENT, text, 0xffffff);
            if( FFS_flashData.latest_alarm.schedule_position )
                dspl_colorTextOut(32, 3 , DSPL_TXTATTR_WHITE_EDGE, MmiRsrcGetText(TxtWeeklyAlarm), 0x000000);
            else
                dspl_colorTextOut(32, 3 , DSPL_TXTATTR_WHITE_EDGE, MmiRsrcGetText(TxtDailyAlarm), 0x000000);  
        }
        else
        {
            if( FFS_flashData.latest_alarm.schedule_position )
                dspl_colorTextOut(25, 3 , DSPL_TXTATTR_WHITE_EDGE, MmiRsrcGetText(TxtWeeklyAlarm), 0x000000);
            else
                dspl_colorTextOut(25, 3 , DSPL_TXTATTR_WHITE_EDGE, MmiRsrcGetText(TxtDailyAlarm), 0x000000);  
            dspl_colorTextOut( 45, 28 , DSPL_TXTATTR_TRANSPARENT, text, 0xffffff);
        }

        displaySoftKeys(0, TxtSoftConfirm);
        break;
    case ALARM_SCHEDULE:
        if( call_data.win_incoming||call_data.win_calling||call_win_flag )
        {
            dspl_colorTextOut(28, 125 , DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtSchedule), 0xffffff);  
            break;
        }
        dspl_ClearAll();
        if( Flash_ScheRead((char*)ScheTable[FFS_flashData.latest_alarm.schedule_position/SCHEDULE_NUMBER])>0 )
        {
            if( FFS_ScheData.FfsSche[FFS_flashData.latest_alarm.schedule_position%SCHEDULE_NUMBER].type==PHONE )
            {
                TRACE_EVENT("PHONE");
                dspl_colorTextOut(35, 20 , 0, MmiRsrcGetText(TxtCall), 0x000000);
                dspl_colorTextOut(60-strlen((char*)(FFS_ScheData.FfsSche[FFS_flashData.latest_alarm.schedule_position%70].text))*4, 60 , 0, (char*)FFS_ScheData.FfsSche[FFS_flashData.latest_alarm.schedule_position%70].text,0xff0000);  
                displaySoftKeys(TxtSoftCall, TxtSoftBack);
#if(MAIN_LCD_SIZE==3)
				draw_softkeybar_fourdirection_arrow();//jhxu720 add
#endif
            }
            else
            {
                scheDataDisplay(&FFS_ScheData.FfsSche[FFS_flashData.latest_alarm.schedule_position%SCHEDULE_NUMBER]);
                // dspl_colorTextOut(0,16,0,(char*)FFS_ScheData.FfsSche[FFS_flashData.latest_alarm.schedule_position%70].text,0x0000ff);
                displaySoftKeys(0, TxtSoftConfirm);
            }       
        }
        /*end yhf modify*/
        break;
    case ALARM_STROKE:
        dspl_colorTextOut(28, 30 , 0, MmiRsrcGetText(TxtStroke), 0x0000ff);  
        memset(stroke_string,0,8);
        sprintf(stroke_string,"%02d:%02d",currclock.hour,currclock.min);
        dspl_colorTextOut(40, 60, 0, (char *)stroke_string, 0x0000ff);
        displaySoftKeys(0, TxtSoftConfirm);
#if(MAIN_LCD_SIZE==3)
		draw_softkeybar_fourdirection_arrow();//jhxu720 add
#endif
        break;
    }
    if( data->id!=ALARM_STROKE )
    {
        TRACE_EVENT("ALARM_STROKE");
        TraceInt(data->Melody_index);
        if( !data->Melody_index )
        {
            //StartPlayByReason(ALARMPLAY,0);
            data->AfterCall++;
            data->Melody_index=TRUE;
#ifndef FOR_FTA_CTA
            timStart(data->info_time);
#endif
        }
    }
}

void alarm_destroy(T_MFW_HND own_window)
{
    T_MFW_WIN     * win  = ((T_MFW_HDR *)own_window)->data;
    ALARM_DATA* data   = (ALARM_DATA*)win->user;


    alarm_win=NULL;
    set_latest_alarm();

    /*2003/12/26,talcon add outer Idle handle */
    setOuterState(OUTERIDLESTATE_ALERT,0,0);//2004-03-23 Sunny modify

    TRACE_EVENT("alarm_destroy");
    if( own_window )
    {
        /*
         * Delete WIN Handler
         */


        win_delete (own_window);
        /*
         * Free Memory
        */
        FREE_MEMORY ((void *)data, sizeof (ALARM_DATA));
    }
}




void set_latest_alarm()
{
    char timedate_string1[20];
    char timedate_string2[20];
    char timedate_string3[20];
    char displaystring[20];
    char temp_str[4];
    long t1=0,t2=0,t3=0,t4=0;
    TIMEDATE today;
    week_date today_date;
    week_date next_date;
    MONTHTABLE month_table;
    T_RTC_DATE_TIME time_date;
    T_RV_RETURN path;
    int i,t_string,t_string1;

    TRACE_EVENT("set_latest_alarm");
    //lxj
    Flash_ScheRead((char *)ScheTable[0]);
    //lxj
    GetTimeDate(currdate.year, currdate.month, currdate.day, &today);

    t1=currdate.year-2000;
    t1=t1*13+currdate.month;
    t1=t1*32+currdate.day;
    t1=t1*61+currclock.hour;
    t1=t1*61+currclock.min;

    FFS_flashData.latest_alarm.alarm_type=0;    
    t3=t1;
    TraceInt(t3);

    //autopower open time
    if( FFS_flashData.poweron_switch )
    {

        t2=currdate.year-2000;
        t2=t2*13+currdate.month;
        t2=t2*32+currdate.day;
        t2=t2*61+FFS_flashData.opentime[0];
        t2=t2*61+FFS_flashData.opentime[1];
        // if(t_string>0)//gdy 03/03/04
        if( t2>t1 )
        {
            if( (t2<t3)||(t1==t3) )
            {
                // strcpy(timedate_string3,timedate_string2);//gdy 03/03/04
                t3=t2;
                FFS_flashData.latest_alarm.alarm_type=AUTOPOWER;
            }
            //else if(t_string==0)//gdy 03/03/04
            else if( t2==t3 )
            {
                FFS_flashData.latest_alarm.alarm_type=AUTOPOWER;
            }
        }

⌨️ 快捷键说明

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