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

📄 shloodevent.c

📁 brew开发的日历程序 完全模仿mediaplayer的结构设计 值得初学者学习
💻 C
📖 第 1 页 / 共 2 页
字号:
/**
 * File Name    : ShLOODEvent.c                                                                 
 * Created      : 07/04/18                                                                        
 * Author       : ZhongNingLin@neusoft.com                                                                    
 * Model        : 05YOP                                                                           
 * Description  : [[CN]] 此文件的职责是: [[CN]]                           
**/
#include "ShLOODEvent.h"
#include "SCreateEvent.h"

extern boolean SEventContent_GetEvtByID(Schedule* pme ,EventData *data);
extern boolean SEventContent_DeletEvt(Schedule* pme ,uint8 index);
extern boolean SEventContent_GetEvtByDate(Schedule* pme ,EventData *data);
extern boolean ScheDB_GetEventByDate(Schedule* pme, EventData *data );
extern boolean ScheDB_GetEventItem( Schedule* pMe, EventData *data );
extern boolean ScheDB_DeleteEventItem( Schedule* pMe, uint16 nRecordID );
extern void ScheDB_EmptyEventDatabase( ScheDB* pDB);

static void CExamineEventWin_DrawDialog(ExamineEventWin * pme,const AECHAR *szText);

/**************************************************************************
*	Function Name	 :	CExamineEventWin_New                                            
*	Description		 :	This function constructs showEvent window.
*	Input Parameters :	Schedule* 								
*	Output Parameters:	None												
*	Return Value	 :	IWindow *			
*	Date			 :	2007/04/18											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/

IWindow *  CExamineEventWin_New(Schedule * pOwner)
{
	ExamineEventWin *        pme;
    VTBL(IWindow)     vtbl;

	SH_IWINDOW_SETVTBL(
		               &vtbl, CExamineEventWin_Enable, CExamineEventWin_Redraw, 
		               CExamineEventWin_HandleEvent, CExamineEventWin_Delete
					  );
	pme = (ExamineEventWin *)CWindow_New(sizeof(ExamineEventWin), pOwner, &vtbl);	
	if(NULL == pme)
	{
		return FALSE;
	}
	pme->m_pMenuCtl = NULL;
	
	/*初始化矩形变量*/
	SETAEERECT( &pme->m_rMenuRect, 0, 34, pOwner->m_width, pOwner->m_height - 50 );
	/*初始化事件菜单状态*/
	pme->m_mState = APP_MENU_MAIN;
	/*返回窗体接口*/
    return (IWindow *)pme;
}

/**************************************************************************
*	Function Name	 :	CExamineEventWin_Delete                                            
*	Description		 :	释放窗体资源.
*	Input Parameters :	Schedule* 								
*	Output Parameters:	None												
*	Return Value	 :	IWindow *			
*	Date			 :	2007/04/18											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
void CExamineEventWin_Delete(IWindow * po)
{
	ExamineEventWin *  pme = (ExamineEventWin *)po;
    /*释放菜单控件*/
    ReleaseObj((void**)&pme->m_pMenuCtl); 
	/*释放事件*/	
	FREEIF( pme->data );
    /*释放窗口*/
	FREEIF(pme);
}

/**************************************************************************
*	Function Name	 :	CExamineEventWin_Enable                                            
*	Description		 :	窗体可用.
*	Input Parameters :	Schedule* 								
*	Output Parameters:	None												
*	Return Value	 :	IWindow *			
*	Date			 :	2007/04/18											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
void CExamineEventWin_Enable(IWindow * po, boolean bEnable)
{
	ExamineEventWin *  pme = (ExamineEventWin *)po;

   if (!CWindow_ProcessEnable(po, bEnable))
      return;
   /*判断当前窗口是否为激活状态*/
   if (!pme->m_bActive)
   {      
      return;
   }
}

