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

📄 mmitimedate.c

📁 GSM手机设计软件代码
💻 C
📖 第 1 页 / 共 4 页
字号:

 $Arguments:	
 
*******************************************************************************/
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

   char lin1[MAX_LEN_DATE];
   char lin2[MAX_LEN_TIME];
	T_MFW_TIME* currclock; /*SPR 1725*/
	currclock = mfw_td_get_time();/*SPR 1725*/
	
   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)                  /* 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++;
					}
				}
			  }
			  else if(edt_data->state EQ TIME_ENTRY)             /* time entering            */
			  {
					if(edt_data->index < (MAX_LEN_TIME -1))
					{
						if(edt_data->index NEQ 2)
						{
							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)
						{
							edtChar(edt_data->editor_handle,':');
							edt_data->edtbuf1[edt_data->index] = ':';
							edt_data->index++;
						}
					}
			  }
				break;
			case KCD_MNUSELECT:
			case KCD_LEFT:                                 /* select and ok button */
				if(edt_data->state EQ DATE_ENTRY)
				{
					if(check_date(win,edt_data))
					{

						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,TIME_ENTRY,0,tida_data);

					}
					else
					{
						memset(edt_data->edtbuf1, '\0', sizeof(edt_data->edtbuf1));/* initial buffer  */
						edt_data->index = 0;

						sprintf(lin1,"dd/mm/yyyy");
						strncpy(edt_data->edtbuf1,lin1,MAX_LEN_DATE);
						edtReset(edt_data->editor_handle);
						edtShow(edt_data->editor_handle);
					}
				}
				else if(edt_data->state EQ TIME_ENTRY)
				{
					if(check_time(win,edt_data))
					{
						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,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->minute);
						strncpy(edt_data->edtbuf1,lin2,MAX_LEN_TIME);
						edtReset(edt_data->editor_handle);
						edtShow(edt_data->editor_handle);
					}
				}
				else if(edt_data->state EQ DATE_SHOW)
				{
					date_time_edt_destroy(edt_data->tida_edt_win);
					SEND_EVENT(tida_data->tida_win,DATE_ENTRY,0,tida_data);
				}                                   /* start date entering      */

				else if(edt_data->state EQ TIME_SHOW)
				{
					date_time_edt_destroy(edt_data->tida_edt_win);
					SEND_EVENT(tida_data->tida_win,TIME_ENTRY,0,tida_data);	    /* start time entering      */
				}
			break;
			case KCD_RIGHT:                                /* back to previous menu */
					date_time_edt_destroy(edt_data->tida_edt_win);
					SEND_EVENT(tida_data->tida_win,TIDA_ABORT,0,tida_data);
				break;
			case KCD_MNUUP:                                /* cursor to right  */
				if((edt_data->state EQ DATE_ENTRY) || (edt_data->state EQ TIME_ENTRY))    /* cursor to rigt           */
				{
					edt_data->index++;
					edtChar(edt_data->editor_handle,ecRight);

					if(((edt_data->state EQ DATE_ENTRY) && ((edt_data->index EQ 2)||(edt_data->index EQ 5))) || ((edt_data->state EQ TIME_ENTRY) && (edt_data->index EQ 2)))
					{
						edt_data->index++;
						edtChar(edt_data->editor_handle,ecRight);
					}

				}
				break;
			case KCD_HUP:
			case KCD_MNUDOWN:                            /* cursor to left or clear  */
				if((!(edt_data->state EQ DATE_SHOW)) && (!(edt_data->state EQ TIME_SHOW)))
				{
					if(edt_data->state EQ DATE_ENTRY)
					{
					    if(edt_data->index EQ 0)
						;
						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);
						}
						else
							edtChar(edt_data->editor_handle,ecLeft);
					}
					if(edt_data->state EQ TIME_ENTRY)
					{
						if(edt_data->index EQ 0)
						;
						else
							edt_data->index--;

						if(edt_data->index EQ 2)
						{
							if(edt_data->index EQ 0)
							;
							else
								edt_data->index--;

							edtChar(edt_data->editor_handle,ecLeft);
							edtChar(edt_data->editor_handle,ecLeft);
						}
						else
							edtChar(edt_data->editor_handle,ecLeft);
					}
				}
				else
 					timStart(edt_data->tim_out_handle); /* waiting for release clear  otherwise to previous screen */
				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, void * edt_dat)
{
	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];

	char debug[20];
 	T_MFW_TIME* currclock; /*SPR 1725*/
	T_MFW_DATE* currdate;
	T_MFW_TIME alarmTime; /*SPR 1725*/
	

	 currclock= mfw_td_get_time();/*SPR 1725*/
	currdate =mfw_td_get_date();
	mfw_td_get_alarm(&alarmTime, &alarmDate);
	
    TRACE_FUNCTION ("MmiTimeDate:check_date");

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

	internday[0] = edt_data->edtbuf1[0];
	internday[1] = edt_data->edtbuf1[1];
	internmonth[0] = edt_data->edtbuf1[3];
	internmonth[1] = edt_data->edtbuf1[4];
	for(i = 0;i<4;i++)
	{
		internyear[i] = edt_data->edtbuf1[6+i];
	}

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

	tempdate.day = atoi(internday);
	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);

	if(tempdate.year < 2000)
		return FALSE;

	if((tempdate.month EQ 2) && (tempdate.day EQ 29))
	{
		if(!(tempdate.year%4) || (tempdate.year EQ 2000))
        {
			if(DateTimeEntryMode == ALARM)
			{			
				alarmDate.day = tempdate.day;
				alarmDate.month = tempdate.month;
				alarmDate.year = tempdate.year;
			}
			else
			{	
			
				currdate->day = tempdate.day;
				currdate->month = tempdate.month;
				currdate->year = tempdate.year;
			}
			return TRUE;
		}
		else
			return FALSE;
	}
	else
	{
		if(DateTimeEntryMode == ALARM)
		{
			
						
			alarmDate.day = tempdate.day;
			alarmDate.month = tempdate.month;
			alarmDate.year = tempdate.year;
			
		}
		else
		{					
			currdate->day = tempdate.day;
			currdate->month = tempdate.month;
			currdate->year = tempdate.year;
		}
		return TRUE;
	}
}
/*******************************************************************************

 $Function:  check_time  

 $Description:	check time after time entering

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
static int check_time (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];
 	T_MFW_TIME* currclock; /*SPR 1725*/
	T_MFW_DATE* currdate;
	T_MFW_TIME alarmTime; /*SPR 1725*/
	
	currclock = mfw_td_get_time();/*SPR 1725*/
	currdate = mfw_td_get_date();
	mfw_td_get_alarm(&alarmTime, &alarmDate);
	
	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 == ALARM)
	{	
		alarmTime.hour = tempclock.hour;		/*SPR 1725*/
		alarmTime.minute = tempclock.min;
		mfw_td_set_alarm(&alarmTime, &alarmDate);
	}
	else
	{	
		
	
		currclock->hour = tempclock.hour;
		currclock->minute = tempclock.min;
		mfw_td_set_time(&currclock);/*SPR 1725*/
	}
	
	return TRUE;
}
/*******************************************************************************

 $Function:  tida_edt_tim_out_cb  

 $Description:	 Callback function for timer for time and date

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
static void tida_edt_tim_out_cb(T_MFW_EVENT event,T_MFW_TIM * t)
{
    T_MFW_HND win = mfw_parent(mfw_header());

	T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
	T_tida_edt * tida_edt_data = (T_tida_edt *)win_data->user;

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

	date_time_edt_destroy(tida_edt_data->tida_edt_win);
	SEND_EVENT(tida_data->tida_win,TIDA_CLEAR,0,tida_data);

}
/*******************************************************************************

 $Function:  tida_edt_kbd_long_cb  

 $Description:	 keyboard long event handler for time and date

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
static int tida_edt_kbd_long_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

   TRACE_FUNCTION("MmiTimeDate:tida_edt_kbd_long_cb");

    if ((e & KEY_CLEAR) && (e & KEY_LONG))
	{

		if((!(edt_data->state EQ DATE_SHOW)) && (!(edt_data->state EQ TIME_SHOW)))
		{

				if(edt_data->state EQ DATE_ENTRY)
				{
					date_time_edt_destroy(edt_data->tida_edt_win);
					SEND_EVENT(tida_data->tida_win,DATE_SHOW,0,tida_data);
				}
				else if(edt_data->state EQ TIME_ENTRY)
				{
					date_time_edt_destroy(edt_data->tida_edt_win);

					SEND_EVENT(tida_data->tida_win,TIME_ENTRY,0,tida_data);

				}
				return MFW_EVENT_CONSUMED;

		}
		else
		{
			timStop(edt_data->tim_out_handle);
			date_time_edt_destroy(edt_data->tida_edt_win);
			SEND_EVENT(tida_data->tida_win,TIDA_TO_IDLE,0,tida_data);
			return MFW_EVENT_CONSUMED;
		}
	}
	else
		return MFW_EVENT_CONSUMED;
}
#endif /* NEW_EDITOR */

⌨️ 快捷键说明

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