mGNCS API Reference  v1.2.0
A new control set and a new framework for MiniGUI apps
mlist.h
Go to the documentation of this file.
1 
42 #ifdef _MGNCSCTRL_LIST
43 
44 #ifndef _MGUI_NCSCTRL_LIST_H
45 #define _MGUI_NCSCTRL_LIST_H
46 
47 
48 #ifdef __cplusplus
49 extern "C" {
50 #endif /* __cplusplus */
51 
61 #define NCSCTRL_LIST NCSCLASSNAME("list")
62 
63 typedef struct _mList mList;
64 typedef struct _mListClass mListClass;
65 typedef struct _mListRenderer mListRenderer;
66 
71 #define NCSS_LIST_LOOP (0x0001<<NCSS_ASTLST_SHIFT)
72 
77 #define NCSS_LIST_MULTIPLE (0x0002<<NCSS_ASTLST_SHIFT)
78 
83 #define NCSS_LIST_SHIFT (NCSS_ASTLST_SHIFT+2)
84 
85 #define mListHeader(clsName) \
86  mAbstractListHeader(clsName) \
87  list_t selList; \
88  mListLayout *layout; \
89  mNode *hiliteNode; \
90  Uint16 nodesHeight; \
91  Uint16 nodesWidth;
92 
109 struct _mList
110 {
111  mListHeader(mList)
112 };
113 
114 #define mListClassHeader(clsName, superCls) \
115  mAbstractListClassHeader(clsName, superCls) \
116  void (*resetContent)(clsName*); \
117  void (*removeAll)(clsName*); \
118  void (*enterSubList)(clsName*, mNode* selNode); \
119  void (*backUpList)(clsName*, mNode* selNode); \
120  BOOL (*setNodeDefSize)(clsName*, int defW,int defH);\
121  BOOL (*setLayout)(clsName*, mListLayout* layout, int defNodeW, int defNodeH); \
122  mListLayout* (*getLayout)(clsName*);
123 
155 struct _mListClass
156 {
157  mListClassHeader(mList, mAbstractList)
158 };
159 
160 #define mListRendererHeader(clsName, parentClass) \
161  mAbstractListRendererHeader(clsName, parentClass)
162 
168 struct _mListRenderer {
169  mListRendererHeader(mList, mAbstractList)
170 };
171 
172 
177 enum ncsListLayoutID
178 {
182  NCS_LIST_LLIST = 0,
183 
187  NCS_LIST_LICONV,
188 
189  NCS_LIST_LICONH,
190 
191  NCS_LIST_LCBOXH,
192 
193  NCS_LIST_LGROUP,
194 
195  NCS_LIST_LUSERDEFINED,
199  NCS_LIST_MAX,
200 };
201 
202 enum mListEvent
203 {
204  NCSE_LIST_FONTCHANGED = 100,
205  NCSE_LIST_SIZECHANGED,
206  NCSE_LIST_ROOTCHANGING, //new root
207  NCSE_LIST_ROOTCHANGED, //new root
208 };
209 
210 enum mListDirKeyFlags{
211  NCSF_LIST_UP = 0x01,
212  NCSF_LIST_DOWN = 0x02,
213  NCSF_LIST_LEFT = 0x04,
214  NCSF_LIST_RIGHT = 0x08,
215  NCSF_LIST_HOME = 0x10,
216  NCSF_LIST_END = 0x20,
217  NCSF_LIST_LOOP = 0x100,
218  NCSF_LIST_DIRMASK= 0xFF,
219 };
224 enum mListProp
225 {
229  NCSP_LIST_LAYOUT = NCSP_ASTLST_MAX + 1,
230 
234  NCSP_LIST_DEFNODEWIDTH,
235 
239  NCSP_LIST_DEFNODEHEIGHT,
240 
244  NCSP_LIST_MAX,
245 };
246 
251 enum mListNotify
252 {
257  NCSN_LIST_SELCHANGED = NCSN_ASTLST_MAX + 1,
258 
263  NCSN_LIST_ENTER,
264 
269  NCSN_LIST_BACKSPACE,
270 
275  NCSN_LIST_ENTERSUBLIST,
276 
281  NCSN_LIST_BACKUPLIST,
282 
283  NCSN_LIST_ROOTNODECHANGED,
287  NCSN_LIST_MAX,
288 };
289 
296 MGNCS_EXPORT extern mListClass g_stmListCls;
297 
302 MGNCS_EXPORT void mList_foreachNode(mList *list, void (*foreach)(mNode *node, void* param), void* param);
303 
306 #ifdef __cplusplus
307 }
308 #endif /* __cplusplus */
309 
310 #endif /* _MGUI_NCSCTRL_LIST_H */
311 #endif //_MGNCSCTRL_LIST
The structure of mNode. It is the basic class of all nodes occur within specific controls. For example, a list can contain it.
The structure of mAbstractList, which derived from mScrollWidget. It is the abstract superclass of al...