listpane.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. #ifndef _listpane_h_
  2. #define _listpane_h_
  3. typedef TEvent<ItemID> IItemEvent;
  4. //////////////////////////////////////////////////////////////////////////////
  5. //
  6. // Item Painter
  7. //
  8. //////////////////////////////////////////////////////////////////////////////
  9. class ItemPainter : public IObject {
  10. public:
  11. virtual int GetXSize() = 0;
  12. virtual int GetYSize() = 0;
  13. virtual void Paint(ItemID pitem, Surface* psurface, bool bSelected, bool bFocus) = 0;
  14. };
  15. //////////////////////////////////////////////////////////////////////////////
  16. //
  17. // List Pane
  18. //
  19. //////////////////////////////////////////////////////////////////////////////
  20. class ListPane :
  21. public Pane,
  22. public IKeyboardInput
  23. {
  24. public:
  25. virtual void SetList(List* plist) = 0;
  26. virtual void SetItemPainter(ItemPainter* ppainter) = 0;
  27. virtual void SetSelection(ItemID pitem) = 0;
  28. virtual ItemID GetSelection() = 0;
  29. virtual int GetScrollPos() = 0;
  30. virtual void ScrollToItem(ItemID pitem) = 0;
  31. virtual void ForceRefresh() = 0;
  32. virtual void SetScrollPos(int pos) = 0;
  33. virtual ScrollPane * GetScrollPane() = 0;
  34. virtual IItemEvent::Source* GetSelectionEventSource() = 0;
  35. virtual IEventSource* GetSingleClickEventSource() = 0;
  36. virtual IEventSource* GetDoubleClickEventSource() = 0;
  37. };
  38. TRef<ListPane> CreateListPane(
  39. const WinPoint& sizeMin,
  40. List* plist,
  41. ItemPainter* ppainter,
  42. ScrollPane* pscroll,
  43. bool bHorizontal
  44. );
  45. //////////////////////////////////////////////////////////////////////////////
  46. //
  47. // StringList
  48. //
  49. //////////////////////////////////////////////////////////////////////////////
  50. class StringList :
  51. public List,
  52. public ItemPainter
  53. {
  54. public:
  55. virtual void AddItem(const ZString& str) = 0;
  56. virtual void SetEmpty() = 0;
  57. };
  58. TRef<StringList> CreateStringList(
  59. IEngineFont* pfont,
  60. const Color& color,
  61. const Color& colorSelected,
  62. int xsize
  63. );
  64. //////////////////////////////////////////////////////////////////////////////
  65. //
  66. // StringListItem
  67. //
  68. //////////////////////////////////////////////////////////////////////////////
  69. class StringListItem : public IObject {
  70. private:
  71. TRef<StringListItem> m_pnext;
  72. ZString m_str;
  73. public:
  74. StringListItem(const ZString& str, StringListItem* pnext) :
  75. m_str(str),
  76. m_pnext(pnext)
  77. {
  78. }
  79. StringListItem* GetNext()
  80. {
  81. return m_pnext;
  82. }
  83. const ZString& GetString()
  84. {
  85. return m_str;
  86. }
  87. };
  88. //////////////////////////////////////////////////////////////////////////////
  89. //
  90. // StringListPane
  91. //
  92. //////////////////////////////////////////////////////////////////////////////
  93. class StringListPane :
  94. public ListPane
  95. {
  96. public:
  97. virtual TRef<StringList> GetStringList() = 0;
  98. };
  99. TRef<StringListPane> CreateStringListPane(
  100. const WinPoint& sizeMin,
  101. List* plist,
  102. ItemPainter* ppainter,
  103. ScrollPane* pscroll,
  104. bool bHorizontal,
  105. IEngineFont* pfont,
  106. const Color& color,
  107. const Color& colorSelected
  108. );
  109. #endif