mGNCS API Reference  v1.2.5
A new control set and a new framework for MiniGUI apps
mitem_manager.h
Go to the documentation of this file.
1 //
3 // IMPORTANT NOTICE
4 //
5 // The following open source license statement does not apply to any
6 // entity in the Exception List published by FMSoft.
7 //
8 // For more information, please visit:
9 //
10 // https://www.fmsoft.cn/exception-list
11 //
13 
54 #ifndef _MGUI_CTRL_ITEMMANAGER_H
55 #define _MGUI_CTRL_ITEMMANAGER_H
56 
57 #ifdef __cplusplus
58 extern "C" {
59 #endif /* __cplusplus */
60 
65 typedef struct _mItemManager mItemManager;
66 typedef struct _mItemManagerClass mItemManagerClass;
67 typedef struct _mItemManagerRenderer mItemManagerRenderer;
68 
74 typedef int (*NCS_CB_CMPITEM) (mItemManager *manager, HITEM hItem1, HITEM hItem2);
75 
86 typedef int (*NCS_CB_CMPSTR) (const char* s1, const char* s2, size_t n);
87 
92 #define NCSF_ITMMNG_AUTOSORT (0x01<<NCSF_ITEM_SHIFT)
93 
98 #define NCSF_ITMMNG_FROZEN (0x02<<NCSF_ITEM_SHIFT)
99 
104 #define NCSF_ITMMNG_SHIFT (NCSF_ITEM_SHIFT+2)
105 
106 
107 #define mItemManagerHeader(className) \
108  mItemHeader(className) \
109  NCS_CB_CMPITEM itemCmp; \
110  mWidget *obj; \
111  int count; \
112  int totalHeight; \
113  HITEM pItemHilighted; \
114  list_t queue; \
115  list_t selQueue; \
116  NCS_CB_CMPSTR strCmp;
117 
147 struct _mItemManager
148 {
149  mItemManagerHeader(mItemManager)
150 };
151 
152 #define mItemManagerClassHeader(clsName, superCls) \
153  mItemClassHeader(clsName, superCls) \
154  NCS_CB_CMPITEM (*setItemCmpFunc)(clsName*, NCS_CB_CMPITEM func); \
155  int (*moveItem)(clsName*, mItem *curItem, int count, mItem* prevItem); \
156  int (*insertItem)(clsName*, HITEM hItem, HITEM prev, HITEM next, int index, int *pos); \
157  HITEM (*createItem)(clsName*, HITEM prev, HITEM next, int index, int *pos); \
158  int (*inItem)(clsName*, int mouseX, int mouseY, HITEM *pRet, POINT *pt); \
159  NCS_CB_CMPSTR (*setStrCmpFunc)(clsName*, NCS_CB_CMPSTR func); \
160  NCS_CB_CMPSTR (*getStrCmpFunc)(clsName*); \
161  int (*getItemYPos)(clsName*, HITEM hItem); \
162  void (*setAutoSortItem) (clsName*, BOOL sort); \
163  int (*getTotalHeight)(clsName*); \
164  int (*adjustItemsHeight)(clsName*, int diff); \
165  BOOL (*freeze)(clsName*, BOOL lock); \
166  BOOL (*isFrozen)(clsName*); \
167  HITEM (*getFirstItem)(clsName*); \
168  list_t* (*getQueue)(clsName*); \
169  HITEM (*getListEntry)(list_t* entry); \
170  int (*isEmpty)(clsName*); \
171  int (*removeItem)(clsName*, HITEM hItem); \
172  int (*sortItems)(clsName*, NCS_CB_CMPITEM pfn); \
173  BOOL (*removeAll)(clsName*); \
174  int (*indexOf)(clsName*, HITEM hItem); \
175  int (*setHeight)(clsName*, HITEM hItem, int height); \
176  int (*getHeight)(clsName*, HITEM hItem); \
177  HITEM (*getItem)(clsName*, int index); \
178  HITEM (*getNext)(clsName*, HITEM hItem); \
179  HITEM (*getPrev)(clsName*, HITEM hItem); \
180  BOOL (*isSelected)(clsName*, HITEM hItem); \
181  BOOL (*isEnabled)(clsName*, HITEM hItem); \
182  BOOL (*enable)(clsName*, HITEM hItem, BOOL enable); \
183  void (*selectAll)(clsName*); \
184  void (*deselectAll)(clsName*); \
185  BOOL (*select)(clsName*, HITEM hItem, BOOL sel); \
186  HITEM (*hilight)(clsName*, HITEM hItem); \
187  HITEM (*getHilight)(clsName*); \
188  BOOL (*isHilight)(clsName*, HITEM hItem); \
189  int (*getItemCount)(clsName*); \
190  void (*setAddData)(clsName*, HITEM hItem, DWORD addData); \
191  void (*setImage)(clsName*, HITEM hItem, DWORD image); \
192  DWORD (*getAddData)(clsName*, HITEM hItem); \
193  DWORD (*getImage)(clsName*, HITEM hItem); \
194  void (*setFlags)(clsName*, HITEM hItem, DWORD flags); \
195  DWORD (*getFlags)(clsName*, HITEM hItem); \
196  BOOL (*setText)(clsName*, HITEM hItem, const char* text); \
197  const char* (*getText)(clsName*, HITEM hItem); \
198  int (*getTextLen)(clsName*, HITEM hItem); \
199  BOOL (*getSelection)(clsName*, HITEM *pRet, int count); \
200  int (*getSelectionCount)(clsName*);
201 
415 struct _mItemManagerClass
416 {
417  mItemManagerClassHeader(mItemManager, mItem)
418 };
419 
426 MGNCS_EXPORT extern mItemManagerClass g_stmItemManagerCls;
427 
433 {
438 
443 
448 
453 };
456 #ifdef __cplusplus
457 }
458 #endif /* __cplusplus */
459 
460 #endif /* _MGUI_CTRL_ITEMMANAGER_H */
MGNCS_EXPORT mItemManagerClass g_stmItemManagerCls
The instance of mItemManagerClass.
GHANDLE HITEM
The handle of item widget.
Definition: mitem.h:75
int(* NCS_CB_CMPSTR)(const char *s1, const char *s2, size_t n)
The Callback of general string compare function.
Definition: mitem_manager.h:86
mItemManagerProp
The properties id of mItemManager.
The structure of mItem. It is the abstract superclass of all items occur within specific controls...
The virtual function table of mItemManager, which derived from mItemClass.
int(* NCS_CB_CMPITEM)(mItemManager *manager, HITEM hItem1, HITEM hItem2)
The callback of item compare function.
Definition: mitem_manager.h:74
The structure of mItemManager control, which derived from mItem. It is the abstract superclass of all...