winamp/Src/Plugins/Library/ml_webdev/navigation.h
2024-09-24 14:54:57 +02:00

84 lines
2.2 KiB
C++

#ifndef NULLSOFT_WEBDEV_PLUGIN_NAVIGATION_HEADER
#define NULLSOFT_WEBDEV_PLUGIN_NAVIGATION_HEADER
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif
#include <wtypes.h>
#include <ifc_mlnavigationcallback.h>
#include <vector>
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<ifc_omservice *>&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