WindowsXP-SP1/enduser/stuff/hhctrl/bookmark.h
2020-09-30 16:53:49 +02:00

174 lines
5.5 KiB
C++

#ifndef __BOOKMARK_H__
#define __BOOKMARK_H__
///////////////////////////////////////////////////////////
//
//
// AdSearch.h - Advanced Search UI
//
// This header file defines the Advanced Search Navigation
// pane class.
// INavPaneUI Interface
#include "navui.h"
// Other nav pane related structures.
#include "navpane.h"
///////////////////////////////////////////////////////////
//
// Forwards
//
///////////////////////////////////////////////////////////
//
// Constants
//
///////////////////////////////////////////////////////////
//
// CBookmarksNavPane
//
class CBookmarksNavPane : public INavUI
{
public:
//---Construction
CBookmarksNavPane(CHHWinType* pWinType);
virtual ~CBookmarksNavPane() ;
typedef enum BookmarkDlgItemInfoIndex
{
c_TopicsList, // The Bookmarks list view.
c_DeleteBtn,
c_DisplayBtn,
c_CurrentTopicStatic,
c_CurrentTopicEdit,
c_AddBookmarkBtn,
c_NumDlgItems
};
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) ;
virtual BOOL Synchronize(PSTR , CTreeNode* ) ;
void OnVKListNotify(NMHDR* pNMHdr) {/*Not Implemented*/}
private:
//--- Helper Functions.
void SetFont (HFONT hfont) { m_hfont = hfont; }
void SaveBookmarks() ;
void LoadBookmarks() ;
void InitDlgItemArray() ;
// Fill the edit control with the current topic.
void FillCurrentTopicEdit() ;
// Get the selected item
int GetSelectedItem() const ;
// Get the Url for the item;
TCHAR* GetUrl(int index) const;
// Get the URL for the selected item
TCHAR* GetSelectedUrl() const {return GetUrl(GetSelectedItem()) ;}
// Get the URL and the Topic name. --- See CPP file for more information.
bool GetTopicAndUrl(int index, WCHAR* pTopicBuffer,int TopicBufferSize, TCHAR** pUrl) const ;
// Display the context menu.
void ContextMenu(bool bUseCursor = true) ;
//--- Dirty Management.
bool Changed() const {return m_bChanged; }
void SetChanged(bool changed = true) {m_bChanged = changed;}
//--- Share with AdSearch???
void ShowDlgItemsEnabledState() ;
void EnableDlgItem(BookmarkDlgItemInfoIndex index, bool bEnabled) ;
HFONT GetFont() { return m_pWinType->GetContentFont(); }
HFONT GetAccessableContentFont() { return m_pWinType->GetAccessableContentFont(); }
protected:
//--- Message Handler Functions
void OnDelete() ;
void OnDisplay() ;
void OnAddBookmark();
void OnEdit() ; // Edit menu item.
void OnTab(HWND hwndReceivedTab, BookmarkDlgItemInfoIndex index) ;
void OnArrow(HWND hwndReceivedTab, BookmarkDlgItemInfoIndex index, INT_PTR key) ;
bool OnReturn(HWND hwndReceivedTab, BookmarkDlgItemInfoIndex /*index*/);
LRESULT ListViewMsg(HWND hwnd, NM_LISTVIEW* lParam) ; // Handle the listview notification messages.
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_CurrentTopicEditProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
// 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_lpfnlCurrentTopicEditProc;
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
// Array of dlgitems
CDlgItemInfo m_aDlgItems[c_NumDlgItems] ;
// Pointer to the TitleCollection on which we will search.
CExCollection* m_pTitleCollection;
// Holds a pointer to the wintype so we can send the WMP_HH_TAB_KEY message to it.
CHHWinType* m_pWinType;
// The URL corresponding to the topic in the edit control.
TCHAR* m_pszCurrentUrl;
// If this is true we should save the bookmarks.
bool m_bChanged ;
};
#endif //__BOOKMARK_H__