8#ifndef __SITEMPANEL__H__
9#define __SITEMPANEL__H__
12#include <proxy/SWindowProxy.h>
13#include <interface/SCtrl-i.h>
21 virtual void OnItemSetCapture(SOsrPanel *pItem, BOOL bCapture) = 0;
22 virtual BOOL OnItemGetRect(
const SOsrPanel *pItem,
23 CRect &rcItem)
const = 0;
24 virtual BOOL IsItemRedrawDelay()
const = 0;
29 virtual IObject *GetHost() = 0;
30 virtual BOOL OnHostFireEvent(IEvtArgs *e) = 0;
31 virtual BOOL IsHostUpdateLocked()
const = 0;
32 virtual BOOL IsHostVisible()
const = 0;
33 virtual CRect GetHostRect()
const = 0;
34 virtual void InvalidateHostRect(LPCRECT pRc, BOOL bClip) = 0;
35 virtual ISwndContainer *GetHostContainer() = 0;
36 virtual void OnLayoutDirty() = 0;
39class SHostProxy :
public IHostProxy {
41 explicit SHostProxy(SWindow *pHost)
47 virtual IObject *GetHost()
51 virtual BOOL OnHostFireEvent(IEvtArgs *e)
53 return m_pHost->FireEvent(e);
55 virtual BOOL IsHostUpdateLocked()
const
57 return m_pHost->IsUpdateLocked();
59 virtual BOOL IsHostVisible()
const
61 return m_pHost->IsVisible(TRUE);
63 virtual CRect GetHostRect()
const
65 return m_pHost->GetClientRect();
67 virtual void InvalidateHostRect(LPCRECT pRc, BOOL bClip)
69 m_pHost->InvalidateRect(pRc, TRUE, bClip);
71 virtual ISwndContainer *GetHostContainer()
73 return m_pHost->GetContainer();
76 virtual void OnLayoutDirty()
84class SOUI_EXP SOsrPanel
85 :
public TWindowProxy<IOsrPanel>
87 DEF_SOBJECT(SWindow, L
"osrPanel")
89 SOsrPanel(IHostProxy *pFrameHost, IItemContainer *pItemContainer);
94 static BOOL IsItemInClip(
const SMatrix &mtx,
const CRect &rcClip,
const IRegionS *clipRgn,
const CRect &rcItem);
97 STDMETHOD_(
void, SetItemIndex)(THIS_ LPARAM lp) OVERRIDE;
98 STDMETHOD_(LPARAM, GetItemIndex)(THIS) SCONST OVERRIDE;
99 STDMETHOD_(
void, SetItemData)(THIS_ LPARAM dwData) OVERRIDE;
100 STDMETHOD_(LPARAM, GetItemData)(THIS) SCONST OVERRIDE;
101 STDMETHOD_(
void, PtToHost)(THIS_ POINT *pt) SCONST OVERRIDE;
104 STDMETHOD_(
void, OnFinalRelease)(THIS) OVERRIDE;
105 STDMETHOD_(BOOL, InitFromXml)(THIS_ IXmlNode *pNode) OVERRIDE;
108 STDMETHOD_(BOOL, OnFireEvent)(IEvtArgs *evt) OVERRIDE;
110 STDMETHOD_(
void, GetContainerRect)(RECT *ret)
const OVERRIDE;
112 STDMETHOD_(
void, UpdateRegion)(IRegionS *rgn) OVERRIDE;
114 STDMETHOD_(
void, OnRedraw)(LPCRECT rc, BOOL bClip) OVERRIDE;
116 STDMETHOD_(BOOL, OnReleaseSwndCapture)() OVERRIDE;
118 STDMETHOD_(SWND, OnSetSwndCapture)(SWND swnd) OVERRIDE;
119 STDMETHOD_(HWND, GetHostHwnd)() OVERRIDE;
120 STDMETHOD_(LPCWSTR, GetTranslatorContext)()
const OVERRIDE;
121 STDMETHOD_(
void, FrameToHost)(RECT *rc)
const OVERRIDE;
122 STDMETHOD_(BOOL, IsTranslucent)()
const OVERRIDE;
123 STDMETHOD_(BOOL, IsSendWheel2Hover)()
const OVERRIDE;
125 STDMETHOD_(BOOL, UpdateWindow)(BOOL bForce) OVERRIDE;
127 STDMETHOD_(
void, UpdateTooltip)() OVERRIDE;
128 STDMETHOD_(
void, SetToolTip)(THIS_ LPCRECT rc, UINT tipAlign, LPCTSTR pszTip) OVERRIDE;
130 STDMETHOD_(IMessageLoop *, GetMsgLoop)() OVERRIDE;
132 STDMETHOD_(IScriptModule *, GetScriptModule)() OVERRIDE;
134 STDMETHOD_(
int, GetScale)()
const OVERRIDE;
136 STDMETHOD_(
void, EnableIME)(BOOL bEnable) OVERRIDE;
138 STDMETHOD_(
void, OnUpdateCursor)() OVERRIDE;
140 STDMETHOD_(
void, EnableHostPrivateUiDef)(THIS_ BOOL bEnable) OVERRIDE;
142 STDMETHOD_(BOOL, PostTask)(THIS_ IRunnable *runable, BOOL bAsync DEF_VAL(TRUE)) OVERRIDE;
143 STDMETHOD_(
int, RemoveTasksForObject)(THIS_
void *pObj) OVERRIDE;
146 virtual LRESULT
DoFrameEvent(UINT uMsg, WPARAM wParam, LPARAM lParam);
147 virtual void ModifyItemState(DWORD dwStateAdd, DWORD dwStateRemove);
149 virtual SWND
SwndFromPoint(CPoint &pt,
bool bIncludeMsgTransparent =
false);
151 virtual void Draw(IRenderTarget *pRT,
const CRect &rc);
153 virtual void BeforePaint(IRenderTarget *pRT, SPainter &painter);
156 virtual BOOL
UpdateToolTip(CPoint pt, SwndToolTipInfo &tipInfo);
159 CRect GetItemRect()
const;
160 void SetItemCapture(BOOL bCapture);
166 MSG_WM_DESTROY(OnDestroy)
167 MSG_WM_SHOWWINDOW(OnShowWindow)
170 IHostProxy *m_pHostProxy;
171 IItemContainer *m_pItemContainer;
172 LPARAM m_lpItemIndex;
181 TOsrPanelProxy(IHostProxy *pFrameHost, IItemContainer *pItemContainer)
182 : SOsrPanel(pFrameHost, pItemContainer)
186 STDMETHOD_(
long, AddRef)(THIS) OVERRIDE
188 return SOsrPanel::AddRef();
190 STDMETHOD_(
long, Release)(THIS) OVERRIDE
192 return SOsrPanel::Release();
194 STDMETHOD_(
void, OnFinalRelease)(THIS) OVERRIDE
196 SOsrPanel::OnFinalRelease();
199 STDMETHOD_(IWindow *, ToIWindow)(THIS) OVERRIDE
204 STDMETHOD_(HRESULT, QueryInterface)(REFGUID id, IObjRef **ppRet) OVERRIDE
206 if (
id == T::GetIID())
218 STDMETHOD_(
void, SetItemIndex)(THIS_ LPARAM lp) OVERRIDE
220 return SOsrPanel::SetItemIndex(lp);
222 STDMETHOD_(LPARAM, GetItemIndex)(THIS) SCONST OVERRIDE
224 return SOsrPanel::GetItemIndex();
226 STDMETHOD_(
void, SetItemData)(THIS_ LPARAM dwData) OVERRIDE
228 return SOsrPanel::SetItemData(dwData);
230 STDMETHOD_(LPARAM, GetItemData)(THIS) SCONST OVERRIDE
232 return SOsrPanel::GetItemData();
234 STDMETHOD_(
void, PtToHost)(THIS_ POINT *pt) SCONST OVERRIDE
236 return SOsrPanel::PtToHost(pt);
240class SOUI_EXP SItemPanel :
public TOsrPanelProxy<IItemPanel> {
241 DEF_SOBJECT(SOsrPanel, L
"ItemPanel")
243 static SItemPanel *Create(IHostProxy *pFrameHost, SXmlNode xmlNode, IItemContainer *pItemContainer);
246 SItemPanel(IHostProxy *pFrameHost, IItemContainer *pItemContainer);
247 virtual ~SItemPanel()
252 STDMETHOD_(
void, SetSkin)(THIS_ ISkinObj *pSkin) OVERRIDE;
253 STDMETHOD_(
void, SetColor)(THIS_ COLORREF crBk, COLORREF crSelBk) OVERRIDE;
257 ATTR_COLOR(L
"colorNormal", m_crBk, FALSE)
258 ATTR_COLOR(L
"colorSelected", m_crSelBk, FALSE)
259 ATTR_COLOR(L
"colorHover", m_crHover, FALSE)
263 STDMETHOD_(COLORREF, GetBkgndColor)(THIS) SCONST OVERRIDE;
264 STDMETHOD_(BOOL, OnFireEvent)(IEvtArgs *evt);
267 COLORREF m_crBk, m_crSelBk, m_crHover;
virtual BOOL UpdateToolTip(CPoint pt, SwndToolTipInfo &tipInfo)
Handle tooltip updates.
HRESULT QueryInterface(REFGUID id, IObjRef **ppRet) OVERRIDE
Queries an interface.
void OnDestroy()
Handles the destruction of the window.
SWND SwndFromPoint(POINT *pt, BOOL bIncludeMsgTransparent=FALSE) SCONST OVERRIDE
Retrieves the window handle at a specified point.
virtual BOOL NeedRedrawWhenStateChange()
Determine if redraw is needed on state change.
virtual void BeforePaint(IRenderTarget *pRT, SPainter &painter)
Prepare rendering environment.
void OnShowWindow(BOOL bShow, UINT nStatus)
Handles showing or hiding the window.
void RequestRelayout() OVERRIDE
Requests a relayout of the window.
Implementation of the SOUI window container.
virtual LRESULT DoFrameEvent(UINT uMsg, WPARAM wParam, LPARAM lParam)
Processes frame events.