// listView.h -- ListView widget API // // Include this header in app/shell code that uses the ListView widget. // Column types (ListViewColT, ListViewAlignE, ListViewSortE) are // defined in dvxWgt.h so widget DXEs can reference them. #ifndef LISTVIEW_H #define LISTVIEW_H #include "../../core/dvxWgt.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); void (*addItem)(WidgetT *w, const char *text); void (*removeRow)(WidgetT *w, int32_t row); void (*clear)(WidgetT *w); const char *(*getCell)(const WidgetT *w, int32_t row, int32_t col); void (*setCell)(WidgetT *w, int32_t row, int32_t col, const char *text); int32_t (*getRowCount)(const WidgetT *w); } 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) #define wgtListViewAddItem(w, text) dvxListViewApi()->addItem(w, text) #define wgtListViewRemoveRow(w, row) dvxListViewApi()->removeRow(w, row) #define wgtListViewClear(w) dvxListViewApi()->clear(w) #define wgtListViewGetCell(w, row, col) dvxListViewApi()->getCell(w, row, col) #define wgtListViewSetCell(w, row, col, text) dvxListViewApi()->setCell(w, row, col, text) #define wgtListViewGetRowCount(w) dvxListViewApi()->getRowCount(w) #endif // LISTVIEW_H