#pragma once //#include "KUIControl.h" namespace { const char* c_lpStrListItemCtrName = "item_string"; const char* c_lpIconStrListItemCtrName = "item_icon_string"; const char* c_lpCommunityListItemCtrName = "item_community"; }; //-------------------------------------------------------------------------------------------------------------------------------------------- /** 리스트의 아이템으로 들어갈 컨트롤들의 집합은 생성할 시 KUIControlListItem을 상속받은 자식으로 생성해야하기 때문에 ★생성자는 protected★이며 KUIControlList에서 사용할때는 부모인 KUIControlListItem으로 통합관리 하기 때문에 KUIControlListItem을 상속받아서 만든 클래스의 접근 함수는 모두 private이다. */ //-------------------------------------------------------------------------------------------------------------------------------------------- //ListItem Info List class KUIControlListItem : public KUIControl { protected: KUIControlListItem():m_nDefaultGap(0), m_bCreate(false) {}; virtual ~KUIControlListItem() {}; public: struct Item { Item() : bAble(false), uiFlag(0) {} /// 2010.12.23 - prodongi Item(const char* lpName):bAble(true), uiFlag(0) {strCtrName=lpName;} virtual ~Item( ) { }; void SetAble(bool Able) { bAble = Able; } bool IsAble() { return bAble; } bool bAble; DWORD uiFlag; /// 2010.12.23 - prodongi std::string strCtrName; }; /** ItemCreate 함수는 public이지만 KUIControlList에서 Item을 생성할때말고는 절대 호출해서는 안된다. KUIControlList를 friend로 지정해서 사용하는 것이 더 좋을지도... 아이템을 관리할 가상의 베이스 컨트롤을 만드는 함수로 리스트에서는 이 함수에서 생성된 것을 기준으로 아이템을 관리하게 된다. */ bool ItemCreate( class KUIControlList* pParent, const char* lpClassName, const char* lpCtrID, KUIWndManager* wndManager ); /// 2011.07.11 wndManager 추가- prodongi int GetDefaultGap() { return m_nDefaultGap; } /// 아이템에 데이터를 쎄팅하는 함수 virtual void SetItem( Item* pItemData ) = 0; /// 리사이즈가 발생했을 때 아이템을 어떻게 처리할 것인지 처리하는 함수 virtual void ResizeListItemRect( KRect rt ) = 0; protected: void SetIconCtr( class KUIControlIconStatic* pIcon, const char* pAni ); void SetStaticCaption( class KUIControlStatic* pStatic, const char* lpCaption ); void CuttingText( class KUIControlStatic* pNameText, const char* lpCaption, std::string& rOutCutName ); protected: int m_nDefaultGap; bool m_bCreate; }; /// ListItem Info List class KUIControlStringItem : public KUIControlListItem { public: struct StrItem : KUIControlListItem::Item { StrItem(const char* lpCaption):Item(c_lpStrListItemCtrName), strCaption(lpCaption) {} std::string strCaption; }; KUIControlStringItem() { m_nDefaultGap = 30; }; virtual ~KUIControlStringItem() {}; private: virtual void _initControl(); virtual void SetItem( Item* pItemData ); virtual void ResizeListItemRect( KRect rt ); }; class KUIControlIconNStringItem : public KUIControlListItem { public: struct IconStrItem : KUIControlListItem::Item { IconStrItem(const char* lpAni, const char* lpCaption) :Item(c_lpIconStrListItemCtrName), strIconAni(lpAni), strCaption(lpCaption) {} std::string strIconAni; std::string strCaption; }; KUIControlIconNStringItem() { m_nDefaultGap = 30; }; virtual ~KUIControlIconNStringItem() {}; private: virtual void _initControl(); virtual void SetItem( Item* pItemData ); virtual void ResizeListItemRect( KRect rt ); }; class KUIControlCommunityItem : public KUIControlListItem { public: struct CommunityItem : KUIControlListItem::Item { CommunityItem( const char* lpOnline, const char* lpJopID, const char* lpLV, const char* lpName) :Item(c_lpCommunityListItemCtrName), strOnlineIcon(lpOnline), strJopIcon(lpJopID), strLV(lpLV), strName(lpName) {} std::string strOnlineIcon; std::string strJopIcon; std::string strLV; std::string strName; }; KUIControlCommunityItem() { m_nDefaultGap = 30; }; virtual ~KUIControlCommunityItem() {}; private: virtual void _initControl(); virtual void SetItem( Item* pItemData ); virtual void ResizeListItemRect( KRect rt ); };