// widgetListView.h -- ListView widget API // // Include this header in app/shell code that uses the ListView widget. // Column types (ListViewColT, ListViewAlignE, ListViewSortE) are // defined in dvxWidget.h so widget DXEs can reference them. #ifndef WIDGET_LISTVIEW_H #define WIDGET_LISTVIEW_H #include "../core/dvxWidget.h" typedef struct { WidgetT *(*create)(WidgetT *parent); void (*setColumns)(WidgetT *w, const ListViewColT *cols, int32_t count); void (*setData)(WidgetT *w, const char **cellData, int32_t rowCount); int32_t (*getSelected)(const WidgetT *w); void (*setSelected)(WidgetT *w, int32_t idx); void (*setSort)(WidgetT *w, int32_t col, ListViewSortE dir); void (*setHeaderClickCallback)(WidgetT *w, void (*cb)(WidgetT *w, int32_t col, ListViewSortE dir)); void (*setMultiSelect)(WidgetT *w, bool multi); bool (*isItemSelected)(const WidgetT *w, int32_t idx); void (*setItemSelected)(WidgetT *w, int32_t idx, bool selected); void (*selectAll)(WidgetT *w); void (*clearSelection)(WidgetT *w); void (*setReorderable)(WidgetT *w, bool reorderable); } ListViewApiT; static inline const ListViewApiT *dvxListViewApi(void) { static const ListViewApiT *sApi; if (!sApi) { sApi = (const ListViewApiT *)wgtGetApi("listview"); } return sApi; } #define wgtListView(parent) dvxListViewApi()->create(parent) #define wgtListViewSetColumns(w, cols, count) dvxListViewApi()->setColumns(w, cols, count) #define wgtListViewSetData(w, cellData, rowCount) dvxListViewApi()->setData(w, cellData, rowCount) #define wgtListViewGetSelected(w) dvxListViewApi()->getSelected(w) #define wgtListViewSetSelected(w, idx) dvxListViewApi()->setSelected(w, idx) #define wgtListViewSetSort(w, col, dir) dvxListViewApi()->setSort(w, col, dir) #define wgtListViewSetHeaderClickCallback(w, cb) dvxListViewApi()->setHeaderClickCallback(w, cb) #define wgtListViewSetMultiSelect(w, multi) dvxListViewApi()->setMultiSelect(w, multi) #define wgtListViewIsItemSelected(w, idx) dvxListViewApi()->isItemSelected(w, idx) #define wgtListViewSetItemSelected(w, idx, selected) dvxListViewApi()->setItemSelected(w, idx, selected) #define wgtListViewSelectAll(w) dvxListViewApi()->selectAll(w) #define wgtListViewClearSelection(w) dvxListViewApi()->clearSelection(w) #define wgtListViewSetReorderable(w, reorderable) dvxListViewApi()->setReorderable(w, reorderable) #endif // WIDGET_LISTVIEW_H