コード例 #1
0
ファイル: win_timer_set.c プロジェクト: Janesak1977/ali3602
/*
return value:
	 -1 :   wakeup_year  <= 2000 || wakeup_year>2100
	 -2 :   wakeup_month<0 || wakeup_month>12
	 -3 :   wakeup_day not valied in the wakeup_year & wakeup_month
	 -4 :   on time hour > 23
	 -5 :   on timer minute > 59	 
	 -6 :   duration minute > 59
	 -7 :   add timer the wakeup date & time < current time
	 -8:    add timer conflict with other timers
*/
INT32  win_timerset_check_and_save(void)
{
	EDIT_FIELD	*edf;
	UINT16 ch_idx,ch_cnt;
	P_NODE p_node;
	date_time dt,wkdt;
	UINT32 val,duration;
	INT32 ret;
	
	TIMER_SET_CONTENT* timer;
	
	timer = &timer_set;

	timer->timer_mode = TIMER_MODE;
	timer->timer_service = TIMER_SERVICE_TYPE;
	if(timer->timer_service == TIMER_SERVICE_MESSAGE)
		timer->wakeup_message = TIMER_SERVICE_INFO;
	else
	{
		get_prog_at(TIMER_SERVICE_INFO,&p_node);
		timer->wakeup_channel = p_node.prog_id;
#ifdef DVR_PVR_SUPPORT
 		if(timer->timer_service == TIMER_SERVICE_DVR_RECORD)
 		{
 			timer->wakeup_message = TIMER_REC_TYPE;
 		}
#endif
	}

	edf = &timer_edf_wakeupdate;
	OSD_GetEditFieldIntValue(edf,&val);
	wkdt.year = val / 10000;
	val -= wkdt.year*10000;
	wkdt.month = val / 100;
	val -= wkdt.month*100;
	wkdt.day = val;

	
	wkdt.weekday = OSD_GetMultiselSel(&timer_msel_wakeupweekday);

	
	edf = &timer_edf_wakeuptime;
	OSD_GetEditFieldIntValue(edf,&val);
	wkdt.hour = val/100;
	val -= wkdt.hour*100;
	wkdt.min = val;
	wkdt.sec = 0;
	
	ret = api_check_valid_date(wkdt.year,wkdt.month,wkdt.day);
	if(ret != 0)
		return ret;
	
	if(wkdt.hour > 23)
		return -4;	
	if(wkdt.min>59)
		return -5;

	if(timer_set_check_starttime_flag)
	{
		if(timer->timer_mode != TIMER_MODE_OFF)
		{
			get_local_time(&dt);
			if(api_compare_day_time(&wkdt,&dt) < 0)
				return -7;
		}
	}
	else
	{
		if(timer->timer_mode != TIMER_MODE_OFF)
		{
/*		
			if(timer->wakeup_state == TIMER_STATE_RUNING)
			{
			}
*/			
		}		
	}

	
	if(timer->timer_mode != TIMER_MODE_OFF)
	{

		timer->wakeup_year = wkdt.year;
		timer->wakeup_month= wkdt.month;
		timer->wakeup_day = wkdt.day;
		timer->wakeup_time =  wkdt.hour*60 + wkdt.min;			
	}
	
	
	edf = &timer_edf_duration;
	OSD_GetEditFieldIntValue(edf,&val);
	duration = val/100*60 + val%100;
	
	if(timer->timer_service ==  TIMER_SERVICE_MESSAGE)
		timer->wakeup_duration_time = 0;
	else
	{
		if(val % 100>59)
			return -6;
		timer->wakeup_duration_time = duration;
	}

	ret = IsValidTimer(timer);
	if(ret==0)
		return -8;
	
	return 0;
}
コード例 #2
0
ファイル: win_time.c プロジェクト: alkap007/ali3606
static VACTION time_con_keymap(POBJECT_HEAD pObj, UINT32 key)
{
    VACTION act;
    SYSTEM_DATA* p_sys_data=sys_data_get();
    date_time dt;
    INT32 hoffset, moffset;
    UINT8 save;
    INT32 ret1,ret2;

    switch(key)
    {
    case V_KEY_UP:
        act = VACT_CURSOR_UP;
        break;

    case V_KEY_DOWN:
        act = VACT_CURSOR_DOWN;
        break;

    case V_KEY_EXIT:
    case V_KEY_MENU:
        act = VACT_CLOSE;
        win_time_get_input();
        if(p_sys_data->local_time.buseGMT)
        {
            sys_data_gmtoffset_2_hmoffset(&hoffset, &moffset);
            set_STC_offset( hoffset, moffset, 0);
            get_UTC(&dt);
            set_STC_time(&dt);
            enable_time_parse();
        }
        else
        {
            ret1 = api_check_valid_date(win_time_local_time.year,win_time_local_time.month,win_time_local_time.day);
            if(ret1 != 0 || win_time_local_time.hour>23 || win_time_local_time.min>=60)
            {
                win_compopup_init(WIN_POPUP_TYPE_OKNO);
                win_compopup_set_msg(NULL,NULL,RS_MSG_INVALID_INPUT_CONTINUE);
                win_compopup_set_frame(GET_MID_L(300),GET_MID_T(100),320,100);
                if(win_compopup_open_ext(&save) == WIN_POP_CHOICE_YES)
                    act = VACT_PASS;
                else
                    act = VACT_CLOSE;
            }
            else
            {
                set_STC_offset(0,0,0);
                set_STC_time(&win_time_local_time);
                p_sys_data->local_time.GMToffset_count = 23;
                disable_time_parse();
            }
        }

        break;

    case V_KEY_ENTER:
        act = VACT_ENTER;
        break;

    default:
        act = VACT_PASS;
        break;
    }

    return act;
}