/**************************************************************************
*	Function Name	 :	CExamineEventWin_Redraw                                            
*	Description		 :	This function redraws the events window.
*	Input Parameters :	IWindow* 								
*	Output Parameters:	None												
*	Return Value	 :	None			
*	Date			 :	2007/04/18											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
void CExamineEventWin_Redraw(IWindow * po)
{
   ExamineEventWin *  pme = (ExamineEventWin *)po;

   if (!pme->m_bActive)
      return;

   IDISPLAY_ClearScreen(pme->m_pIDisplay);

   SH_DRAWHEADER(pme);   
   CExamineEventWin_InitMainMenu(pme);

   IDISPLAY_Update(pme->m_pIDisplay);
}

/**************************************************************************
*	Function Name	 :	CExamineEventWin_option                                            
*	Description		 :	操作事件
*	Input Parameters :	ExamineEventWin * 							
*	Output Parameters:	None												
*	Return Value	 :	boolean			
*	Date			 :	2007/04/18											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
static void CExamineEventWin_option(ExamineEventWin *pme)
{
	const AECHAR select[] = { 0x9009, 0x62e9, 0 }; //选择
	/*是否有事件*/
	if( pme->m_bHasMemo )
	{
		//if( pme->m_mState != APP_SURE_DI && pme->m_mState != APP_SURE_DA)
		//{
			/*当前事件的编号*/
		    pme->m_mCindex = (uint8)IMENUCTL_GetSel( pme->m_pMenuCtl ); 
		//}
		/*清除菜单项*/
		IMENUCTL_DeleteAll(pme->m_pMenuCtl);
        /*查看事件详细*/
		SH_AddMenuItem(pme->m_pMenuCtl, IDS_VIEW_EVT, NULL, IDI_VIEW_EVT, IDS_VIEW_EVT,0);
		/*编辑事件*/
		SH_AddMenuItem(pme->m_pMenuCtl, IDS_EDITE_EVT, NULL, IDI_EDITE_EVT, IDS_EDITE_EVT,0);
		/*删除事件*/
		SH_AddMenuItem(pme->m_pMenuCtl, IDS_DELETE_EVT, NULL, IDI_DELETE_EVT, IDS_DELETE_EVT,0);
	    /*写事件*/
		SH_AddMenuItem(pme->m_pMenuCtl, IDS_EVT_CREATE, NULL, IDI_EVT_CREATE, IDS_EVT_CREATE,0);
		/*删除所有备忘录*/
		SH_AddMenuItem(pme->m_pMenuCtl, IDS_DELETE_ALL, NULL, IDI_DELETE_ALL, IDS_DELETE_ALL,0);
		/*重绘菜单*/
		IMENUCTL_Redraw(pme->m_pMenuCtl);
		/*激活菜单*/
		IMENUCTL_SetActive(pme->m_pMenuCtl,TRUE); 
	}
	else
	{
		ReleaseObj((void**)&pme->m_pMenuCtl); 
		/*初始化菜单*/
		if((ISHELL_CreateInstance
			(
			pme->m_pIShell, 
			AEECLSID_MENUCTL, 
			(void**)(&pme->m_pMenuCtl)
			) != SUCCESS)
		   )
			return ;
	 /*设置菜单外观属性*/
	 SH_SetMenuAttr(
		             pme->m_pMenuCtl, 
		             AEECLSID_MENUCTL, 
		             MAKE_RGB(255,0,0),
		             &pme->m_rMenuRect, 
		             MP_MAXSOFTKEYITEMS
		 );
	 SH_AddMenuItem(pme->m_pMenuCtl, IDS_EVT_CREATE, NULL, IDI_EVT_CREATE, IDS_EVT_CREATE,0);
	 SH_AddMenuItem(pme->m_pMenuCtl, IDS_DATE_SEL, NULL, IDI_DATE_SEL, IDS_DATE_SEL,0);
	 /*重绘菜单*/
	 IMENUCTL_Redraw(pme->m_pMenuCtl);
	 /*激活菜单*/
	 IMENUCTL_SetActive(pme->m_pMenuCtl,TRUE); 
	}
	/*设置菜单的属性*/
	IMENUCTL_SetProperties(pme->m_pMenuCtl,MP_WRAPSCROLL); 

	/*窗口操作状态*/
	pme->m_mState = APP_MENU_OPTION;
	/*绘制Button*/
	SCEvent_DrawBottom(pme, select);
}

