#ifndef NULLSOFT_WEBDEV_PLUGIN_NAVIGATION_HEADER #define NULLSOFT_WEBDEV_PLUGIN_NAVIGATION_HEADER #if defined(_MSC_VER) && (_MSC_VER >= 1020) #pragma once #endif #include #include #include typedef LPVOID HNAVITEM; class ifc_omservice; class Navigation : public ifc_mlnavigationcallback { protected: Navigation(); ~Navigation(); public: static HRESULT CreateInstance(Navigation **instance); public: /* Dispatchable */ size_t AddRef(); size_t Release(); int QueryInterface(GUID interface_guid, void **object); /* ifc_mlnavigationcallback */ void ImageChanged(LPCWSTR pszName, INT index); public: HRESULT Finish(); BOOL ProcessMessage(INT msg, INT_PTR param1, INT_PTR param2, INT_PTR param3, INT_PTR *result); HNAVITEM GetActive(ifc_omservice **serviceOut); HWND GetActiveView(ifc_omservice **serviceOut); HRESULT SelectItem(HNAVITEM hItem, LPCWSTR pszUrl); HRESULT DeleteItem(HNAVITEM hItem); HRESULT DeleteAll(); HRESULT CreatePopup(HNAVITEM hItem, HWND *hwnd); HRESULT GetService(HNAVITEM hItem, ifc_omservice **service); HRESULT UpdateService(ifc_omservice *service, UINT modifiedFlags); HNAVITEM FindService(UINT serviceId, ifc_omservice **serviceOut); HRESULT ShowService(UINT serviceId, LPCWSTR pszUrl); HNAVITEM CreateItem(ifc_omservice *service); HRESULT CreateUserService(HNAVITEM *itemOut); protected: HRESULT Initialize(); HRESULT SaveOrder(); HRESULT Order(std::vector&list); HNAVITEM GetMessageItem(INT msg, INT_PTR param1); HNAVITEM CreateItemInt(HNAVITEM hParent, ifc_omservice *service); HRESULT SelectItemInt(HNAVITEM hItem, UINT serviceId, LPCWSTR pszUrl); HRESULT GenerateServiceName(LPWSTR pszBuffer, INT cchBufferMax); HRESULT OnCreateView(HNAVITEM hItem, HWND hParent, HWND *hView); HRESULT OnContextMenu(HNAVITEM hItem, HWND hHost, POINTS pts); HRESULT OnEndTitleEdit(HNAVITEM hItem, LPCWSTR pszNewTitle); HRESULT OnDeleteItem(HNAVITEM hItem); HRESULT OnKeyDown(HNAVITEM hItem, NMTVKEYDOWN *pnmkd); HRESULT OnControlDestroy(); protected: size_t ref; HNAVITEM hRoot; HWND hLibrary; UINT cookie; protected: RECVS_DISPATCH; }; #endif //NULLSOFT_WEBDEV_PLUGIN_NAVIGATION_HEADER