📄 shloodevent.c
字号:
/**
* 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 + -