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

📄 mmiectimedate.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
                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 DATE_SHOW_EC )
        {
            date_time_edt_destroy(edt_data->tida_edt_win);
            SEND_EVENT(tida_data->tida_win,DATE_ENTRY_EC,0,tida_data);
        }                                   /* start date entering      */

        else if( edt_data->state EQ TIME_SHOW_EC )
        {
            date_time_edt_destroy(edt_data->tida_edt_win);
            SEND_EVENT(tida_data->tida_win,TIME_ENTRY_EC,0,tida_data);      /* start time entering      */
        }
        break;
    case KCD_HUP:
    case KCD_RIGHT:                                /* back to previous menu */
        //FFS_flashData.weeklyAlarm_switch=0;//gdy add
        date_time_edt_destroy(edt_data->tida_edt_win);
        SEND_EVENT(tida_data->tida_win,TIDA_ABORT_EC,0,tida_data);
        break;
    case KCD_MNURIGHT:                                /* cursor to right  */
        if( (edt_data->state EQ DATE_ENTRY_EC) || (edt_data->state EQ TIME_ENTRY_EC) )    /* cursor to rigt           */
        {
            if( !edt_data->position ) //光标不在设AM/PM处
            {
                /* 2003.10.15 wyj 修改 检查参数*/
                if( edt_data->state EQ TIME_ENTRY_EC )
                    checkAlarmRightInput(edt_data);

                if( ((edt_data->state EQ DATE_ENTRY_EC) && (edt_data->index EQ 10)) )
                {
                    edt_data->index = 0;
                    //edtChar(edt_data->editor_handle,ecTop);
                }

                if( ((edt_data->state EQ DATE_ENTRY_EC) && ((edt_data->index EQ 2)||(edt_data->index EQ 5))) )
                {
                    edt_data->index++;
                    //edtChar(edt_data->editor_handle,ecRight);
                }
            }
            else
            {
                edt_data->AMANDPM =! edt_data->AMANDPM;
            }
        }
        winShow(win);
        break;
    case KCD_MNULEFT:                            /* cursor to left   */
        if( (!(edt_data->state EQ DATE_SHOW_EC)) && (!(edt_data->state EQ TIME_SHOW_EC)) )
        {
            if( edt_data->state EQ DATE_ENTRY_EC )
            {
                if( edt_data->index EQ 0 )
                {
                    edt_data->index = 9;
                    //	edtChar(edt_data->editor_handle,ecLeft);
                    //	edtChar(edt_data->editor_handle,ecLeft);
                    return MFW_EVENT_CONSUMED;
                }
                else
                    edt_data->index--;

                if( (edt_data->index EQ 2)||(edt_data->index EQ 5) )
                {
                    if( edt_data->index EQ 0 )
                        ;
                    else
                        edt_data->index--;
                    //edtChar(edt_data->editor_handle,ecLeft);
                    //edtChar(edt_data->editor_handle,ecLeft);
                }
            }
            if( edt_data->state EQ TIME_ENTRY_EC )
            {
                if( !edt_data->position )
                    /* 2003.10.15 wyj 修改 检查参数*/
                    checkAlarmLeftInput(edt_data);
                else
                    edt_data->AMANDPM=!edt_data->AMANDPM;
            }
        }
        winShow(win);
        break;
    case KCD_MNUDOWN:
    case KCD_MNUUP:
        if( FFS_flashData.time_format==TWELVE_HOUR )
        {
            edt_data->position=!edt_data->position;
            edt_data->index=0;
            winShow(win);
        }
        break;
    default:
        return MFW_EVENT_CONSUMED;
    }       

    return MFW_EVENT_CONSUMED;
}

/*******************************************************************************

 $Function:  check_date  

 $Description:	 check date after date entering

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
static int check_date(T_MFW_HND win, tidaData* edt_data)
{
    U8 i;
    //T_tida_edt * edt_data = (T_tida_edt *)edt_dat;
    //T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
    //T_tida * tida_data = (T_tida *)win_data->user;
    Date tempdate;

    char internday[3];
    char internmonth[3];
    char internyear[5];
    int value;

    char debug[20];

    TRACE_FUNCTION ("MmiTimeDate:check_date");
    TRACE_EVENT(edt_data->date_string);
    TRACE_EVENT("edt_data->date_string");

    memset(internday, '\0', sizeof(internday));/* initial string  */
    memset(internmonth, '\0', sizeof(internmonth));
    memset(internyear, '\0', sizeof(internyear));

    internday[0] = edt_data->date_string[8];
    internday[1] = edt_data->date_string[9];
    internmonth[0] = edt_data->date_string[5];
    internmonth[1] = edt_data->date_string[6];
    for( i = 0;i<4;i++ )
    {
        internyear[i] = edt_data->date_string[i];
    }

    tempdate.month = atoi(internmonth);
    TRACE_EVENT("month:");
    TraceInt(tempdate.month);
    if( (tempdate.month > 12) || (tempdate.month < 1) )
        return FALSE;

    tempdate.day = atoi(internday);
    TRACE_EVENT("day:");
    TraceInt(tempdate.day);
    if( (tempdate.day > 30) || (tempdate.day < 1) )
    {
        if( tempdate.day EQ 31 )
        {
            switch( tempdate.month )
            {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                break;
            default:
                return FALSE;
            }
        }
        else
            return FALSE;
    }

    tempdate.year = atoi(internyear);

    TRACE_EVENT("year:");
    TraceInt(tempdate.year);

    if( (tempdate.year) < 2000 || (tempdate.year > 2099) )  //zgz,2002.8.16 revise it
        return FALSE;

    if( (tempdate.month EQ 2) && (tempdate.day EQ 29) )
    {
        if( !(tempdate.year%4)&&(tempdate.year%100)||!(tempdate.year%400) )  // zgz,if the year is runnian.
        {
            if( DateTimeEntryMode == DAILY_ALARM )
            {
                FFS_flashData.alarm_day = tempdate.day;
                FFS_flashData.alarm_month = tempdate.month;
                FFS_flashData.alarm_year = tempdate.year;
                if( flash_write() )  // zgz, 2002.8.15 just only write alarm setting to flash
                    return FALSE;
            }
            else
            {
                FFS_flashData.current_day = tempdate.day;
                FFS_flashData.current_month = tempdate.month;
                FFS_flashData.current_year = tempdate.year;
                currdate.day = tempdate.day;
                currdate.month = tempdate.month;
                currdate.year = tempdate.year;
            }
            //flash_write();
            value=updateRtcDate(tempdate);
            TraceInt(value);
            if( value<0 )
                return -1;
            set_latest_alarm();
            return TRUE;
        }
        else
            return FALSE;
    }
    else if( !((tempdate.month EQ 2) && (tempdate.day EQ 30)) )
    {
        if( DateTimeEntryMode == DAILY_ALARM )
        {


            FFS_flashData.alarm_day = tempdate.day;
            FFS_flashData.alarm_month = tempdate.month;
            FFS_flashData.alarm_year = tempdate.year;
            if( flash_write() )  // zgz, 2002.8.15 just only write alarm setting to flash
                return FALSE;
        }
        else
        {
            FFS_flashData.current_day = tempdate.day;
            FFS_flashData.current_month = tempdate.month;
            FFS_flashData.current_year = tempdate.year;             
            currdate.day = tempdate.day;
            currdate.month = tempdate.month;
            currdate.year = tempdate.year;
        }
        //flash_write();
        value=updateRtcDate(tempdate);
        TraceInt(value);
        if( value<0 )
            return -1;
        set_latest_alarm();     

        return TRUE;
    }
    else
    {
        return FALSE;
    }
}
/*******************************************************************************

 $Function:  check_time  

 $Description:	check time after time entering

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
/* 2003.10.28 wyj 修正AM/PM错误 */
static int check_time (T_MFW_HND win, tidaData* edt_data)
{
    //T_tida_edt * edt_data = (T_tida_edt *)edt_dat;
    //T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
    //T_tida * tida_data = (T_tida *)win_data->user;
    CLOCK tempclock;
    char debug[50];
    char internmin[3];
    char internhour[3];
    char internsec[3];

    memset(internmin, '\0', sizeof(internmin));/* initial string  */
    memset(internhour, '\0', sizeof(internhour));

    internhour[0] = edt_data->time_string[0];
    internhour[1] = edt_data->time_string[1];
    internmin[0] = edt_data->time_string[3];
    internmin[1] = edt_data->time_string[4];
    internsec[0] = edt_data->time_string[6];
    internsec[1] = edt_data->time_string[7];

    tempclock.hour = atoi(internhour);
    if( tempclock.hour > 23 )
        return FALSE;

    tempclock.min = atoi(internmin);
    if( tempclock.min >59 )
        return FALSE;

    tempclock.sec = atoi(internsec);
    if( tempclock.sec >59 )
        return FALSE;
    /*	if (DateTimeEntryMode == DAILY_ALARM)
    {	
    FFS_flashData.dailyAlarm_hour = tempclock.hour;		
    FFS_flashData.dailyAlarm_min = tempclock.min;
    FFS_flashData.dailyAlarm_switch = 1;
    flash_write();
    iconsSetState(iconIdAlarm);
    set_latest_alarm();
}*/
    //else if(DateTimeEntryMode == SETTING)
    //{	
    if( edt_data->tmode_flag == 1 )
    {
        FFS_flashData.time_format = TWELVE_HOUR;
    }
    else
    {
        FFS_flashData.time_format = TWENTYFOUR_HOUR;
    }
    flash_write();

    /* 2003.10.28 wyj 修正AM/PM错误 */
    if( FFS_flashData.time_format == TWELVE_HOUR )
    {
        if( edt_data->AMPM_index )            //PM
        {
            if( tempclock.hour<12 && tempclock.hour>0 )
                tempclock.hour += 12;
        }
    }
    FFS_flashData.current_hour  = tempclock.hour;       
    FFS_flashData.current_minute = tempclock.min;

    currclock.hour = tempclock.hour;
    currclock.min = tempclock.min;
    currclock.sec = tempclock.sec;
    //zgz,2002.8.15 ClockSet(&currclock);
    if( updateRtcClock(tempclock)<0 )
        return -1;
    /*}
    //else if(DateTimeEntryMode == WEEKLY_ALARM)
    {
        FFS_flashData.weeklyAlarm_hour= tempclock.hour;		
        FFS_flashData.weeklyAlarm_min= tempclock.min;
        flash_write();		
        iconsSetState(iconIdAlarm);
    }*/
    set_latest_alarm();

    return TRUE;
}


