mGNCS API Reference  v1.5.0
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 */
HITEM
GHANDLE HITEM
The handle of item widget.
Definition: mitem.h:75
NCSP_ITMMNG_MAX
@ NCSP_ITMMNG_MAX
Definition: mitem_manager.h:452
g_stmItemManagerCls
MGNCS_EXPORT mItemManagerClass g_stmItemManagerCls
The instance of mItemManagerClass.
mItemManagerClass
The virtual function table of mItemManager, which derived from mItemClass.
NCS_CB_CMPITEM
int(* NCS_CB_CMPITEM)(mItemManager *manager, HITEM hItem1, HITEM hItem2)
The callback of item compare function.
Definition: mitem_manager.h:74
NCSP_ITMMNG_TOTALHEIGHT
@ NCSP_ITMMNG_TOTALHEIGHT
Definition: mitem_manager.h:447
mItemManager
The structure of mItemManager control, which derived from mItem. It is the abstract superclass of all...
mItemManagerProp
mItemManagerProp
The properties id of mItemManager.
Definition: mitem_manager.h:432
NCSP_ITEM_FLAGS
@ NCSP_ITEM_FLAGS
Definition: mitem.h:293
NCSP_ITMMNG_ITEMCOUNT
@ NCSP_ITMMNG_ITEMCOUNT
Definition: mitem_manager.h:442
NCSP_ITMMNG_FLAGS
@ NCSP_ITMMNG_FLAGS
Definition: mitem_manager.h:437
mItem
The structure of mItem. It is the abstract superclass of all items occur within specific controls....
NCSP_ITEM_MAX
@ NCSP_ITEM_MAX
Definition: mitem.h:298