#ifndef _ADSEARCH_H__ #define _ADSEARCH_H__ /////////////////////////////////////////////////////////// // // // AdSearch.h - Advanced Search UI // // This header file defines the Advanced Search Navigation // pane class. #include "navui.h" // Other nav pane related structures. #include "navpane.h" /////////////////////////////////////////////////////////// // // Subset Dialog Removal // #define _SUBSETS__ /////////////////////////////////////////////////////////// // // Forwards // class CFTSListView; /////////////////////////////////////////////////////////// // // Constants // typedef enum DlgItemInfoIndex { c_KeywordCombo, c_ConjunctionBtn, c_SearchBtn, c_DisplayBtn, c_FoundStatic, c_ResultsList, #ifdef __SUBSETS__ c_SearchInStatic, c_SubsetsCombo, c_SubsetsBtn, #else c_PreviousCheck, #endif c_SimilarCheck, c_TitlesOnlyCheck, c_TypeInWordsStatic, c_NumDlgItems }; /////////////////////////////////////////////////////////// // // CAdvancedSearchNavPane // class CAdvancedSearchNavPane : public INavUI { public: //---Construction CAdvancedSearchNavPane(CHHWinType* pWinType); virtual ~CAdvancedSearchNavPane() ; public: //--- INavUI Interface functions. virtual BOOL Create(HWND hwndParent); virtual LRESULT OnCommand(HWND hwnd, UINT id, UINT uNotifiyCode, LPARAM lParam); virtual void ResizeWindow(); virtual void HideWindow() ; virtual void ShowWindow() ; virtual void SetPadding(int pad) ; virtual void SetTabPos(int tabpos) ; // Set focus to the most expected control, usually edit combo. virtual void SetDefaultFocus() ; // Process accelerator keys. virtual bool ProcessMenuChar(HWND hwndParent, int ch) ; // Process WM_NOTIFY messages. Used by embedded Tree and List view controls. virtual LRESULT OnNotify(HWND hwnd, WPARAM wParam, LPARAM lParam) ; // Process WM_DRAWITEM messages. virtual void OnDrawItem(UINT id, LPDRAWITEMSTRUCT pdis) ; // Seed the nav ui with a search term or keyword. virtual void Seed(LPCSTR pszSeed) ; void OnVKListNotify(NMHDR* pNMHdr) {/*Not Implemented*/} public: // Called from code that may add or delete subsets so that we can update our list accordingly. void UpdateSSCombo(bool bInitialize = false); private: //--- Helper Functions. void SetFont (HFONT hfont) { m_hfont = hfont; } void InitDlgItemArray() ; void ShowDlgItemsEnabledState() ; void EnableDlgItem(DlgItemInfoIndex index, bool bEnabled) ; void AddKeywordToCombo(PCWSTR sz = NULL) ; void SaveKeywordCombo() ; void LoadKeywordCombo() ; protected: //--- Message Handler Functions void OnStartSearch() ; void OnDisplayTopic() ; void OnDefineSubsets() ; void OnConjunctions() ; void OnTab(HWND hwndReceivedTab, DlgItemInfoIndex index) ; void OnArrow(HWND hwndReceivedTab, DlgItemInfoIndex index, INT_PTR key) ; bool OnReturn(HWND hwndReceivedTab, DlgItemInfoIndex /*index*/); HFONT GetFont() { return m_pWinType->GetContentFont(); } HFONT GetAccessableContentFont() { return m_pWinType->GetAccessableContentFont(); } private: //--- Callbacks static INT_PTR CALLBACK s_DialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) ; INT_PTR DialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) ; static LRESULT WINAPI s_ListViewProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); static LRESULT WINAPI s_KeywordComboProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); static LRESULT WINAPI s_KeywordComboEditProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); #ifdef __SUBSETS__ static LRESULT WINAPI s_SubsetsComboProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); #endif // shared by all btns. static LRESULT WINAPI s_GenericBtnProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); // shared by other ctrls to handle keyboard static LRESULT WINAPI s_GenericKeyboardProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); protected: //--- Statics static WNDPROC s_lpfnlListViewWndProc; static WNDPROC s_lpfnlKeywordComboProc ; static WNDPROC s_lpfnlKeywordComboEditProc ; #ifdef __SUBSETS__ static WNDPROC s_lpfnlSubsetsComboProc ; #endif static WNDPROC s_lpfnlGenericBtnProc ; // Shared by all btns. static WNDPROC s_lpfnlGenericKeyboardProc ; // Shared by ctrls which don't use one of the other procs. private: //--- Member Functions. HWND m_hWnd; HFONT m_hfont; // author-specified font to use for child windows int m_padding; int m_NavTabPos; // location of parent tabs // Members supporting the Conj button. HBITMAP m_hbmConj ; // Bitmap // Array of dlgitems CDlgItemInfo m_aDlgItems[c_NumDlgItems] ; // Pointer to the TitleCollection on which we will search. CExCollection* m_pTitleCollection; // class to manage the list view control CFTSListView *m_plistview; // Handle to the edit control of the keyword combobox HWND m_hKeywordComboEdit ; // Cache for the last selection in the combobox DWORD m_dwKeywordComboEditLastSel ; // Holds a pointer to the wintype so we can send the WMP_HH_TAB_KEY message to it. CHHWinType* m_pWinType; }; #endif //_ADSEARCH_H__