static int check_time1(T_MFW_HND win, void * edt_dat)
{
    T_tida_edt * edt_data = (T_tida_edt *)edt_dat;
    T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
    T_tida * tida_data = (T_tida *)win_data->user;
    CLOCK tempclock;
    char debug[50];
    char internmin[3];
    char internhour[3];

    memset(internmin, '\0', sizeof(internmin));/* initial string  */
    memset(internhour, '\0', sizeof(internhour));

    internhour[0] = edt_data->edtbuf1[0];
    internhour[1] = edt_data->edtbuf1[1];
    internmin[0] = edt_data->edtbuf1[3];
    internmin[1] = edt_data->edtbuf1[4];

    tempclock.hour = atoi(internhour);
    if( tempclock.hour > 23 )
        return FALSE;

    tempclock.min = atoi(internmin);
    if( tempclock.min >59 )
        return FALSE;
    if( DateTimeEntryMode == DAILY_ALARM )
    {
        FFS_flashData.dailyAlarm_hour = tempclock.hour;     
        FFS_flashData.dailyAlarm_min = tempclock.min;
        FFS_flashData.dailyAlarm_switch = 1;
        flash_write();
        iconsSetState(iconIdAlarm);
        //set_latest_alarm();
    }
    else if( DateTimeEntryMode == SETTING )
    {
        FFS_flashData.current_hour = tempclock.hour;        
        FFS_flashData.current_minute = tempclock.min;

        currclock.hour = tempclock.hour;

⌨️ 快捷键说明

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