Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

185 lines
3.3 KiB

//
// candfunc.h
//
#ifndef CANDFUNC_H
#define CANDFUNC_H
#include "private.h"
#include "globals.h"
#include "mscandui.h"
#include "candmgr.h"
class CCandidateUI;
//
//
//
typedef enum _CANDSORT
{
CANDSORT_NONE = 0,
CANDSORT_ASCENDING = 1,
CANDSORT_DESCENDING = 2,
} CANDSORT;
//
// CCandFnAutoFilter
// = candidate list filtering function =
//
class CCandFnAutoFilter : public CCandListEventSink
{
public:
CCandFnAutoFilter( CCandidateUI *pCandUI );
virtual ~CCandFnAutoFilter( void );
//
// CCandListEventSink
//
virtual void OnSetCandidateList( void );
virtual void OnClearCandidateList( void );
virtual void OnCandItemUpdate( void );
virtual void OnSelectionChanged( void );
HRESULT Enable( BOOL fEnable );
HRESULT GetFilteringResult( CANDUIFILTERSTR strtype, BSTR *pbstr );
BOOL IsEnabled( void );
void SetFilterString( LPCWSTR psz );
LPCWSTR GetFilterString( void );
void ClearFilterString( void );
int FilterCandidateList( void );
BOOL FExistItemMatches( LPCWSTR psz );
//
// EventSink functions
//
void SetEventSink( ITfCandUIAutoFilterEventSink *pSink )
{
SafeReleaseClear( m_pSink );
m_pSink = pSink;
m_pSink->AddRef();
}
ITfCandUIAutoFilterEventSink *GetEventSink( void )
{
return m_pSink;
}
void ReleaseEventSink( void )
{
SafeReleaseClear( m_pSink );
}
//
// interface object functions
//
HRESULT CreateInterfaceObject( REFIID riid, void **ppvObj );
protected:
CCandidateUI *m_pCandUI;
BOOL m_fEnable;
BSTR m_bstrFilter;
ITfCandUIAutoFilterEventSink *m_pSink;
};
//
// CCandListSort
// = candidate list sort function =
//
class CCandFnSort : public CCandListEventSink
{
public:
CCandFnSort( CCandidateUI *pCandUI );
virtual ~CCandFnSort( void );
//
// CCandListEventSink
//
virtual void OnSetCandidateList( void );
virtual void OnClearCandidateList( void );
virtual void OnCandItemUpdate( void );
virtual void OnSelectionChanged( void );
HRESULT SortCandidateList( CANDSORT type );
HRESULT GetSortType( CANDSORT *ptype );
//
// EventSink functions
//
void SetEventSink( ITfCandUISortEventSink *pSink )
{
SafeReleaseClear( m_pSink );
m_pSink = pSink;
m_pSink->AddRef();
}
ITfCandUISortEventSink *GetEventSink( void )
{
return m_pSink;
}
void ReleaseEventSink( void )
{
SafeReleaseClear( m_pSink );
}
//
// interface object functions
//
HRESULT CreateInterfaceObject( REFIID riid, void **ppvObj );
protected:
CCandidateUI *m_pCandUI;
CANDSORT m_SortType;
ITfCandUISortEventSink *m_pSink;
void SortProc( int iItemFirst, int iItemLast );
};
//
// CCandUIFunctionMgr
// = candidate UI function manager =
//
class CCandUIFunctionMgr
{
public:
CCandUIFunctionMgr( void );
virtual ~CCandUIFunctionMgr( void );
HRESULT Initialize( CCandidateUI *pCandUI );
HRESULT Uninitialize( void );
__inline CCandFnAutoFilter *GetCandFnAutoFilter( void )
{
return m_pFnAutoFilter;
}
__inline CCandFnSort *GetCandFnSort( void )
{
return m_pFnSort;
}
//
//
//
HRESULT GetObject( REFIID riid, void **ppvObj );
protected:
CCandidateUI *m_pCandUI;
CCandFnAutoFilter *m_pFnAutoFilter;
CCandFnSort *m_pFnSort;
};
#endif // CANDFUNC_H