From 520776ebb3dc137ea3a011a6996144520905f73f Mon Sep 17 00:00:00 2001 From: Olivier Blin Date: Thu, 13 Nov 2008 19:06:30 +0000 Subject: allow to sort and search in networks list (from Pascal Terjan, backport from trunk) --- lib/network/connection_manager.pm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/lib/network/connection_manager.pm b/lib/network/connection_manager.pm index 43df11f..0ac2cda 100644 --- a/lib/network/connection_manager.pm +++ b/lib/network/connection_manager.pm @@ -14,6 +14,7 @@ use network::network; use network::tools; use network::connection; use modules; +use locale; # for cmp sub create_pixbufs() { { @@ -275,6 +276,34 @@ sub create_networks_list { 1; }); $cmanager->{gui}{networks_list}->set_has_tooltip(1); + $cmanager->{gui}{networks_list}->get_column(1)->set_sort_column_id(1); + $cmanager->{gui}{networks_list}->get_model->set_sort_func (1, sub { + my ($sortable, $iter_left, $iter_right) = @_; + my $s1 = $sortable->get($iter_left, 2); + my $s2 = $sortable->get($iter_right, 2); + return $s1 cmp $s2; + }); + $cmanager->{gui}{networks_list}->get_column(2)->set_sort_column_id(2); + $cmanager->{gui}{networks_list}->get_model->set_sort_func (2, sub { + my ($sortable, $iter_left, $iter_right) = @_; + my $s1 = $cmanager->{connection}{networks}{$sortable->get($iter_left, 0)}->{signal_strength}; + my $s2 = $cmanager->{connection}{networks}{$sortable->get($iter_right, 0)}->{signal_strength}; + return $s2 <=> $s1; + }); + $cmanager->{gui}{networks_list}->get_column(3)->set_sort_column_id(3); + $cmanager->{gui}{networks_list}->get_model->set_sort_func (3, sub { + my ($sortable, $iter_left, $iter_right) = @_; + my $s1 = $cmanager->{connection}{networks}{$sortable->get($iter_left, 0)}->{flags}; + my $s2 = $cmanager->{connection}{networks}{$sortable->get($iter_right, 0)}->{flags}; + #FIXME Should define an explicit order OPEN < WEP < WPA + return $s1 cmp $s2; + }); + $cmanager->{gui}{networks_list}->set_enable_search(1); + $cmanager->{gui}{networks_list}->set_search_column(1); + $cmanager->{gui}{networks_list}->set_search_equal_func(sub { + my ($model, $column, $key, $iter, $data) = @_; + return $model->get($iter, 2) !~ /^\Q$key/i; + }); } sub select_network { -- cgit v1.2.1