/**************************************************************************
*	Function Name	 :	CExamineEventWin_ShowEventDetail                                            
*	Description		 :	获得事件详细
*	Input Parameters :	ExamineEventWin * 						
*	Output Parameters:	None												
*	Return Value	 :	boolean			
*	Date			 :	2007/04/18											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
static void CExamineEventWin_ShowEventDetail(ExamineEventWin *pme)
{
	const AECHAR none[3] = { ' ','\0'}; 
	const AECHAR mType[] = { 0x5907, 0x5fd8, 0x7c7b, 0x578b,':', 0 }; //备忘类型:
	const AECHAR mCont[] = { 0x5907, 0x5fd8, 0x5185, 0x5bb9,':', 0 }; //备忘内容:
	const AECHAR mTime[] = { 0x5907, 0x5fd8, 0x65f6, 0x95f4,':', 0 }; //备忘时间
	const AECHAR mName[] = { 0x59d3, 0x540d,':', 0 };     //  姓名:	
	const AECHAR mTelp[] = { 0x7535, 0x8bdd, ':',0 };     //  电话:
	const AECHAR mAlar[] = { 0x95f9, 0x949f, ':',0 };     //  闹钟:
	AECHAR mAge[] = { 0x5468, 0x5c81,':', 0 };            //  周岁:
	AECHAR eventType[30] = {' ','\0'};
	AECHAR alarmType[30] = {' ','\0'};
	/*设备屏幕高度*/
	int screeH = pme->m_pOwner->DeviceInfo.cyScreen;
	/*设备屏幕宽度*/
	int screeW = pme->m_pOwner->DeviceInfo.cxScreen;
	/*字体高度*/
	int fontHe = 0;
	/*字体宽度*/
	int fontWi = 0;
    
	int imageH = 25;
	EventData *data = NULL;	

	data = (EventData*)MALLOC(sizeof(EventData));

	if( data == NULL )
		return;
	data->index = pme->m_mCindex;
    /*根据事件ID得到事件*/
	//SEventContent_GetEvtByID(pme->m_pOwner ,data);
	ScheDB_GetEventItem(pme->m_pOwner ,data);
	

	IMENUCTL_Reset(pme->m_pMenuCtl); 
	IDISPLAY_FillRect(pme->m_pIDisplay,&pme->m_rMenuRect,MAKE_RGB(255, 255, 255)); 
    
	fontHe  = IDISPLAY_GetFontMetrics( pme->m_pIDisplay,AEE_FONT_NORMAL,NULL,NULL ); 
    /*绘制备忘类型*/
	fontWi  = IDISPLAY_MeasureText( pme->m_pIDisplay, AEE_FONT_NORMAL, mType ) + 5; 
	IDISPLAY_DrawText(pme->m_pIDisplay,AEE_FONT_NORMAL,mType,-1,0,imageH + fontHe,NULL,IDF_TEXT_TRANSPARENT); 
	
	ISHELL_LoadResString(pme->m_pIShell,SCHEDULE_RES_FILE,data->eType,eventType,30); 
	
	IDISPLAY_DrawText(pme->m_pIDisplay,AEE_FONT_NORMAL,eventType,-1,fontWi ,imageH + fontHe,NULL,IDF_TEXT_TRANSPARENT); 
    /*绘制备忘内容*/
	fontWi  = IDISPLAY_MeasureText( pme->m_pIDisplay, AEE_FONT_NORMAL, mCont ) + 5; 
	IDISPLAY_DrawText(pme->m_pIDisplay,AEE_FONT_NORMAL,mCont,-1,0,imageH + 2*fontHe,NULL,IDF_TEXT_TRANSPARENT); 
	IDISPLAY_DrawText(pme->m_pIDisplay,AEE_FONT_NORMAL,data->eContent,-1,
		fontWi ,imageH + 2*fontHe,NULL,IDF_TEXT_TRANSPARENT); 
	/*绘制备忘时间*/
	fontWi  = IDISPLAY_MeasureText( pme->m_pIDisplay, AEE_FONT_NORMAL, mTime ) + 5; 
	IDISPLAY_DrawText(pme->m_pIDisplay,AEE_FONT_NORMAL,mTime,-1,0,imageH + 3*fontHe,NULL,IDF_TEXT_TRANSPARENT); 
	IDISPLAY_DrawText(pme->m_pIDisplay,AEE_FONT_NORMAL,data->eTime,-1,fontWi ,imageH + 3*fontHe,NULL,IDF_TEXT_TRANSPARENT); 
	/*绘制备忘姓名*/
	fontWi  = IDISPLAY_MeasureText( pme->m_pIDisplay, AEE_FONT_NORMAL, mName ) + 5; 
	IDISPLAY_DrawText(pme->m_pIDisplay,AEE_FONT_NORMAL,mName,-1,0,imageH + 4*fontHe,NULL,IDF_TEXT_TRANSPARENT); 
	IDISPLAY_DrawText(pme->m_pIDisplay,AEE_FONT_NORMAL,data->eName,-1,fontWi ,imageH + 4*fontHe,NULL,IDF_TEXT_TRANSPARENT); 
	
	/*绘制备忘周岁*/
	fontWi  = IDISPLAY_MeasureText( pme->m_pIDisplay, AEE_FONT_NORMAL, mName ) + 5; 
	IDISPLAY_DrawText(pme->m_pIDisplay,AEE_FONT_NORMAL,mAge,-1,0,imageH + 5*fontHe,NULL,IDF_TEXT_TRANSPARENT); 
	
	WWRITELONG(mAge, data->eAge);
	if( data->eAge != 0 )
	IDISPLAY_DrawText(pme->m_pIDisplay,AEE_FONT_NORMAL,mAge,-1,fontWi ,imageH + 5*fontHe,NULL,IDF_TEXT_TRANSPARENT); 
	

	/*绘制备忘电话*/
    fontWi  = IDISPLAY_MeasureText( pme->m_pIDisplay, AEE_FONT_NORMAL, mName ) + 5;
	IDISPLAY_DrawText(pme->m_pIDisplay,AEE_FONT_NORMAL,mTelp,-1,0,imageH + 6*fontHe,NULL,IDF_TEXT_TRANSPARENT); 
	IDISPLAY_DrawText(pme->m_pIDisplay,AEE_FONT_NORMAL,data->eTelNo,-1,fontWi ,imageH + 6*fontHe,NULL,IDF_TEXT_TRANSPARENT); 
	/*绘制备忘闹钟*/

	ISHELL_LoadResString(pme->m_pIShell,SCHEDULE_RES_FILE,data->eAlarm,alarmType,30); 
	
	
	fontWi  = IDISPLAY_MeasureText( pme->m_pIDisplay, AEE_FONT_NORMAL, mName ) + 5;
	IDISPLAY_DrawText(pme->m_pIDisplay,AEE_FONT_NORMAL,mAlar,-1,0,imageH + 7*fontHe,NULL,IDF_TEXT_TRANSPARENT); 
	IDISPLAY_DrawText(pme->m_pIDisplay,AEE_FONT_NORMAL,alarmType,-1,fontWi ,imageH + 7*fontHe,NULL,IDF_TEXT_TRANSPARENT); 
    
	IDISPLAY_Update(pme->m_pIDisplay); 
    /*查看详情状态*/
	pme->m_mState = APP_MENU_VIEWD;

	SCEvent_DrawBottom(pme, none);

	FREEIF(data);

}

