libcdos-fw
CFListWidget.h
浏览该文件的文档.
1 // Copyright 2017, CDOS.
2 // All rights reserved.
3 //
4 // Author: CDOS Support Team <support_os@sari.ac.cn>
5 //
6 // A CFListWidget is a vertical container that contains CFListWidgetItem
7 // children.
8 
13 #ifndef __CF_LISTWIDGET_H__
14 #define __CF_LISTWIDGET_H__
15 #include <Gui/CFContainer.h>
16 #include "Gui/CFListWidgetItem.h"
17 #include "Gui/CFEnums.h"
18 #include <vector>
19 
31 CF_NAMESPACE_BEGIN
32 
33 class CFListWidgetPriv;
34 
35 class CFListWidget : public CFContainer {
36  friend class CFListWidgetPriv;
37 
38 public:
39  typedef sigc::slot<bool, CFListWidgetItem*> SlotFilter;
40  typedef sigc::slot<int, CFListWidgetItem*, CFListWidgetItem*> SlotSort;
41  typedef sigc::slot<void, CFListWidgetItem*, CFListWidgetItem*>
42  SlotUpdateHeader;
43  typedef sigc::slot<void, CFListWidgetItem*> SlotForeach;
44 
45  CFListWidget();
46 
47  virtual ~CFListWidget();
48 
49  void prepend(CFWidget& child);
50 
51  void insert(CFWidget& child, int position);
52 
53  void append(CFWidget& child);
54 
55  CFListWidgetItem* getSelectedItem();
56 
57  CFListWidgetItem* getItemAtIndex(int index);
58 
59  CFListWidgetItem* getItemAtY(int y);
60 
61  void selectItem(CFListWidgetItem& item);
62 
63  void unselectItem();
64 
65  void unselectItem(CFListWidgetItem* item);
66 
67  void setPlaceholder(CFWidget& placeholder);
68 
69  void unsetPlaceholder();
70 
71  // void setAdjustment();
72  // CFAdjustment getAdjustment();
73 
74  void selectedForeach(SlotForeach& slot);
75 
76  std::vector<CFListWidgetItem*> getSelectItems();
77 
78  void selectAll();
79 
80  void unselectAll();
81 
82  void setSelectionMode(CFSelectionMode mode);
83 
84  CFSelectionMode getSelectionMode();
85 
86  void setFilterFunc(SlotFilter& slot);
87 
88  void unsetFilterFunc();
89 
90  void setSortFunc(SlotSort& slot);
91 
92  void unsetSortFunc();
93 
94  void setHeaderFunc(SlotUpdateHeader& slot);
95 
96  void unsetHeaderFunc();
97 
98  void invalidateFilter();
99 
100  void invalidateSort();
101 
102  void setActivateOnSingleClick(bool single = true);
103 
104  bool getActiveOnSingleClick();
105 
106  void dragUnhighlightItem();
107 
108  void dragHighlightItem(CFListWidgetItem& item);
109 
110  // void bindModel(Glib::RefPtr<Gio::ListModel>& model,
111  // SlotCreateWidget<Glib::Object>& slot_create_widget);
112  //
113  // void bindListStore(Glib::RefPtr<Gio::ListStore<T_item>>& store,
114  // T_slot&& slot_create_widget);
115 
116  sigc::signal<void, CFListWidgetItem*> signalItemSelected();
117 
118  sigc::signal<void, CFListWidgetItem*> signalItemActivated();
119 
120  sigc::signal<void> signalSelectedItemsChanged();
121 
122 protected:
123  virtual void onRealObjectInit();
124 
125  virtual void onRealObjectFinalize();
126 
127  void onSelectedItemsChanged();
128 
129 private:
130  sigc::signal<void, CFListWidgetItem*> signalForeach();
131 
132  sigc::signal<bool, CFListWidgetItem*> signalFilter();
133 
134  sigc::signal<int, CFListWidgetItem*, CFListWidgetItem*> signalSort();
135 
136  sigc::signal<void, CFListWidgetItem*, CFListWidgetItem*>
137  signalUpdateHeader();
138 
139 private:
140  CFListWidgetPriv* m_priv;
141  sigc::signal<void, CFListWidgetItem*> m_itemSelectedSignal;
142  sigc::signal<void, CFListWidgetItem*> m_itemActivatedSignal;
143  sigc::signal<void> m_selectedItemsChangedSignal;
144 
145  sigc::signal<void, CFListWidgetItem*> m_foreachSignal;
146  sigc::signal<bool, CFListWidgetItem*> m_filterSignal;
147  sigc::signal<int, CFListWidgetItem*, CFListWidgetItem*> m_sortSignal;
148  sigc::signal<void, CFListWidgetItem*, CFListWidgetItem*>
149  m_updateHeaderSignal;
150 };
151 
152 CF_NAMESPACE_END
153 
154 #endif // __CFLIST_WIDGET_H__
Definition: CFContainer.h:10
列表容器添加项
Definition: CFListWidgetItem.h:24
所有可视控件的基类,抽象类。
Definition: CFWidget.h:25
Definition: CFListWidget.h:35
virtual void onRealObjectFinalize()
对象解除绑定前的回调函数。
列表容器添加项
CFSelectionMode
用于控制用户可以作出怎样的选择方式
Definition: CFEnums.h:171
virtual void onRealObjectInit()
对象绑定后进行初始化的回调函数。