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

📄 screateevent.c

📁 brew开发的日历程序 完全模仿mediaplayer的结构设计 值得初学者学习
💻 C
📖 第 1 页 / 共 3 页
字号:
		             MAKE_RGB(255,0,0),
		             &pme->rect, 
		             MP_MAXSOFTKEYITEMS
		          );
	/*有闹钟提示*/
	SH_AddMenuItem((IMenuCtl *)pme->m_Obj, IDS_ALARMH, NULL, IDI_SAT, IDS_ALARMH,0);
	/*无闹钟提示*/
	SH_AddMenuItem((IMenuCtl *)pme->m_Obj, IDS_ALARMN, NULL, IDI_SAT, IDS_ALARMN,0);

	/*设置菜单的属性*/
	IMENUCTL_SetProperties((IMenuCtl *)pme->m_Obj,MP_WRAPSCROLL); 

	if( pme->alarmType != 0)
	  IMENUCTL_SetSel((IMenuCtl *)pme->m_Obj,pme->alarmType);

	IMENUCTL_SetActive( (IMenuCtl *)pme->m_Obj, TRUE);
	IMENUCTL_Redraw( (IMenuCtl *)pme->m_Obj );

	/*ImageHeader*/
	SH_DRAWHEADER(pme); 
	/*bottomCommand*/
	SCEvent_DrawBottomScreen(pme);
    /*备忘录状态设置闹钟*/
	pme->appState = appS;

	return TRUE;
	
}

/**************************************************************************
*	Function Name	 :	SCEvent_CreatArlamTimeScreen                                            
*	Description		 :	设置闹钟时间
*	Input Parameters :	CreateEventWin* pme, AppState appS					
*	Output Parameters:	None												
*	Return Value	 :	boolean			
*	Date			 :	2007/04/16											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
static boolean SCEvent_CreatArlamTimeScreen(CreateEventWin* pme, AppState appS)
{
	AECHAR arlamTime[] = { 0x95f9, 0x949f, 0x65f6, 0x95f4, 0xff1a, 0 }; //闹钟时间:
	AECHAR timeSet[] = { 0x8bf7, 0x8bbe, 0x65f6, 0x95f4, 0xff1a, 0 }; //请设时间:
	AECHAR *title = NULL;
	int fontHe  = 0;
	int fontWi  = 0;
	
	/*屏幕宽度*/
	int screenW = pme->m_pOwner->DeviceInfo.cxScreen;
	/*屏幕高度*/
	int screenH = pme->m_pOwner->DeviceInfo.cyScreen;

	if( appS == APP_TELPHON_TIME)
		title = timeSet;
	else
		title = arlamTime;

	if( pme->m_Obj != NULL)
		ReleaseObj(&pme->m_Obj);
    /*时间控件*/
	if( (ISHELL_CreateInstance(pme->m_pIShell, AEECLSID_CLOCKCTL, (void**)(&pme->m_Obj)) != SUCCESS ) )
	    return FALSE;  
	/*字体宽度*/
	fontWi  = IDISPLAY_MeasureText( pme->m_pIDisplay, AEE_FONT_NORMAL, title ); 
	/*文字的高度*/
	fontHe  = IDISPLAY_GetFontMetrics( pme->m_pIDisplay,AEE_FONT_NORMAL,NULL,NULL );  

	IDISPLAY_DrawText(pme->m_pIDisplay,AEE_FONT_NORMAL,title,-1,0,20,NULL,IDF_TEXT_TRANSPARENT); 

	
    SETAEERECT( &pme->rect, 0, screenH/3, screenW,fontHe + 10 );

	ITIMECTL_SetRect( (ITimeCtl *)pme->m_Obj, &pme->rect);
	ITIMECTL_SetTime( (ITimeCtl *)pme->m_Obj, 0); 
	ITIMECTL_SetActive( (ITimeCtl *)pme->m_Obj, TRUE);

	/*ImageHeader*/
	SH_DRAWHEADER(pme); 
	/*bottomCommand*/
	SCEvent_DrawBottomScreen(pme);
    /*备忘录状态设置闹钟*/
	pme->appState = appS;

	return TRUE;
   
}

