DlangUI

Cross Platform GUI for D programming language

Home API Docs Screenshots Download .zip View on GitHub

dlangui.widgets.lists

This module contains list widgets implementation.

Similar to lists implementation in Android UI API.

Synopsis:
import dlangui.widgets.lists;



License:
Boost License 1.0

Authors:
Vadim Lopatin, coolreader.org@gmail.com

interface ListAdapter;
list widget adapter provides items for list widgets

abstract @property int itemCount();
returns number of widgets in list

abstract Widget itemWidget(int index);
return list item widget by item index

abstract uint itemState(int index);
return list item's state flags

abstract uint setItemState(int index, uint flags);
set one or more list item's state flags, returns updated state

abstract uint resetItemState(int index, uint flags);
reset one or more list item's state flags, returns updated state

class WidgetListAdapter: dlangui.widgets.lists.ListAdapter;
List adapter for simple list of widget instances

@property ref WidgetList widgets();
list of widgets to display

@property int itemCount();
returns number of widgets in list

Widget itemWidget(int index);
return list item widget by item index

uint itemState(int index);
return list item's state flags

uint setItemState(int index, uint flags);
set one or more list item's state flags, returns updated state

uint resetItemState(int index, uint flags);
reset one or more list item's state flags, returns updated state

class StringListAdapter: dlangui.widgets.lists.ListAdapter;
List adapter providing strings only.

this();
create empty string list adapter.

this(string[] items);
Init with array of string resource IDs.

this(dstring[] items);
Init with array of unicode strings.

@property ref UIStringCollection items();
Access to items collection.

@property int itemCount();
returns number of widgets in list

Widget itemWidget(int index);
return list item widget by item index

uint itemState(int index);
return list item's state flags

uint setItemState(int index, uint flags);
set one or more list item's state flags, returns updated state

uint resetItemState(int index, uint flags);
reset one or more list item's state flags, returns updated state

interface OnItemSelectedHandler;
interface - slot for onItemSelectedListener

interface OnItemClickHandler;
interface - slot for onItemClickListener

class ListWidget: dlangui.widgets.widget.WidgetGroup, dlangui.widgets.controls.OnScrollHandler;
List widget - shows content as hori

Signal!OnItemSelectedHandler onItemSelectedListener;
Handle selection change.

Signal!OnItemSelectedHandler onItemClickListener;
Handle item click.

@property Orientation orientation();
returns linear layout orientation (Vertical, Horizontal)

@property ListWidget orientation(Orientation value);
sets linear layout orientation

protected int _firstVisibleItem;
first visible item index

protected int _scrollPosition;
scroll position - offset of scroll area

protected int _maxScrollPosition;
maximum scroll position

protected Rect _clientRc;
client area rectangle (counting padding, margins, and scrollbar)

protected int _totalSize;
total height of all items for Vertical orientation, or width for Horizontal

protected int _hoverItemIndex;
item with Hover state, -1 if no such item

protected int _selectedItemIndex;
item with Selected state, -1 if no such item

protected bool _selectOnHover;
when true, mouse hover selects underlying item

@property bool selectOnHover();
when true, mouse hover selects underlying item

@property ListWidget selectOnHover(bool select);
when true, mouse hover selects underlying item

protected bool _clickOnButtonDown;
if true, generate itemClicked on mouse down instead mouse up event

Rect itemRectNoScroll(int index);
returns rectangle for item (not scrolled, first item starts at 0,0)

Rect itemRect(int index);
returns rectangle for item (scrolled)

int itemByPosition(int pos);
returns item index by 0-based offset from top/left of list content

protected bool _ownAdapter;
when true, need to destroy adapter on list destroy

@property ListAdapter adapter();
get adapter

@property ListWidget adapter(ListAdapter adapter);
set adapter

@property ListWidget ownAdapter(ListAdapter adapter);
set adapter, which will be owned by list (destroy will be called for adapter on widget destroy)

@property int itemCount();
returns number of widgets in list

Widget itemWidget(int index);
return list item widget by item index

bool itemEnabled(int index);
returns true if item with corresponding index is enabled

protected void selectionChanged(int index, int previouslySelectedItem = -1);
override to handle change of selection

protected void itemClicked(int index);
override to handle mouse up on item

protected void handleFocusChange(bool focused);
override to handle focus changes

void makeSelectionVisible();
ensure selected item is visible (scroll if necessary)

void makeItemVisible(int itemIndex);
ensure item is visible

bool moveSelection(int direction, bool wrapAround = true);
move selection

@property int selectedItemIndex();
Selected item index.

bool onScrollEvent(AbstractSlider source, ScrollEvent event);
handle scroll event

void measure(int parentWidth, int parentHeight);
Measure widget according to desired width and height constraints. (Step 1 of two phase layout).

void layout(Rect rc);
Set widget rectangle to specified value and layout widget contents. (Step 2 of two phase layout).

void onDraw(DrawBuf buf);
Draw widget at its position to buffer

bool onKeyEvent(KeyEvent event);
list navigation using keys

bool onMouseEvent(MouseEvent event);
process mouse event; return true if event is processed by widget.