/**************************************************************************
*	Function Name	 :	CExamineEventWin_EditEventDetail                                            
*	Description		 :	编辑事件
*	Input Parameters :	ExamineEventWin * 						
*	Output Parameters:	None												
*	Return Value	 :	boolean			
*	Date			 :	2007/04/22											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
static void CExamineEventWin_EditEventDetail(ExamineEventWin *pme)
{
	EventData *data = NULL;	

	CreateEventWin * cEpme = NULL;

	data = (EventData*)MALLOC(sizeof(EventData));

	if( data == NULL )
		return;
	data->index = pme->m_mCindex;
    /*根据事件ID得到事件*/	
	ScheDB_GetEventItem(pme->m_pOwner ,data);

	pme->m_pOwner->eventType = data->eType;

	/*转到事件创建窗口*/
	Schedule_SetWindow(pme->m_pOwner, APP_STATE_CREATEVT, 0);

	cEpme = ( (CreateEventWin *)pme->m_pOwner->m_pWin);

	cEpme->index = data->index;//在数据库中的ID
	cEpme->age = data->eAge;
	cEpme->appTYPE = APP_EDIT;//编辑状态
	cEpme->alarmType = data->eAlarm;
	WSTRCPY( cEpme->alarmTime, data->eTime );
	WSTRCPY( cEpme->digitalNumber, data->eTelNo );
	WSTRCPY( cEpme->memoContent, data->eContent );
	WSTRCPY( cEpme->name, data->eName );
	WSTRCPY( cEpme->sDate, data->eDate );

	if( data->eAge != 0 )
		WWRITELONG(cEpme->digitalNumber,pme->m_pOwner->m_year - cEpme->age);

	FREEIF(data);
}

