diff options
Diffstat (limited to 'Src/omBrowser/toolbarItem.cpp')
-rw-r--r-- | Src/omBrowser/toolbarItem.cpp | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/Src/omBrowser/toolbarItem.cpp b/Src/omBrowser/toolbarItem.cpp new file mode 100644 index 00000000..e96e0051 --- /dev/null +++ b/Src/omBrowser/toolbarItem.cpp @@ -0,0 +1,117 @@ +#include "main.h" +#include "./toolbarItem.h" +#include "./toolbar.h" +#include "./graphics.h" +#include "./resource.h" +#include "../Plugins/General/gen_ml/ml_ipc_0313.h" +#include <strsafe.h> + +ToolbarItem::ToolbarItem(LPCSTR pszName, UINT nStyle, INT nIcon, LPCWSTR pszText, LPCWSTR pszDescription) + : ref(1), name(NULL), style(nStyle), iconId(nIcon), text(NULL), description(NULL) +{ + name = Plugin_CopyAnsiString(pszName); + text = Plugin_DuplicateResString(pszText); + description = Plugin_DuplicateResString(pszDescription); +} + +ToolbarItem::~ToolbarItem() +{ + Plugin_FreeAnsiString(name); + Plugin_FreeResString(text); + Plugin_FreeResString(description); +} + +ULONG ToolbarItem::AddRef() +{ + return InterlockedIncrement((LONG*)&ref); +} + +ULONG ToolbarItem::Release() +{ + if (0 == ref) return ref; + LONG r = InterlockedDecrement((LONG*)&ref); + if (0 == r) delete(this); + return r; +} + +LPCSTR ToolbarItem::GetName() +{ + return name; +} + +UINT ToolbarItem::GetStyle() +{ + return style; +} + +void ToolbarItem::SetStyle(HWND hToolbar, UINT newStyle, UINT styleMask) +{ + UINT styleNew = (style & ~styleMask) | (newStyle & styleMask); + if (style != styleNew) + { + style = styleNew; + if (NULL != hToolbar && 0 == (stateHidden & style)) + InvalidateRect(hToolbar, &rect, FALSE); + } +} + +BOOL ToolbarItem::SetRect(const RECT *prc) +{ + return CopyRect(&rect, prc); +} + +BOOL ToolbarItem::GetRect(RECT *prc) +{ + return CopyRect(prc, &rect); +} + +BOOL ToolbarItem::OffsetRect(INT dx, INT dy) +{ + return ::OffsetRect(&rect, dx, dy); +} + +BOOL ToolbarItem::SetRectEmpty() +{ + return ::SetRectEmpty(&rect); +} + +BOOL ToolbarItem::IsRectEmpty() +{ + return ::IsRectEmpty(&rect); +} + +BOOL ToolbarItem::PtInRect(POINT pt) +{ + return ::PtInRect(&rect, pt); +} + +BOOL ToolbarItem::PtInItem(POINT pt) +{ + return (pt.x >= rect.left && pt.x < rect.right && rect.bottom != rect.top); +} + +BOOL ToolbarItem::IntersectRect(RECT *prcDst, const RECT *prcSrc) +{ + return ::IntersectRect(prcDst, &rect, prcSrc); +} + +BOOL ToolbarItem::IsEqual(LPCSTR pszName, INT cchName) +{ + return (NULL != name && CSTR_EQUAL == CompareStringA(CSTR_INVARIANT, NORM_IGNORECASE, pszName, cchName, name, -10)); +} +BOOL ToolbarItem::SetDescription(HWND hToolbar, LPCWSTR pszDescription) +{ + Plugin_FreeResString(description); + description = Plugin_DuplicateResString(pszDescription); + return TRUE; +} + +HRESULT ToolbarItem::GetText(LPWSTR pszBuffer, UINT cchBufferMax) +{ + return Plugin_CopyResString(pszBuffer, cchBufferMax, text); +} + +HRESULT ToolbarItem::GetDescription(LPWSTR pszBuffer, UINT cchBufferMax) +{ + return Plugin_CopyResString(pszBuffer, cchBufferMax, description); +}
\ No newline at end of file |