ControlFactory.cpp 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #include "StdAfx.h"
  2. #include "ControlFactory.h"
  3. namespace DuiLib
  4. {
  5. CControlFactory::CControlFactory()
  6. {
  7. INNER_REGISTER_DUICONTROL(CControlUI);
  8. INNER_REGISTER_DUICONTROL(CContainerUI);
  9. INNER_REGISTER_DUICONTROL(CButtonUI);
  10. INNER_REGISTER_DUICONTROL(CComboUI);
  11. INNER_REGISTER_DUICONTROL(CComboBoxUI);
  12. INNER_REGISTER_DUICONTROL(CDateTimeUI);
  13. INNER_REGISTER_DUICONTROL(CEditUI);
  14. INNER_REGISTER_DUICONTROL(CActiveXUI);
  15. INNER_REGISTER_DUICONTROL(CFlashUI);
  16. INNER_REGISTER_DUICONTROL(CGifAnimUI);
  17. #ifdef USE_XIMAGE_EFFECT
  18. INNER_REGISTER_DUICONTROL(CGifAnimExUI);
  19. #endif
  20. INNER_REGISTER_DUICONTROL(CGroupBoxUI);
  21. INNER_REGISTER_DUICONTROL(CIPAddressUI);
  22. INNER_REGISTER_DUICONTROL(CIPAddressExUI);
  23. INNER_REGISTER_DUICONTROL(CLabelUI);
  24. INNER_REGISTER_DUICONTROL(CListUI);
  25. INNER_REGISTER_DUICONTROL(CListHeaderUI);
  26. INNER_REGISTER_DUICONTROL(CListHeaderItemUI);
  27. INNER_REGISTER_DUICONTROL(CListLabelElementUI);
  28. INNER_REGISTER_DUICONTROL(CListTextElementUI);
  29. INNER_REGISTER_DUICONTROL(CListContainerElementUI);
  30. INNER_REGISTER_DUICONTROL(CMenuUI);
  31. INNER_REGISTER_DUICONTROL(CMenuElementUI);
  32. INNER_REGISTER_DUICONTROL(COptionUI);
  33. INNER_REGISTER_DUICONTROL(CCheckBoxUI);
  34. INNER_REGISTER_DUICONTROL(CProgressUI);
  35. INNER_REGISTER_DUICONTROL(CRichEditUI);
  36. INNER_REGISTER_DUICONTROL(CScrollBarUI);
  37. INNER_REGISTER_DUICONTROL(CSliderUI);
  38. INNER_REGISTER_DUICONTROL(CTextUI);
  39. INNER_REGISTER_DUICONTROL(CTreeNodeUI);
  40. INNER_REGISTER_DUICONTROL(CTreeViewUI);
  41. INNER_REGISTER_DUICONTROL(CWebBrowserUI);
  42. INNER_REGISTER_DUICONTROL(CAnimationTabLayoutUI);
  43. INNER_REGISTER_DUICONTROL(CChildLayoutUI);
  44. INNER_REGISTER_DUICONTROL(CHorizontalLayoutUI);
  45. INNER_REGISTER_DUICONTROL(CTabLayoutUI);
  46. INNER_REGISTER_DUICONTROL(CTileLayoutUI);
  47. INNER_REGISTER_DUICONTROL(CVerticalLayoutUI);
  48. INNER_REGISTER_DUICONTROL(CRollTextUI);
  49. INNER_REGISTER_DUICONTROL(CColorPaletteUI);
  50. INNER_REGISTER_DUICONTROL(CListExUI);
  51. INNER_REGISTER_DUICONTROL(CListContainerHeaderItemUI);
  52. INNER_REGISTER_DUICONTROL(CListTextExtElementUI);
  53. INNER_REGISTER_DUICONTROL(CHotKeyUI);
  54. INNER_REGISTER_DUICONTROL(CFadeButtonUI);
  55. INNER_REGISTER_DUICONTROL(CRingUI);
  56. INNER_REGISTER_DUICONTROL(CLoadingUI);
  57. INNER_REGISTER_DUICONTROL(CPageControlUI);
  58. INNER_REGISTER_DUICONTROL_EX(DUI_CTR_BOX, CContainerUI);
  59. INNER_REGISTER_DUICONTROL_EX(DUI_CTR_HBOX, CHorizontalLayoutUI);
  60. INNER_REGISTER_DUICONTROL_EX(DUI_CTR_VBOX, CVerticalLayoutUI);
  61. INNER_REGISTER_DUICONTROL_EX(DUI_CTR_TAB_BOX, CTabLayoutUI);
  62. INNER_REGISTER_DUICONTROL_EX(DUI_CTR_TILE_BOX, CTileLayoutUI);
  63. INNER_REGISTER_DUICONTROL_EX(DUI_CTR_CHILD_BOX, CChildLayoutUI);
  64. }
  65. CControlFactory::~CControlFactory()
  66. {
  67. }
  68. CControlUI* CControlFactory::CreateControl(CDuiString strClassName)
  69. {
  70. strClassName.MakeLower();
  71. MAP_DUI_CTRATECLASS::iterator iter = m_mapControl.find(strClassName);
  72. if ( iter == m_mapControl.end()) {
  73. return NULL;
  74. }
  75. else {
  76. return (CControlUI*) (iter->second());
  77. }
  78. }
  79. void CControlFactory::RegistControl(CDuiString strClassName, CreateClass pFunc)
  80. {
  81. strClassName.MakeLower();
  82. m_mapControl.insert(MAP_DUI_CTRATECLASS::value_type(strClassName, pFunc));
  83. }
  84. CControlFactory* CControlFactory::GetInstance()
  85. {
  86. static CControlFactory* pInstance = new CControlFactory;
  87. return pInstance;
  88. }
  89. void CControlFactory::Release()
  90. {
  91. delete this;
  92. }
  93. }