summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlivier Blin <oblin@mandriva.com>2008-11-13 19:06:30 +0000
committerOlivier Blin <oblin@mandriva.com>2008-11-13 19:06:30 +0000
commit520776ebb3dc137ea3a011a6996144520905f73f (patch)
tree352aa4e5c9ce621368d8bf7d13db607d98b9f46e
parent94f92c65c79efe6acbd4aa745487bdbcdf9f09d3 (diff)
downloaddrakx-net-520776ebb3dc137ea3a011a6996144520905f73f.tar
drakx-net-520776ebb3dc137ea3a011a6996144520905f73f.tar.gz
drakx-net-520776ebb3dc137ea3a011a6996144520905f73f.tar.bz2
drakx-net-520776ebb3dc137ea3a011a6996144520905f73f.tar.xz
drakx-net-520776ebb3dc137ea3a011a6996144520905f73f.zip
allow to sort and search in networks list (from Pascal Terjan, backport from trunk)
-rw-r--r--lib/network/connection_manager.pm29
1 files changed, 29 insertions, 0 deletions
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 {