📄 shloodevent.c
字号:
case IDS_EDITE_EVT:
CExamineEventWin_EditEventDetail(pme);
return TRUE;
default:
return FALSE;
}
}
/**************************************************************************
* Function Name : CExamineEventWin_HandleEvent
* Description : handle current window events
* Input Parameters : IWindow * , AEEEvent , uint16 , uint32
* Output Parameters: None
* Return Value : boolean
* Date : 2007/04/18
* Author : ZhongNingLin@neusoft.com
***************************************************************************/
boolean CExamineEventWin_HandleEvent(IWindow * po, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
ExamineEventWin * pme = (ExamineEventWin *)po;
boolean bRet = TRUE;
if ( SH_ISCLR(eCode) )
{
switch( pme->m_mState )
{
case APP_SURE_DI:
case APP_SURE_DA:
IMENUCTL_SetActive( pme->m_pMenuCtl, TRUE);
IMENUCTL_Redraw(pme->m_pMenuCtl);
pme->m_mState = APP_MENU_OPTION;
return TRUE;
default:
break;
}
/*返回目录窗口*/
Schedule_SetWindow(pme->m_pOwner, APP_STATE_MENUDISP, 0);
return TRUE;
}
if (SH_ISEVTKEY(eCode))
{
if(pme->m_pMenuCtl != NULL)
IMENUCTL_HandleEvent(pme->m_pMenuCtl, eCode, wParam, dwParam);
switch(wParam)
{
case AVK_SOFT1:/*操作*/
switch( pme->m_mState )/*窗口状态*/
{
case APP_MENU_MAIN:
CExamineEventWin_option(pme);
return TRUE;
case APP_MENU_OPTION:
return CExamineEventWin_SelectOperator(pme);
default:
return FALSE;
}
case AVK_SOFT2:/*返回*/
switch( pme->m_mState )
{
case APP_MENU_VIEWD:
CExamineEventWin_InitMainMenu(pme);
return TRUE;
default:
/*返回主窗口*/
Schedule_SetWindow(pme->m_pOwner, APP_MAIN_WIN, 0);
return TRUE;
}
case AVK_SELECT:
switch( pme->m_mState )
{
case APP_SURE_DI:/*删除当前选中的事件*/
ScheDB_DeleteEventItem( pme->m_pOwner, pme->m_mCindex );
CExamineEventWin_InitMainMenu(pme);
return TRUE;
case APP_SURE_DA:/*删除所有事件*/
ScheDB_EmptyEventDatabase( pme->m_pOwner->m_pScheDB);
CExamineEventWin_InitMainMenu(pme);
return TRUE;
default:
break;
}
return CExamineEventWin_SelectOperator(pme);
default:
return FALSE;
}
}
return bRet;
}
/**************************************************************************
* Function Name : SCEvent_DrawBottomScreen
* Description : 控制键
* Input Parameters : CreateEventWin*
* Output Parameters: None
* Return Value : None
* Date : 2007/04/16
* Author : ZhongNingLin@neusoft.com
***************************************************************************/
static void SCEvent_DrawBottom(ExamineEventWin* pme ,const AECHAR *command)
{
AEERect rect;
int fontHe = 0;
int fontWi = 0;
const AECHAR back[] = { 0x8fd4, 0x56de, 0 }; //返回
/*文字的高度*/
fontHe = IDISPLAY_GetFontMetrics( pme->m_pIDisplay,AEE_FONT_NORMAL,NULL,NULL );
fontWi = IDISPLAY_MeasureText( pme->m_pIDisplay, AEE_FONT_NORMAL, back );
SETAEERECT( &rect, 0, pme->m_pOwner->DeviceInfo.cyScreen - fontHe, pme->m_pOwner->DeviceInfo.cxScreen,fontHe );
/*填充矩形的颜色*/
IDISPLAY_FillRect(pme->m_pIDisplay,&rect,RECT_BACKGROUND);
IDISPLAY_DrawText(pme->m_pIDisplay,AEE_FONT_NORMAL,command,-1,0,pme->m_pOwner->DeviceInfo.cyScreen - fontHe,NULL,IDF_TEXT_TRANSPARENT);
IDISPLAY_DrawText(pme->m_pIDisplay,AEE_FONT_NORMAL,back, -1,pme->m_pOwner->DeviceInfo.cxScreen - fontWi,pme->m_pOwner->DeviceInfo.cyScreen - fontHe,NULL,IDF_TEXT_TRANSPARENT);
}
/**************************************************************************
* Function Name : CExamineEventWin_InitMainMenu
* Description : 初始化菜单控件
* Input Parameters : ExamineEventWin *
* Output Parameters: None
* Return Value : boolean
* Date : 2007/04/18
* Author : ZhongNingLin@neusoft.com
***************************************************************************/
boolean CExamineEventWin_InitMainMenu(ExamineEventWin *pme)
{
const AECHAR option[] = { 0x64cd, 0x4f5c, 0 }; //操作
pme->m_bHasMemo = CExamineEventWin_HasMemos(pme);
if( pme->m_bHasMemo )
{
ReleaseObj((void**)&pme->m_pMenuCtl);
/*初始化菜单*/
if((ISHELL_CreateInstance(pme->m_pIShell,AEECLSID_MENUCTL,(void**)(&pme->m_pMenuCtl)) != SUCCESS) )
return FALSE;
/*设置菜单外观属性*/
SH_SetMenuAttr(pme->m_pMenuCtl,AEECLSID_MENUCTL,MAKE_RGB(255,0,0),&pme->m_rMenuRect,MP_MAXSOFTKEYITEMS);
/*向菜单中加菜单项*/
CExamineEventWin_AddItemToMenu(pme);
/*重绘菜单*/
IMENUCTL_Redraw(pme->m_pMenuCtl);
/*激活菜单*/
IMENUCTL_SetActive(pme->m_pMenuCtl,TRUE);
}
else
{
CExamineEventWin_HasNoMemo(pme);
}
CExamineEventWin_DrawDate(pme);
SCEvent_DrawBottom(pme, option);
pme->m_mState = APP_MENU_MAIN;
return TRUE;
}
/**************************************************************************
* Function Name : CExamineEventWin_DrawDate
* Description : handle current window events
* Input Parameters : ExamineEventWin *
* Output Parameters: None
* Return Value : None
* Date : 2007/04/18
* Author : ZhongNingLin@neusoft.com
***************************************************************************/
static void CExamineEventWin_DrawDate(ExamineEventWin* pme)
{
AECHAR sDate[30] = {' ','\0'};
AEERect rect;
int fontHe = 0;
int fontWi = 0;
Schedule_GetDateString(pme->m_pOwner, sDate);
/*字体的高度*/
fontHe = IDISPLAY_GetFontMetrics( pme->m_pIDisplay,AEE_FONT_NORMAL,NULL,NULL );
fontWi = IDISPLAY_MeasureText( pme->m_pIDisplay, AEE_FONT_NORMAL, sDate );
rect.x = 0;
rect.y = 20;
rect.dx = pme->m_pOwner->DeviceInfo.cxScreen;
rect.dy = fontHe;
/*填充矩形的颜色*/
IDISPLAY_FillRect(pme->m_pIDisplay,&rect,RECT_BACKGROUND);
//AEE_FONT_BOLD+1
IDISPLAY_DrawText(pme->m_pIDisplay,AEE_FONT_NORMAL,sDate,-1,rect.dx/2 - fontWi/2,20,NULL,IDF_TEXT_TRANSPARENT);
}
/**************************************************************************
* Function Name : CExamineEventWin_HasMemos
* Description : 判断当前日期是否有事件
* Input Parameters : ExamineEventWin *
* Output Parameters: None
* Return Value : None
* Date : 2007/04/18
* Author : ZhongNingLin@neusoft.com
***************************************************************************/
static boolean CExamineEventWin_HasMemos(ExamineEventWin* pme)
{
AECHAR sDate[30] = {' ','\0'};
boolean hasEvts = FALSE;
pme->data = (EventData*)MALLOC(sizeof(EventData));
if( pme->data == NULL)
return FALSE;
Schedule_GetDateString(pme->m_pOwner, sDate);
WSTRCPY( pme->data->eDate, sDate );
//hasEvts = SEventContent_GetEvtByDate(pme->m_pOwner, pme->data);
hasEvts = ScheDB_GetEventByDate(pme->m_pOwner, pme->data );
if( !hasEvts )
{
FREEIF( pme->data );
return FALSE;
}
return TRUE;
}
/**************************************************************************
* Function Name : CExamineEventWin_AddItemToMenu
* Description : 添加当前日期所有事件到菜单
* Input Parameters : ExamineEventWin *
* Output Parameters: None
* Return Value : None
* Date : 2007/04/19
* Author : ZhongNingLin@neusoft.com
***************************************************************************/
void CExamineEventWin_AddItemToMenu(ExamineEventWin *pme)
{
EventData * node = NULL;
if( pme->data == NULL)
return;
while(pme->data != NULL)
{
node = pme->data;
switch( node->eType )
{
case IDS_EVTY_CANLEN:/*生日事件*/
SH_AddMenuItem(pme->m_pMenuCtl, NULL, node->eName, IDI_EVTY_CANLEN, node->index,0);
break;
case IDS_EVTY_MEMO:/*备忘录*/
SH_AddMenuItem(pme->m_pMenuCtl, NULL, node->eContent, IDI_EVTY_MEMO, node->index,0);
break;
case IDS_EVTY_ANNIVER:/*通话*/
SH_AddMenuItem(pme->m_pMenuCtl, NULL, node->eName, IDI_EVTY_ANNIVER, node->index,0);
break;
default:
break;
}
pme->data = pme->data->next;
FREEIF(node);
}
FREEIF(pme->data);
//SEventContent_FreeEvent(pme->data);
}
/**************************************************************************
* Function Name : CExamineEventWin_DrawDate
* Description : handle current window events
* Input Parameters : ExamineEventWin *
* Output Parameters: None
* Return Value : None
* Date : 2007/04/18
* Author : ZhongNingLin@neusoft.com
***************************************************************************/
void CExamineEventWin_HasNoMemo(ExamineEventWin* pme)
{
const AECHAR content[] = { '(', 0x65e0, 0x5907, 0x5fd8, ')', 0 }; //(无备忘)
int fontHe = 0;
int fontWi = 0;
int screenW = 0;
if( pme->m_pMenuCtl != NULL)
{
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, content );
/*设备屏幕的宽度*/
screenW = pme->m_pOwner->DeviceInfo.cxScreen;
/*绘制指定的文本*/
IDISPLAY_DrawText(
pme->m_pIDisplay,AEE_FONT_NORMAL,content,
-1,screenW/2 - fontWi/2,20 + fontHe,NULL,IDF_TEXT_TRANSPARENT
);
/*刷新屏幕*/
IDISPLAY_Update( pme->m_pIDisplay );
}
/**************************************************************************
* Function Name : ReleaseObj
* Description : 释放资源
* Input Parameters : void ***
* Output Parameters: None
* Return Value : None
* Date : 2007/04/18
* Author : ZhongNingLin@neusoft.com
***************************************************************************/
static void ReleaseObj(void ** ppObj)
{
if ( ppObj && *ppObj )
{
(void)IBASE_Release(((IBase *)*ppObj));
*ppObj = NULL;
}
}
/**************************************************************************
* Function Name : ReleaseObj
* Description : 对话框
* Input Parameters : void ***
* Output Parameters: None
* Return Value : None
* Date : 2007/04/18
* Author : ZhongNingLin@neusoft.com
***************************************************************************/
static void CExamineEventWin_DrawDialog(ExamineEventWin * pme,const AECHAR *szText)
{
AEERect nRect;
int fontWidth = IDISPLAY_MeasureText(pme->m_pIDisplay,AEE_FONT_NORMAL,szText);
int fontHeight = IDISPLAY_GetFontMetrics(pme->m_pIDisplay,AEE_FONT_NORMAL,NULL,NULL);
int screenWidth = pme->m_pOwner->DeviceInfo.cxScreen;
int screenHeight = pme->m_pOwner->DeviceInfo.cyScreen;
int rectWidth = fontWidth + 10;
int rectHeight = fontHeight + 10;
IMENUCTL_SetActive( pme->m_pMenuCtl, FALSE);
SETAEERECT(&nRect,screenWidth/2 - rectWidth/2,screenHeight/2-rectHeight/2,rectWidth,rectHeight);
/*填充矩形的颜色*/
IDISPLAY_FillRect(pme->m_pIDisplay,&nRect,MAKE_RGB(0, 255, 255));
IDISPLAY_DrawText(pme->m_pIDisplay,
AEE_FONT_NORMAL,
szText,
-1,
screenWidth/2 - fontWidth/2,
screenHeight/2 - fontHeight/2,
&nRect,
IDF_TEXT_TRANSPARENT);
IDISPLAY_Update(pme->m_pIDisplay);
if( IMENUCTL_GetSel(pme->m_pMenuCtl) == IDS_DELETE_EVT )
pme->m_mState = APP_SURE_DI;
else
pme->m_mState = APP_SURE_DA;
}
//----------------------------end of file
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -