This commit is contained in:
Vadim Lopatin 2016-02-05 10:23:57 +03:00
parent 81f068fc7b
commit 3bd735773f
3 changed files with 49 additions and 0 deletions

View File

@ -333,6 +333,16 @@ struct ObjectList(T) {
} }
_count = 0; _count = 0;
} }
/// Support foreach
int opApply(int delegate(ref T) callback) {
int res = 0;
for(int i = 0; i < _count; i++) {
res = callback(_list[i]);
if (res)
break;
}
return res;
}
~this() { ~this() {
clear(); clear();
} }

View File

@ -162,6 +162,16 @@ class ComboBoxBase : HorizontalLayout, OnClickHandler {
initialize(); initialize();
} }
override void onThemeChanged() {
super.onThemeChanged();
if (_body)
_body.onThemeChanged();
if (_adapter)
_adapter.onThemeChanged();
if (_button)
_button.onThemeChanged();
}
protected void initialize() { protected void initialize() {
_body = createSelectedItemWidget(); _body = createSelectedItemWidget();
_body.click = this; _body.click = this;

View File

@ -53,6 +53,9 @@ interface ListAdapter {
ListAdapter connect(OnAdapterChangeHandler handler); ListAdapter connect(OnAdapterChangeHandler handler);
/// disconnect adapter change handler /// disconnect adapter change handler
ListAdapter disconnect(OnAdapterChangeHandler handler); ListAdapter disconnect(OnAdapterChangeHandler handler);
/// called when theme is changed
void onThemeChanged();
} }
/// List adapter for simple list of widget instances /// List adapter for simple list of widget instances
@ -114,6 +117,10 @@ class ListAdapterBase : ListAdapter {
if (adapterChanged.assigned) if (adapterChanged.assigned)
adapterChanged.emit(this); adapterChanged.emit(this);
} }
/// called when theme is changed
void onThemeChanged() {
}
} }
/// List adapter for simple list of widget instances /// List adapter for simple list of widget instances
@ -159,6 +166,12 @@ class WidgetListAdapter : ListAdapterBase {
_widgets.clear(); _widgets.clear();
updateViews(); updateViews();
} }
/// called when theme is changed
override void onThemeChanged() {
super.onThemeChanged();
foreach(w; _widgets)
w.onThemeChanged();
}
~this() { ~this() {
//Log.d("Destroying WidgetListAdapter"); //Log.d("Destroying WidgetListAdapter");
} }
@ -422,6 +435,13 @@ class StringListAdapter : StringListAdapterBase {
return _widget; return _widget;
} }
/// called when theme is changed
override void onThemeChanged() {
super.onThemeChanged();
if (_widget)
_widget.onThemeChanged();
}
/// set one or more list item's state flags, returns updated state /// set one or more list item's state flags, returns updated state
override uint setItemState(int index, uint flags) { override uint setItemState(int index, uint flags) {
uint res = super.setItemState(index, flags); uint res = super.setItemState(index, flags);
@ -489,6 +509,13 @@ class IconStringListAdapter : StringListAdapterBase {
return _widget; return _widget;
} }
/// called when theme is changed
override void onThemeChanged() {
super.onThemeChanged();
if (_widget)
_widget.onThemeChanged();
}
/// set one or more list item's state flags, returns updated state /// set one or more list item's state flags, returns updated state
override uint setItemState(int index, uint flags) { override uint setItemState(int index, uint flags) {
uint res = super.setItemState(index, flags); uint res = super.setItemState(index, flags);
@ -894,6 +921,8 @@ class ListWidget : WidgetGroup, OnScrollHandler, OnAdapterChangeHandler {
Widget w = itemWidget(i); Widget w = itemWidget(i);
w.onThemeChanged(); w.onThemeChanged();
} }
if (_adapter)
_adapter.onThemeChanged();
} }
/// Measure widget according to desired width and height constraints. (Step 1 of two phase layout). /// Measure widget according to desired width and height constraints. (Step 1 of two phase layout).