/**************************************************************************
*	Function Name	 :	CExamineEventWin_SelectOperator                                            
*	Description		 :	处理当前菜单事件
*	Input Parameters :	ExamineEventWin * 						
*	Output Parameters:	None												
*	Return Value	 :	boolean			
*	Date			 :	2007/04/18											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
static boolean CExamineEventWin_SelectOperator(ExamineEventWin *pme)
{
	uint16 menueID = 0;
	const AECHAR deletMemo[] = { 0x786e, 0x5b9a, 0x8981, 0x5220, 0x9664, 0x8be5, 0x5907, 0x5fd8, 0x3f, 0 }; //确定要删除该备忘?
	const AECHAR deletALLm[] = { 0x786e, 0x5b9a, 0x8981, 0x5220, 0x9664, 0x6240, 0x6709, 0x5907, 0x5fd8, 0x3f, 0 }; //确定要删除所有备忘?
	if(pme->m_pMenuCtl == NULL)
		return FALSE;
	 menueID = IMENUCTL_GetSel(pme->m_pMenuCtl);
	
	switch( menueID )
	{
    /*选择日期*/
	case IDS_DATE_SEL:
		Schedule_SetWindow(pme->m_pOwner, APP_DATESEL_WIN, 0);
		return TRUE;
	/*写备忘录*/
	case IDS_EVT_CREATE:
		Schedule_SetWindow(pme->m_pOwner, APP_STATE_EVTTYPE, 0);
		return TRUE;
    /*查看备忘录*/
	case IDS_VIEW_EVT:
		CExamineEventWin_ShowEventDetail(pme);
		return TRUE;
	/*删除*/
	case IDS_DELETE_EVT:
		//SEventContent_DeletEvt(pme->m_pOwner ,pme->m_mCindex);
		CExamineEventWin_DrawDialog(pme,deletMemo);	
		return TRUE;
	/*删除所有备忘录*/
	case IDS_DELETE_ALL:
		CExamineEventWin_DrawDialog(pme,deletALLm);	
		return TRUE;
	/*编辑*/

⌨️ 快捷键说明

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