diff options
Diffstat (limited to 'Src/omBrowser/toolbarItem.h')
-rw-r--r-- | Src/omBrowser/toolbarItem.h | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/Src/omBrowser/toolbarItem.h b/Src/omBrowser/toolbarItem.h new file mode 100644 index 00000000..7a652305 --- /dev/null +++ b/Src/omBrowser/toolbarItem.h @@ -0,0 +1,107 @@ +#ifndef NULLSOFT_WINAMP_OMBROWSER_TOOLBARITEM_HEADER +#define NULLSOFT_WINAMP_OMBROWSER_TOOLBARITEM_HEADER + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +#include <wtypes.h> + +#define ICON_NONE (-1) + +class __declspec(novtable) ToolbarItem +{ +public: + typedef enum + { + stateHidden = 0x0001, + stateDisabled = 0x0002, + statePressed = 0x0004, + stateHighlighted = 0x0008, + stateFocused = 0x0010, + stateNoFocusRect = 0x0020, + + styleChevronOnly = 0x0100, + styleNoChevron = 0x0200, + stylePopup = 0x0400, + + styleFlexible = 0x1000, // item can change it width + styleStatic = 0x2000, // item not reacting on mouse or keyboard events + styleWantKey = 0x4000, + styleTabstop = 0x8000, // item wants to have it's own tabstop (not TBS_TABSTOP) + } Styles; + + typedef struct __Template + { + LPCSTR name; + LPCWSTR text; + LPCWSTR description; + INT iconId; + INT commandId; + UINT style; + } Template; + +protected: + ToolbarItem(LPCSTR pszName, UINT nStyle, INT nIcon, LPCWSTR pszText, LPCWSTR pszDescription); + virtual ~ToolbarItem(); + +public: + ULONG AddRef(); + ULONG Release(); + + LPCSTR GetName(); + virtual UINT GetStyle(); + virtual void SetStyle(HWND hToolbar, UINT newStyle, UINT styleMask); // if NULL != hToolbar - item will be invalidated + + virtual BOOL SetRect(const RECT *prc); + BOOL GetRect(RECT *prc); + BOOL OffsetRect(INT dx, INT dy); + virtual BOOL SetRectEmpty(); + BOOL IsRectEmpty(); + BOOL PtInRect(POINT pt); + + BOOL IntersectRect(RECT *prcDst, const RECT *prcSrc); + + BOOL IsEqual(LPCSTR pszName, INT cchName); + + virtual HRESULT GetText(LPWSTR pszBuffer, UINT cchBufferMax); + virtual HRESULT GetTextLength(size_t *pcchLength) { return E_NOTIMPL; } + virtual HRESULT GetDescription(LPWSTR pszBuffer, UINT cchBufferMax); + virtual BOOL SetDescription(HWND hToolbar, LPCWSTR pszDescription); + + virtual BOOL AdjustRect(HWND hToolbar, RECT *proposedRect) { return FALSE; } + virtual BOOL Paint(HWND hToolbar, HDC hdc, const RECT *paintRect, UINT state) { return FALSE;} + virtual INT GetTip(LPTSTR pszBuffer, INT cchBufferMax) { return 0; } + virtual void MouseMove(HWND hToolbar, UINT mouseFlags, POINT pt) {} + virtual void MouseLeave(HWND hToolbar) {} + virtual void LButtonDown(HWND hToolbar, UINT mouseFlags, POINT pt) {} + virtual void LButtonUp(HWND hToolbar, UINT mouseFlags, POINT pt) {} + virtual void Click(HWND hToolbar, UINT mouseFlags, POINT pt) {} + + virtual BOOL SetValueInt(HWND hToolbar, INT value) { return FALSE; } + virtual BOOL SetValueStr(HWND hToolbar, LPCWSTR value) { return FALSE; } + + virtual INT GetCommandId() { return 0; } + + virtual void UpdateSkin(HWND hToolbar) {} + virtual BOOL PtInItem(POINT pt); + + virtual BOOL FillMenuInfo(HWND hToolbar, MENUITEMINFO *pmii, LPWSTR pszBuffer, INT cchBufferMax) { return FALSE; } + virtual BOOL KeyDown(HWND hToolbar, INT vKey, UINT flags) { return FALSE; } + virtual BOOL KeyUp(HWND hToolbar, INT vKey, UINT flags) { return FALSE; } + virtual void SetFocus(HWND hToolbar, ToolbarItem *focusItem, BOOL fSet) {} + virtual BOOL SetCursor(HWND hToolbar, HWND hCursor, UINT hitTest, UINT messageId) { return FALSE; } + virtual void CommandSent(HWND hToolbar, INT commandId) {} + virtual BOOL DisplayContextMenu(HWND hToolbar, INT x, INT y) { return FALSE; } + +protected: + ULONG ref; + LPSTR name; + UINT style; + RECT rect; + INT iconId; + LPWSTR text; + LPWSTR description; +}; + +#endif // NULLSOFT_WINAMP_OMBROWSER_TOOLBARITEM_HEADER
\ No newline at end of file |