====== Picker ====== **//Inherited from//** NULL **//Inherited by//** [[class:application:prepicker|PrePicker]] **//Friend class//** NULL **//Description//** Picker负责管理被用户选择的对象,这些对象在Picker中以UniqueEntity的形式存在,它包括对象的类型,身份ID以及父对象ID等主要信息,对象的类型在后续定制开发过程中按照一定的规则可进行扩展和补充。K2中有大量的类本身拥有不同的目标对象,如LBC/Metric等等,Picker可以通过bindContainer将类的目标与Picker绑定起来。[[class:ui::pickcontainer|PickContainer]]是Picker面向用户的UI视图。 **//Members//** * PickingItemHash * [[picker#m_ppickingitemhash|m_pPickingItemHash]] * LinkList * [[picker#m_ppicklist|m_pPickList]] * LinkList * [[picker#m_pfragmentlist|m_pFragmentList]] * MemPool * [[picker#m_pitempool|m_pItemPool]] * int [[picker#m_iitemcount[uetag_type_count]|m_iItemCount[UETag_Type_Count]]] **//Public interface//** * [[picker#picker1|Picker]](MemPool * pItemPool,MemPool * pHashPool) * UniqueEntity * [[picker#insertitem|insertItem]](ModelTypeID mt, UniqueEntityTagID t, ulong id) * UniqueEntity * [[picker#getlastitem|getLastItem]]() * void [[picker#removeitem|removeItem]](ModelTypeID mt, UniqueEntityTagID t, ulong id) * int [[picker#getitemcount|getItemCount]](UniqueEntityTagID t = UETag_None) * void [[picker#clear|clear]]() * bool [[picker#isitempicked|isItemPicked]](ModelTypeID mt, UniqueEntityTagID t, ulong id) * void [[picker#binditemiterator|bindItemIterator]](Iterator * iter) * void [[picker#setpickingrule|setPickingRule]](UniqueEntityTagID t,int count) * virtual void [[picker#infoitempicked|infoItemPicked]](IDocument * pDoc,UniqueEntity * ue) * int [[picker#getfragmentitemcount|getFragmentItemCount]]() * void [[picker#clearfragment|clearFragment]]() * void [[picker#bindfragmentiterator|bindFragmentIterator]](Iterator * iter) * LinkList * [[picker#getfragmentlist|getFragmentList]]() * virtual void [[picker#bindcontainer|bindContainer]](TreeItem * pContainer,bool bUpdateContainer = false) ---- {{anchor:m_ppickingitemhash}} **PickingItemHash * m_pPickingItemHash** 被管理的对象Hash,对象以UniqueEntity形式保持 {{anchor:m_ppicklist}} **LinkList * m_pPickList** 被管理的对象list,新加入的对象都放在该对象末尾,以记录对象被选择的顺序 {{anchor:m_pfragmentlist}} **LinkList * m_pFragmentList** 碎片对象list,碎片具体的对象取决于实际需要,比如前处理中某些内部体单元等 {{anchor:m_pitempool}} **MemPool * m_pItemPool** 内存池 {{anchor:m_iitemcount[uetag_type_count]}} **int m_iItemCount[UETag_Type_Count]** 记录每种对象的个数 ---- {{anchor:picker1}} **Picker(MemPool * pItemPool,MemPool * pHashPool)** *function: 构造Picker *parameters: - [i]MemPool * pItemPool: - [i]MemPool * pHashPool: *return value: {{anchor:insertitem}} **UniqueEntity * insertItem(ModelTypeID mt, UniqueEntityTagID t, ulong id)** *function: *parameters: - [i]ModelTypeID mt: - [i] UniqueEntityTagID t: - [i] ulong id: *return value: {{anchor:getlastitem}} **UniqueEntity * getLastItem()** *function: *parameters: NULL *return value: {{anchor:removeitem}} **void removeItem(ModelTypeID mt, UniqueEntityTagID t, ulong id)** *function: *parameters: - [i]ModelTypeID mt: - [i] UniqueEntityTagID t: - [i] ulong id: *return value: {{anchor:getitemcount}} **int getItemCount(UniqueEntityTagID t = UETag_None)** *function: *parameters: - [i]UniqueEntityTagID t = UETag_None: *return value: {{anchor:clear}} **void clear()** *function: *parameters: NULL *return value: {{anchor:isitempicked}} **bool isItemPicked(ModelTypeID mt, UniqueEntityTagID t, ulong id)** *function: *parameters: - [i]ModelTypeID mt: - [i] UniqueEntityTagID t: - [i] ulong id: *return value: {{anchor:binditemiterator}} **void bindItemIterator(Iterator * iter)** *function: *parameters: - [i]Iterator * iter: *return value: {{anchor:setpickingrule}} **void setPickingRule(UniqueEntityTagID t,int count)** *function: *parameters: - [i]UniqueEntityTagID t: - [i]int count: *return value: {{anchor:infoitempicked}} **virtual void infoItemPicked(IDocument * pDoc,UniqueEntity * ue)** *function: *parameters: - [i]IDocument * pDoc: - [i]UniqueEntity * ue: *return value: {{anchor:getfragmentitemcount}} **int getFragmentItemCount()** *function: *parameters: NULL *return value: {{anchor:clearfragment}} **void clearFragment()** *function: *parameters: NULL *return value: {{anchor:bindfragmentiterator}} **void bindFragmentIterator(Iterator * iter)** *function: *parameters: - [i]Iterator * iter: *return value: {{anchor:getfragmentlist}} **LinkList * getFragmentList()** *function: *parameters: NULL *return value: {{anchor:bindcontainer}} **virtual void bindContainer(TreeItem * pContainer,bool bUpdateContainer = false)** *function: *parameters: - [i]TreeItem * pContainer: - [i]bool bUpdateContainer = false: *return value: