diff options
author | Stijn Buys <ingar@osirion.org> | 2013-03-10 14:04:08 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2013-03-10 14:04:08 +0000 |
commit | 57563d06e9947380a2cf4a7f97ca5835c4bd8b2b (patch) | |
tree | 1654f83f0a909ac05ab7f8e288055766403d186d /src/ui/listview.cc | |
parent | 025a4defa7cc1ad42c86fe9e1b49d1cb6fa45737 (diff) |
Improved ui::ListView::sort().
Diffstat (limited to 'src/ui/listview.cc')
-rw-r--r-- | src/ui/listview.cc | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/ui/listview.cc b/src/ui/listview.cc index ac2a4e8..0c01596 100644 --- a/src/ui/listview.cc +++ b/src/ui/listview.cc @@ -132,6 +132,11 @@ void ListView::clear() listview_scrollbar->set_value(listview_scroll); } +ListItem *ListView::add_item(const std::string & text) +{ + return new ui::ListItem(this, text.c_str()); +} + bool ListView::on_emit(Widget *sender, const Event event, void *data) { if (sender == listview_scrollbar) { @@ -173,7 +178,7 @@ bool ListView::on_keypress(const int key, const unsigned int modifier) return false; } -bool compare_listitems(const Widget *first, const Widget *second) +bool compare_listitems_ascending(const Widget *first, const Widget *second) { const ListItem *firstitem = dynamic_cast<const ListItem *>(first); const ListItem *seconditem = dynamic_cast<const ListItem *>(second); @@ -192,12 +197,8 @@ bool compare_listitems(const Widget *first, const Widget *second) } } -void ListView::sort() -{ - children().sort(compare_listitems); -} -bool compare_listitems_reverse(const Widget *first, const Widget *second) +bool compare_listitems_descending(const Widget *first, const Widget *second) { const ListItem *firstitem = dynamic_cast<const ListItem *>(first); const ListItem *seconditem = dynamic_cast<const ListItem *>(second); @@ -216,9 +217,13 @@ bool compare_listitems_reverse(const Widget *first, const Widget *second) } } -void ListView::sort_reverse() +void ListView::sort(bool ascending) { - children().sort(compare_listitems_reverse); + if (ascending) { + children().sort(compare_listitems_ascending); + } else { + children().sort(compare_listitems_descending); + } } } |