47 lines
2.6 KiB
C
47 lines
2.6 KiB
C
// 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
|