/**************************************************************************
*	Function Name	 :	SCEvent_goEventShow                                            
*	Description		 :	计时器回调函数
*	Input Parameters :	CreateEventWin* pme				
*	Output Parameters:	None												
*	Return Value	 :	None			
*	Date			 :	2007/04/16											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
static void SCEvent_goEventShow(CreateEventWin* pme)
{
	/*取消计时器*/
	ISHELL_CancelTimer(pme->m_pIShell, (PFNNOTIFY) SCEvent_goEventShow, pme);
	/*到该日的时间列表窗口*/
	Schedule_SetWindow(pme->m_pOwner, APP_STATE_ONEDAYDISP, 0);
	
}
/**************************************************************************
*	Function Name	 :	SCEvent_MemoSavedScreen                                            
*	Description		 :	显示存否
*	Input Parameters :	CreateEventWin* pme				
*	Output Parameters:	None												
*	Return Value	 :	boolean			
*	Date			 :	2007/04/16											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
static boolean SCEvent_MemoSavedScreen(CreateEventWin* pme)
{	
	const AECHAR memoSaved[] = { 0x5907, 0x5fd8, 0x5f55, 0x5df2, 0x5b58, 0 }; //备忘录已存
	int fontHe  = 0;
	int fontWi  = 0;
	/*屏幕宽度*/
	int screenW = pme->m_pOwner->DeviceInfo.cxScreen;
	/*屏幕高度*/
	int screenH = pme->m_pOwner->DeviceInfo.cyScreen;	
    
	/*字体宽度*/
	fontWi  = IDISPLAY_MeasureText( pme->m_pIDisplay, AEE_FONT_NORMAL, memoSaved ); 
	/*文字的高度*/
	fontHe  = IDISPLAY_GetFontMetrics( pme->m_pIDisplay,AEE_FONT_NORMAL,NULL,NULL );  

	//if( pme->appState == APP_MEMO_ALARM || pme->appState == APP_MEMO_ALARMTIME)
	//	SC_saveMemo(pme);
	IDISPLAY_DrawText(pme->m_pIDisplay,AEE_FONT_NORMAL,memoSaved,-1,
		              screenW/2 - fontWi/2,screenH/2,NULL,IDF_TEXT_TRANSPARENT);
	
	/*ImageHeader*/
	SH_DRAWHEADER(pme); 
    IDISPLAY_Update(pme->m_pIDisplay);
    
	ISHELL_SetTimer( 
	                pme->m_pIShell, 
					MP_SPLASH_TIMER,
	                (PFNNOTIFY)SCEvent_goEventShow,
					pme
				   );
	switch( pme->appState )
	{
	case APP_MEMO_ALARM:
	case APP_MEMO_ALARMTIME:
		SC_saveMemo(pme);
		break;
	case APP_BRITHDATY_ALARM:
		SC_SaveBrthDay( pme );
		break;
	case APP_TELPHON_ALARM:
		SC_SaveTleNo( pme );
	default:
		break;
	}
	
	return TRUE;
   
}

