ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/kgsueme/gamelist.pl
(Generate patch)

Comparing kgsueme/kgsueme/gamelist.pl (file contents):
Revision 1.5 by pcg, Sat May 31 16:48:56 2003 UTC vs.
Revision 1.6 by pcg, Sun Jun 1 04:52:16 2003 UTC

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
127sub update { 129sub 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
1771; 1751;
178 176

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines