Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2013-03-10 14:04:08 +0000
committerStijn Buys <ingar@osirion.org>2013-03-10 14:04:08 +0000
commit57563d06e9947380a2cf4a7f97ca5835c4bd8b2b (patch)
tree1654f83f0a909ac05ab7f8e288055766403d186d /src/ui/listview.cc
parent025a4defa7cc1ad42c86fe9e1b49d1cb6fa45737 (diff)
Improved ui::ListView::sort().
Diffstat (limited to 'src/ui/listview.cc')
-rw-r--r--src/ui/listview.cc21
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);
+ }
}
}