|
|
//
// cuiobj.h
// UI object library - define UI objects
//
// CUIFObject
// +- CUIFBorder border object
// +- CUIFStatic static object
// +- CUIFButton button object
// | +- CUIFScrollButton scrollbar button object (used in CUIFScroll)
// +- CUIFScrollButton scrollbar thumb object (used in CUIFScroll)
// +- CUIFScroll scrollbar object
// +- CUIFList listbox object
// +- CUIFWindow window frame object (need to be at top of parent)
//
#ifndef CUICAND_H
#define CUICAND_H
#include "private.h"
#include "cuilib.h"
#include "candmgr.h"
#include "candacc.h"
#define CANDLISTACCITEM_MAX 9
class CUIFCandListBase;
//
// CUIFSmartScrollButton
//
class CUIFSmartScrollButton : public CUIFScrollButton { public: CUIFSmartScrollButton( CUIFScroll *pUIScroll, const RECT *prc, DWORD dwStyle ); ~CUIFSmartScrollButton( void );
protected: void OnPaintNoTheme( HDC hDC ); BOOL OnPaintTheme( HDC hDC ); };
//
// CUIFScrollThumb
//
#define UISMARTSCROLLTHUMB_VERT 0x00000000
#define UISMARTSCROLLTHUMB_HORZ 0x00010000
class CUIFSmartScrollThumb : public CUIFScrollThumb { public: CUIFSmartScrollThumb( CUIFScroll *pUIScroll, const RECT *prc, DWORD dwStyle ); virtual ~CUIFSmartScrollThumb( void );
virtual void OnMouseIn( POINT pt ); virtual void OnMouseOut( POINT pt ); virtual void OnPaint( HDC hDC );
protected: void OnPaintNoTheme( HDC hDC ); BOOL OnPaintTheme( HDC hDC );
BOOL m_fMouseIn; };
//
// CUIFSmartScroll
//
class CUIFSmartScroll : public CUIFScroll { public: CUIFSmartScroll( CUIFObject *pParent, DWORD dwID, const RECT *prc, DWORD dwStyle ); virtual ~CUIFSmartScroll( void );
virtual void SetStyle( DWORD dwStyle );
virtual CUIFObject *Initialize( void );
protected: void OnPaintNoTheme( HDC hDC ); BOOL OnPaintTheme( HDC hDC ); };
//
// CCandListItem
// = candidate list item object =
//
class CCandListItem : public CListItemBase { public: CCandListItem( int iListItem, int iCandItem, CCandidateItem *pCandItem ) { Assert( pCandItem != NULL );
m_iListItem = iListItem; m_iCandItem = iCandItem; m_pCandItem = pCandItem; }
virtual ~CCandListItem( void ) { }
int GetIListItem( void ) { return m_iListItem; }
int GetICandItem( void ) { return m_iCandItem; }
CCandidateItem *GetCandidateItem( void ) { return m_pCandItem; }
protected: int m_iListItem; int m_iCandItem; CCandidateItem *m_pCandItem; };
//
// CCandListAccItem
// = candidate list accessible item =
//
class CCandListAccItem : public CCandAccItem { public: CCandListAccItem( CUIFCandListBase *pListUIObj, int iLine ); virtual ~CCandListAccItem( void );
//
// CandAccItem method
//
virtual BSTR GetAccName( void ); virtual BSTR GetAccValue( void ); virtual LONG GetAccRole( void ); virtual LONG GetAccState( void ); virtual void GetAccLocation( RECT *prc );
void OnSelect( void );
protected: CUIFCandListBase *m_pListUIObj; CUIFCandListBase *m_pOptionsListUIObj; int m_iLine; };
//
// CUIFCandListBase
// = candidate list UI object base class =
//
class CUIFCandListBase { public: CUIFCandListBase( void ); virtual ~CUIFCandListBase( void );
//
//
//
virtual int AddCandItem( CCandListItem *pCandListItem ) = 0; /* PURE */ virtual int GetItemCount( void ) = 0; /* PURE */ virtual BOOL IsItemSelectable( int iListItem ) = 0; /* PURE */ virtual CCandListItem *GetCandItem( int iItem ) = 0; /* PURE */ virtual void DelAllCandItem( void ) = 0; /* PURE */ virtual void SetCurSel( int iSelection ) = 0; /* PURE */ virtual int GetCurSel( void ) = 0; /* PURE */ virtual int GetTopItem( void ) = 0; /* PURE */ virtual int GetBottomItem( void ) = 0; /* PURE */ virtual BOOL IsVisible( void ) = 0; /* PURE */ virtual void GetRect( RECT *prc ) = 0; /* PURE */ virtual void GetItemRect( int iItem, RECT *prc ) = 0; /* PURE */ virtual void SetInlineCommentPos( int cx ) = 0; /* PURE */ virtual void SetInlineCommentFont( HFONT hFont ) = 0; /* PURE */ virtual void SetIndexFont( HFONT hFont ) = 0; /* PURE */ virtual void SetCandList( CCandidateList *pCandList ) = 0; /* PURE */
// accessibility functions
virtual BSTR GetAccNameProc( int iItem ) = 0; /* PURE */ virtual BSTR GetAccValueProc( int iItem ) = 0; /* PURE */ virtual LONG GetAccRoleProc( int iItem ) = 0; /* PURE */ virtual LONG GetAccStateProc( int iItem ) = 0; /* PURE */ virtual void GetAccLocationProc( int iItem, RECT *prc ) = 0; /* PURE */
void InitAccItems( CCandAccessible *pCandAcc ); CCandListAccItem *GetListAccItem( int i );
CCandidateItem *GetCandidateItem( int iItem ); void SetIconPopupComment( HICON hIconOn, HICON hIconOff );
protected: CCandListAccItem *m_rgListAccItem[ CANDLISTACCITEM_MAX ]; HFONT m_hFontInlineComment; HFONT m_hFontIndex; HICON m_hIconPopupOn; HICON m_hIconPopupOff; };
//
// CUIFCandList
// = candidate list UI object =
//
// notification code
#define UICANDLIST_HOVERITEM 0x00010000
class CUIFCandList : public CUIFListBase, public CUIFCandListBase { public: CUIFCandList( CUIFObject *pParent, DWORD dwID, const RECT *prc, DWORD dwStyle ); virtual ~CUIFCandList( void );
//
// CUIFCandListBase methods
//
virtual int AddCandItem( CCandListItem *pCandListItem ); virtual int GetItemCount( void ); virtual BOOL IsItemSelectable( int iListItem ); virtual CCandListItem *GetCandItem( int iItem ); virtual void DelAllCandItem( void ); virtual void SetCurSel( int iSelection ); virtual int GetCurSel( void ); virtual int GetTopItem( void ); virtual int GetBottomItem( void ); virtual BOOL IsVisible( void ); virtual void GetRect( RECT *prc ); virtual void GetItemRect( int iItem, RECT *prc ); virtual void SetInlineCommentPos( int cx ); virtual void SetInlineCommentFont( HFONT hFont ); virtual void SetIndexFont( HFONT hFont ); virtual void SetCandList( CCandidateList *pCandList );
virtual BSTR GetAccNameProc( int iItem ); virtual BSTR GetAccValueProc( int iItem ); virtual LONG GetAccRoleProc( int iItem ); virtual LONG GetAccStateProc( int iItem ); virtual void GetAccLocationProc( int iItem, RECT *prc );
//
// CUIFObject methods
//
virtual void OnLButtonDown( POINT pt ); virtual void OnLButtonUp( POINT pt ); virtual void OnMouseMove( POINT pt ); virtual void OnMouseIn( POINT pt ); virtual void OnMouseOut( POINT pt ); virtual void OnPaint( HDC hDC );
void SetStartIndex( int iIndexStart ); void SetExtraTopSpace( int nSize ); void SetExtraBottomSpace( int nSize ); int GetExtraTopSpace( void ); int GetExtraBottomSpace( void );
protected: //
// CUIFListBase methods
//
virtual void GetLineRect( int iLine, RECT *prc ); virtual void GetScrollBarRect( RECT *prc ); virtual DWORD GetScrollBarStyle( void ); virtual CUIFScroll *CreateScrollBarObj( CUIFObject *pParent, DWORD dwID, RECT *prc, DWORD dwStyle );
void PaintItemProc( HDC hDC, RECT *prc, int iIndex, CCandListItem *pItem, BOOL fSelected ); void PaintItemText( HDC hDC, RECT *prcText, RECT *prcClip, RECT *prcIndex, CCandidateItem *pCandItem, BOOL fSelected ); void SetItemHover( int iItem );
int m_iIndexStart; int m_nExtTopSpace; int m_nExtBottomSpace; int m_cxInlineCommentPos; int m_iItemHover; };
//
//
//
class CUIFExtCandList : public CUIFCandList { public: CUIFExtCandList( CUIFObject *pParent, DWORD dwID, const RECT *prc, DWORD dwStyle ); virtual ~CUIFExtCandList( void );
//
// CUIFObject methods
//
virtual void OnTimer( void ); virtual void OnLButtonUp( POINT pt ); virtual void OnMouseMove( POINT pt ); virtual void OnMouseOut( POINT pt ); };
//
// CUIFCandRawData
// = candidate raw data UI object =
//
#define UICANDRAWDATA_HORZTB 0x00000000
#define UICANDRAWDATA_HORZBT 0x00000001
#define UICANDRAWDATA_VERTLR 0x00000002
#define UICANDRAWDATA_VERTRL 0x00000003
#define UICANDRAWDATA_CLICKED 0x00000001
class CUIFCandRawData : public CUIFObject { public: CUIFCandRawData( CUIFObject *pParent, DWORD dwID, const RECT *prc, DWORD dwStyle ); virtual ~CUIFCandRawData( void );
void ClearData( void ); void SetText( LPCWSTR pwchText ); void SetBitmap( HBITMAP hBitmap ); void SetMetaFile( HENHMETAFILE hEnhMetaFile ); int GetText( LPWSTR pwchBuf, int cwchBuf ); HBITMAP GetBitmap( void ); HENHMETAFILE GetMetaFile( void );
virtual void SetFont( HFONT hFont ); virtual void SetStyle( DWORD dwStyle ); virtual void OnPaint( HDC hDC ); virtual void OnLButtonDown( POINT pt ); virtual void OnLButtonUp( POINT pt );
protected: LPWSTR m_pwchText; HBITMAP m_hBitmap; HENHMETAFILE m_hEnhMetaFile; HBITMAP m_hBmpCache;
void ClearCache( void ); void DrawTextProc( HDC hDC, const RECT *prc ); void DrawBitmapProc( HDC hDC, const RECT *prc ); void DrawMetaFileProc( HDC hDC, const RECT *prc ); };
//
// CUIFCandBorder
// = border object in candidate UI =
//
class CUIFCandBorder : public CUIFBorder { public: CUIFCandBorder( CUIFObject *pParent, DWORD dwID, const RECT *prc, DWORD dwStyle ); virtual ~CUIFCandBorder( void );
void OnPaint( HDC hDC ); };
//
// CUIFCandMenuButton
// = candidate menu button =
//
class CUIFCandMenuButton : public CUIFButton2, public CCandAccItem { public: CUIFCandMenuButton( CUIFObject *pParent, DWORD dwID, const RECT *prc, DWORD dwStyle ); virtual ~CUIFCandMenuButton( void );
//
// CandAccItem method
//
virtual BSTR GetAccName( void ); virtual BSTR GetAccValue( void ); virtual LONG GetAccRole( void ); virtual LONG GetAccState( void ); virtual void GetAccLocation( RECT *prc );
protected: virtual void SetStatus( DWORD dwStatus ); };
#endif /* CUIOBJ_H */
|