1 | package roomlist; |
1 | package roomlist; |
|
|
2 | |
|
|
3 | use KGS::Constants; |
2 | |
4 | |
3 | use base KGS::Listener::Roomlist; |
5 | use base KGS::Listener::Roomlist; |
4 | use base gtk::widget; |
6 | use base gtk::widget; |
5 | |
7 | |
6 | sub new { |
8 | sub new { |
… | |
… | |
19 | |
21 | |
20 | $vbox->pack_start((my $sw = new Gtk2::ScrolledWindow), 1, 1, 0); |
22 | $vbox->pack_start((my $sw = new Gtk2::ScrolledWindow), 1, 1, 0); |
21 | $sw->set_policy("automatic", "always"); |
23 | $sw->set_policy("automatic", "always"); |
22 | |
24 | |
23 | $self->{roomlist} = new Gtk2::ListStore Glib::Scalar, Glib::String, Glib::String, Glib::Int, Glib::Int, Glib::Int, Glib::Int; |
25 | $self->{roomlist} = new Gtk2::ListStore Glib::Scalar, Glib::String, Glib::String, Glib::Int, Glib::Int, Glib::Int, Glib::Int; |
|
|
26 | gtk::state $self->{roomlist}, "roomlist::model", undef, modelsortorder => [2, 'descending']; |
24 | |
27 | |
25 | $sw->add(my $treeview = new Gtk2::TreeView $self->{roomlist}); |
28 | $sw->add(my $treeview = new Gtk2::TreeView $self->{roomlist}); |
26 | |
29 | |
27 | $treeview->set_search_column(1); |
30 | $treeview->set_search_column (1); |
28 | |
31 | |
29 | my $idx = 1; |
32 | my $idx = 1; |
30 | for ("Group", "Room Name", "Users", "Games", "Flags", "Channel") { |
33 | for ("Group", "Room Name", "Us", "Gs", "Fs", "Ch") { |
31 | $renderer = $_ eq "Room Name" ? $gtk::text_renderer : $gtk::int_renderer; |
34 | $renderer = $idx < 3 ? $gtk::text_renderer : $gtk::int_renderer; |
32 | |
35 | |
33 | # Gtk2-bug, need to keep these objects around |
36 | # Gtk2-bug, need to keep these objects around |
34 | my $column = $self->{rlcolumns}[$idx] = Gtk2::TreeViewColumn->new_with_attributes ($_, $renderer, text => $idx); |
37 | my $column = $self->{rlcolumns}[$idx] = Gtk2::TreeViewColumn->new_with_attributes ($_, $renderer, text => $idx); |
35 | |
38 | |
36 | $column->set_sort_column_id($idx); |
39 | $column->set_sort_column_id($idx); |
37 | $column->set(resizable => 1); |
40 | $column->set(resizable => 1); |
38 | $column->set(sizing => 'fixed'); |
41 | $column->set(sizing => 'fixed'); |
39 | $column->set(clickable => 1); |
42 | $column->set(clickable => 1); |
40 | gtk::state $column, "roomlist::model::$_", undef, column_size => [0, 60, 450, 60, 60, 60, 60]->[$idx]; |
43 | gtk::state $column, "roomlist::model::$_", undef, |
|
|
44 | column_size => [0, 60, 450, 60, 60, 60, 60]->[$idx]; |
41 | $treeview->append_column ($column); |
45 | $treeview->append_column ($column); |
42 | |
46 | |
43 | $idx++; |
47 | $idx++; |
44 | } |
48 | } |
45 | |
49 | |
… | |
… | |
75 | $l->clear; |
79 | $l->clear; |
76 | |
80 | |
77 | my $row = 0; |
81 | my $row = 0; |
78 | for (values %{$self->{rooms}}) { |
82 | for (values %{$self->{rooms}}) { |
79 | $l->set ($l->append, |
83 | $l->set ($l->append, |
80 | 0, $_, |
84 | 0 => $_, |
81 | 1, $_->{group}, |
85 | 1 => ($room_group{$_->{group}} || $_->{group}), |
82 | 2, $_->{name}, |
86 | 2 => $_->{name}, |
83 | 3, $_->{users}, |
87 | 3 => $_->{users}, |
84 | 4, $_->{games}, |
88 | 4 => $_->{games}, |
85 | 5, $_->{flags}, |
89 | 5 => $_->{flags}, |
86 | 6, $_->{channel}); |
90 | 6 => $_->{channel}); |
87 | } |
91 | } |
88 | |
92 | |
89 | delete $self->{event_update}; |
93 | delete $self->{event_update}; |
90 | 0; |
94 | 0; |
91 | }; |
95 | }; |