123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
-
- #pragma once
- #include <helper/SAdapterBase.h>
- class LvAdapterHandle : public SAdapterBase
- {
- public:
- LvAdapterHandle(STileView* pOwner)
- : m_pOwner(pOwner)
- , m_evtSlot_ItemClick(&LvAdapterHandle::OnEventItemClick, this)
- , m_evtSlot_ItemDbClick(&LvAdapterHandle::OnEventItemDbClick, this)
- , m_evtSlot_ItemRClick(&LvAdapterHandle::OnEventItemRClick, this)
- , m_evtSlot_ItemHover(&LvAdapterHandle::OnEventItemHover, this)
- , m_evtSlot_ItemLeave(&LvAdapterHandle::OnEventItemLeave, this)
- {
-
- if(NULL != m_pOwner)
- {
- m_pOwner->GetEventSet()->subscribeEvent(&LvAdapterHandle::OnEventLvSelChangeing, this);
- }
- }
- virtual ~LvAdapterHandle()
- {
-
- }
-
- void SelectItem(int nItem, bool bNotify=false)
- {
- m_pOwner->SetSel(nItem, bNotify ? TRUE : FALSE);
- }
- int GetSelectItem()
- {
- return m_pOwner->GetSel();
- }
- protected:
-
- virtual void ShowView(int nItem, SWindow* pItem)
- {
- }
-
- virtual void ItemClick(int nItem, SItemPanel* pItem, const CPoint& pt)
- {
- }
-
- virtual void ItemDbClick(int nItem, SItemPanel* pItem, const CPoint& pt)
- {
- }
- virtual void ItemRClick(int nItem, SItemPanel* pItem, const CPoint& pt)
- {
- }
- virtual void ItemHover(int nItem, SItemPanel* pItem, const CPoint& pt)
- {
- }
- virtual void ItemLeave(int nItem, SItemPanel* pItem)
- {
- }
-
- virtual bool IsItemClick(int nItem, const SStringT& szSndName)
- {
- return true;
- }
- protected:
- virtual void InitByTemplate(pugi::xml_node xmlTemplate)
- {
-
-
-
- }
-
-
-
-
-
-
-
-
-
- virtual void getView(int nPosition, SWindow* pItem, pugi::xml_node xmlTemplate)
- {
- if(0 == pItem->GetChildrenCount())
- {
- pItem->InitFromXml(xmlTemplate);
- auto eventItem = pItem->GetEventSet();
- eventItem->subscribeEvent(EventItemPanelClick::EventID, m_evtSlot_ItemClick);
- eventItem->subscribeEvent(EventItemPanelDbclick::EventID, m_evtSlot_ItemDbClick);
- eventItem->subscribeEvent(EventItemPanelRclick::EventID, m_evtSlot_ItemRClick);
- eventItem->subscribeEvent(EventItemPanelHover::EventID, m_evtSlot_ItemHover);
- eventItem->subscribeEvent(EventItemPanelLeave::EventID, m_evtSlot_ItemLeave);
- }
-
-
-
- ShowView(nPosition, pItem);
- }
- bool OnEventLvSelChangeing(EventLVSelChanging* pEvt)
- {
- if(NULL == pEvt)
- return true;
-
- pEvt->bubbleUp = false;
- if(-1 == pEvt->iNewSel)
- pEvt->bCancel = TRUE;
- return true;
- }
- bool OnEventItemClick(EventArgs* e)
- {
- EventItemPanelClick* pEvt = sobj_cast<EventItemPanelClick>(e);
- if(NULL == pEvt) return true;
- SItemPanel* pItem = sobj_cast<SItemPanel>(pEvt->sender);
- if(NULL == pItem) return true;
-
- int nItem = static_cast<int>(pItem->GetItemIndex());
- CPoint pt;
- pt.x = GET_X_LPARAM(pEvt->lParam);
- pt.y = GET_Y_LPARAM(pEvt->lParam);
-
-
- SWND hHover = pItem->SwndFromPoint(pt, FALSE);
- SWindow* pChild = SWindowMgr::GetWindow(hHover);
-
- if(NULL != pChild)
- {
- if(!IsItemClick(nItem, pChild->GetName()) )
- {
- e->bubbleUp = false;
- return true;
- }
- }
-
- ItemClick(nItem, pItem, pt);
-
- return true;
- }
-
- bool OnEventItemDbClick(EventArgs* e)
- {
- EventItemPanelDbclick* pEvt = sobj_cast<EventItemPanelDbclick>(e);
- if(NULL == pEvt) return true;
- SItemPanel* pItem = sobj_cast<SItemPanel>(pEvt->sender);
- if(NULL == pItem) return true;
- int nItem = static_cast<int>(pItem->GetItemIndex());
- CPoint pt;
- pt.x = GET_X_LPARAM(pEvt->lParam);
- pt.y = GET_Y_LPARAM(pEvt->lParam);
- ItemDbClick(nItem, pItem, pt);
- return true;
- }
- bool OnEventItemRClick(EventArgs* e)
- {
- EventItemPanelRclick* pEvt = sobj_cast<EventItemPanelRclick>(e);
- if(NULL == pEvt) return true;
- SItemPanel* pItem = sobj_cast<SItemPanel>(pEvt->sender);
- if(NULL == pItem) return true;
- int nItem = static_cast<int>(pItem->GetItemIndex());
-
- CPoint pt;
- pt.x = GET_X_LPARAM(pEvt->lParam);
- pt.y = GET_Y_LPARAM(pEvt->lParam);
- ItemRClick(nItem, pItem, pt);
- return true;
- }
- bool OnEventItemHover(EventArgs* e)
- {
- EventItemPanelHover* pEvt = sobj_cast<EventItemPanelHover>(e);
- if(NULL == pEvt)
- return true;
-
- SItemPanel* pItem = sobj_cast<SItemPanel>(pEvt->sender);
- if(NULL == pItem) return true;
- int nItem = static_cast<int>(pItem->GetItemIndex());
- CPoint pt;
- pt.x = GET_X_LPARAM(pEvt->lParam);
- pt.y = GET_Y_LPARAM(pEvt->lParam);
- ItemHover(nItem, pItem, pt);
- return true;
- }
- bool OnEventItemLeave(EventArgs* e)
- {
- EventItemPanelLeave* pEvt = sobj_cast<EventItemPanelLeave>(e);
- if(NULL == pEvt)
- return true;
-
- SItemPanel* pItem = sobj_cast<SItemPanel>(pEvt->sender);
- if(NULL == pItem) return true;
- int nItem = static_cast<int>(pItem->GetItemIndex());
-
- ItemLeave(nItem, pItem);
- return true;
- }
- protected:
- STileView* m_pOwner;
- private:
- MemberFunctionSlot<LvAdapterHandle, EventArgs> m_evtSlot_ItemClick;
- MemberFunctionSlot<LvAdapterHandle, EventArgs> m_evtSlot_ItemDbClick;
- MemberFunctionSlot<LvAdapterHandle, EventArgs> m_evtSlot_ItemRClick;
- MemberFunctionSlot<LvAdapterHandle, EventArgs> m_evtSlot_ItemHover;
- MemberFunctionSlot<LvAdapterHandle, EventArgs> m_evtSlot_ItemLeave;
- };
|