… | |
… | |
110 | $self->{view1}->signal_connect(row_activated => sub { |
110 | $self->{view1}->signal_connect(row_activated => sub { |
111 | my ($widget, $path, $column) = @_; |
111 | my ($widget, $path, $column) = @_; |
112 | my $game = $self->{model1}->get ($self->{model1}->get_iter ($path), 0); |
112 | my $game = $self->{model1}->get ($self->{model1}->get_iter ($path), 0); |
113 | ($self->{game}{$game->{channel}} ||= new game %$game, conn => $self->{conn}) |
113 | ($self->{game}{$game->{channel}} ||= new game %$game, conn => $self->{conn}) |
114 | ->join; |
114 | ->join; |
|
|
115 | 1; |
115 | }); |
116 | }); |
116 | |
117 | |
117 | $self->{view2}->signal_connect(row_activated => sub { |
118 | $self->{view2}->signal_connect(row_activated => sub { |
118 | my ($widget, $path, $column) = @_; |
119 | my ($widget, $path, $column) = @_; |
119 | my $game = $self->{model2}->get ($self->{model2}->get_iter ($path), 0); |
120 | my $game = $self->{model2}->get ($self->{model2}->get_iter ($path), 0); |
120 | ($self->{game}{$game->{channel}} ||= new game %$game, conn => $self->{conn}) |
121 | ($self->{game}{$game->{channel}} ||= new game %$game, conn => $self->{conn}) |
121 | ->join; |
122 | ->join; |
|
|
123 | 1; |
122 | }); |
124 | }); |
123 | |
125 | |
124 | $self; |
126 | $self; |
125 | } |
127 | } |
126 | |
128 | |
127 | sub update { |
129 | sub update { |
128 | my ($self, $room) = @_; |
130 | my ($self, $room, $add, $update, $remove) = @_; |
129 | |
131 | |
130 | $self->{games}{$room->{name}} = $room->{games}; |
132 | $self->{games}{$room->{name}} = $room->{games}; |
131 | |
133 | |
132 | $self->{event_update} ||= add Glib::Timeout 300, sub { |
|
|
133 | my $m1 = $self->{model1}; |
134 | my $m1 = $self->{model1}; |
134 | my $m2 = $self->{model2}; |
135 | my $m2 = $self->{model2}; |
135 | |
136 | |
136 | $m1->clear; |
137 | for (@$update, @$remove) { |
137 | $m2->clear; |
138 | $_->{model}->remove (delete $_->{iter}) if $_->{model}; |
|
|
139 | } |
138 | |
140 | |
139 | while (my ($room, $games) = each %{$self->{games}}) { |
141 | for (@$add, @$update) { |
140 | for (values %$games) { |
|
|
141 | my $owner = $_->owner; |
142 | my $owner = $_->owner; |
142 | if (exists $_->{notes}) { |
143 | if (exists $_->{notes}) { |
143 | $m1->set ($m1->append, |
144 | $_->{model} = $m1; |
|
|
145 | $m1->set ($_->{iter} ||= $m1->append, |
144 | 0, $_, |
146 | 0, $_, |
145 | 1, $room, |
147 | 1, $room->{name}, |
146 | 2, $_->type, |
148 | 2, $_->type, |
147 | 3, $owner->{name}, |
149 | 3, $owner->{name}, |
148 | 4, $owner->rank_string, |
150 | 4, $owner->rank_string, |
149 | 5, $owner->rank, |
151 | 5, $owner->rank, |
150 | 6, "info", |
152 | 6, "info", |
151 | 7, $_->{notes}, |
153 | 7, $_->{notes}, |
152 | ); |
154 | ); |
153 | } else { |
155 | } else { |
154 | $m2->set ($m2->append, |
156 | $_->{model} = $m2; |
|
|
157 | $m2->set ($_->{iter} ||= $m2->append, |
155 | 0, $_, |
158 | 0, $_, |
156 | 1, $room, |
159 | 1, $room->{name}, |
157 | 2, $_->type, |
160 | 2, $_->type, |
158 | 3, $owner->{name}, |
161 | 3, $owner->{name}, |
159 | 4, $owner->rank_string, |
162 | 4, $owner->rank_string, |
160 | 5, $owner->rank, |
163 | 5, $owner->rank, |
161 | 6, $_->opponent_string, |
164 | 6, $_->opponent_string, |
162 | 7, $_->{user1}->rank_string, |
165 | 7, $_->{user1}->rank_string, |
163 | 8, $_->{user1}->rank, |
166 | 8, $_->{user1}->rank, |
164 | 9, $_->moves, |
167 | 9, $_->moves, |
165 | 10, $_->{observers}, |
168 | 10, $_->{observers}, |
166 | 11, "info", |
169 | 11, "info", |
167 | ); |
170 | ); |
168 | } |
|
|
169 | } |
|
|
170 | } |
171 | } |
171 | |
|
|
172 | delete $self->{event_update}; |
|
|
173 | 0; |
|
|
174 | }; |
172 | } |
175 | } |
173 | } |
176 | |
174 | |
177 | 1; |
175 | 1; |
178 | |
176 | |