/**************************************************************************
*	Function Name	 :	SCEvent_BrithDateScreen                                            
*	Description		 :	显示存否
*	Input Parameters :	CreateEventWin* pme				
*	Output Parameters:	None												
*	Return Value	 :	boolean			
*	Date			 :	2007/04/16											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
static boolean SCEvent_BrithDateScreen(CreateEventWin* pme)
{	
	const AECHAR brithDate[] = { 0x51fa, 0x751f, 0x5e74, 0x4efd, 0xff1a, 0 }; //出生年份:
	/*屏幕宽度*/
	int screenW = pme->m_pOwner->DeviceInfo.cxScreen;
	/*屏幕高度*/
	int screenH = pme->m_pOwner->DeviceInfo.cyScreen;	

	if( pme->m_Obj != NULL)
		ReleaseObj(&pme->m_Obj);

	/*清空数字数组*/
    //pme->digitalNumber[0] = '\0';

	if( (ISHELL_CreateInstance(pme->m_pIShell, AEECLSID_TEXTCTL, (void**)(&pme->m_Obj)) != SUCCESS ) )
		return FALSE; 

   SETAEERECT( &pme->rect, 0, screenH/3, screenW, 24 );

   /*文本控件重置(释放或删除)其内容,并立即离开激活/焦点模式*/
   ITEXTCTL_Reset( (ITextCtl*)pme->m_Obj );
   ITEXTCTL_SetRect( (ITextCtl*)pme->m_Obj, &pme->rect );   
   ITEXTCTL_SetText((ITextCtl*)pme->m_Obj,pme->digitalNumber,MAX_DIGT_SIZE);
   ITEXTCTL_SetProperties( (ITextCtl*)pme->m_Obj,TP_FRAME );
   ITEXTCTL_SetInputMode( (ITextCtl*)pme->m_Obj, AEE_TM_ARABIC_R );
   ITEXTCTL_SetMaxSize( (ITextCtl*)pme->m_Obj, 4 );
   /*激活文本控件*/
   ITEXTCTL_SetActive( (ITextCtl*)pme->m_Obj,TRUE ); 
   /*显示出生年份*/
   IDISPLAY_DrawText(pme->m_pIDisplay,AEE_FONT_NORMAL,brithDate,-1,0,20,NULL,IDF_TEXT_TRANSPARENT); 

   /*生日出生年份*/
   pme->appState = APP_BRITHDATY_DATE;

   SH_DRAWHEADER(pme);  
   /*display the bottom command*/
   SCEvent_DrawBottomScreen(pme);   
   IDISPLAY_Update(pme->m_pIDisplay);
				  
   return TRUE;
   
}
/**************************************************************************
*	Function Name	 :	CWeekWin_HandleEvent                                            
*	Description		 :	handle current window events
*	Input Parameters :	IWindow * , AEEEvent , uint16 , uint32 							
*	Output Parameters:	None												
*	Return Value	 :	boolean			
*	Date			 :	2007/04/16											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
boolean CCEventWin_HandleEvent(IWindow * po, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{	
	CreateEventWin *  pme = (CreateEventWin *)po;
	if( pme->m_Obj == NULL)
		return FALSE;
 
    switch(pme->appState)
	{ 
	   case APP_TELPHON:        /*通话*/
	   case APP_TELPHON_NAME:   /*通话姓名*/
	   case APP_BRITHDATY:      /*生日状态*/      
	   case APP_MEMO:           /*备忘录状态*/
	   case APP_BRITHDATY_DATE: /*出生年份*/
		   if( SC_ProcessTextEvent(pme,eCode, wParam, dwParam,(ITextCtl *)pme->m_Obj) )
		     return TRUE;
		   break;	   
	   case APP_TELPHON_ALARM:/*通话闹钟*/
	   case APP_MEMO_ALARM:/*备忘录状态下的闹钟设置*/
	   case APP_BRITHDATY_ALARM:/*生日状态下的闹钟设置*/
		   if( IMENUCTL_HandleEvent( (IMenuCtl *)pme->m_Obj,eCode, wParam, dwParam) )
			   return TRUE;
		   break;
	   case APP_TELPHON_TIME:
	   case APP_MEMO_ALARMTIME:
		   if( ITIMECTL_HandleEvent( (ITimeCtl *)pme->m_Obj,eCode, wParam, dwParam) )
			   return TRUE;
		   break;
	   default:
		   break;
	}
	

	/*process key events*/
    if( SH_ISEVTKEY(eCode) || SH_ISEVTCMD(eCode))
	{
		switch(wParam)
		{        
		case IDS_ALARMN:
			pme->alarmType = IDS_ALARMN;
			IDISPLAY_ClearScreen(pme->m_pIDisplay);
			SCEvent_MemoSavedScreen(pme);
			return TRUE;
		case IDS_ALARMH:
			pme->alarmType = IDS_ALARMH;
		case AVK_SELECT:
		case AVK_SOFT1:/*确认*/	
			IDISPLAY_ClearScreen(pme->m_pIDisplay);
			switch(pme->appState)
			{
			
			case APP_MEMO:/*备忘录状态*/
				SC_setMemoContent(pme);/*到下一个界面之前储存备忘录内容*/
				SCEvent_CreatArlamScreen(pme,APP_MEMO_ALARM);/*备忘录状态下的闹钟设置*/				
				return TRUE;
			case APP_BRITHDATY: /*生日状态*/
				/*到下一个界面之前储存生日人姓名*/
				SC_setBrthName(pme);
				SCEvent_BrithDateScreen(pme);
				return TRUE;
			case APP_BRITHDATY_DATE:/*出生年份*/
				/*到下一个界面之前设置生日人年龄*/
	            SC_setBrthAge(pme);
				SCEvent_CreatArlamScreen(pme,APP_BRITHDATY_ALARM);/*生日状态下的闹钟设置*/
				return TRUE;
			case APP_MEMO_ALARM:/*备忘录状态下的闹钟设置*/
				/*有闹钟提示*/
				if( IMENUCTL_GetSel((IMenuCtl *)pme->m_Obj) == IDS_ALARMH)
				    SCEvent_CreatArlamTimeScreen(pme, APP_MEMO_ALARMTIME);/*备忘录状态下的闹钟时间设置*/
				else/*没有闹钟提示*/
					SCEvent_MemoSavedScreen(pme);
				return TRUE;
			case APP_MEMO_ALARMTIME:/*备忘录状态下的闹钟时间设置*/
				SC_setMemoTime(pme);
				SCEvent_MemoSavedScreen(pme);
				return TRUE;
			case APP_BRITHDATY_ALARM:/*生日状态下的闹钟设置*/			
				SCEvent_MemoSavedScreen(pme);
				return TRUE;
			case APP_TELPHON:/*通话*/
				SCEvent_CreatBrithScreen(pme, APP_TELPHON_NAME);/*通话姓名*/
				return TRUE;
			case APP_TELPHON_NAME:/*通话姓名*/
				SC_setBrthName(pme);
				SCEvent_CreatArlamTimeScreen(pme, APP_TELPHON_TIME);
				return TRUE;
			case APP_TELPHON_TIME:/*通话时间*/
				SC_setMemoTime(pme);
				SCEvent_CreatArlamScreen(pme,APP_TELPHON_ALARM);/*通话状态下的闹钟设置*/
				return TRUE;
			case APP_TELPHON_ALARM:/*通话状态下的闹钟设置*/
				SCEvent_MemoSavedScreen(pme);
				return TRUE;
			default:
				return FALSE;
			}			
			return FALSE;
		case AVK_SOFT2:/*返回*/
			IDISPLAY_ClearScreen(pme->m_pIDisplay);
			switch(pme->appState)
			{
			case APP_MEMO_ALARM:/*备忘录状态下的闹钟设置*/
				IDISPLAY_ClearScreen(pme->m_pIDisplay);
			    SCEvent_CreateMemoScreen(pme);
				return TRUE;
			case APP_BRITHDATY_ALARM:/*生日状态下的闹钟设置*/
				SCEvent_BrithDateScreen(pme);/*出生年份*/
				return TRUE;
			case APP_BRITHDATY_DATE: /*出生年份*/
				SCEvent_CreatBrithScreen(pme, APP_BRITHDATY);
				return TRUE;
			case APP_MEMO_ALARMTIME:/*备忘录状态下的闹钟时间设置*/
				SCEvent_CreatArlamScreen(pme,APP_MEMO_ALARM);
				return TRUE;
			case APP_TELPHON_NAME:/*通话姓名*/
				SCEvent_CreateTelphoneScreen(pme);/*通话*/
				return TRUE;
			case APP_TELPHON:/*通话状态*/				
			case APP_BRITHDATY: /*生日状态*/      
	        case APP_MEMO:      /*备忘录状态*/
				/*back to event type window*/
		        Schedule_SetWindow(pme->m_pOwner, APP_STATE_EVTTYPE, 0);
				return TRUE;
			default:
				return FALSE;
			}			
			return FALSE;
		}
	}
	/*process the clr_key events*/
	if (SH_ISCLR(eCode) )
    {
		/*back event type window*/
		Schedule_SetWindow(pme->m_pOwner, APP_STATE_EVTTYPE, 0);
		return TRUE;
    }
	return FALSE;
}

/**************************************************************************
*	Function Name	 :	SC_ProcessDigitalTextEvent                                            

⌨️ 快捷键说明

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