… | |
… | |
11 | our %channel_info; |
11 | our %channel_info; |
12 | |
12 | |
13 | sub add_channel_info { |
13 | sub add_channel_info { |
14 | my ($info) = @_; |
14 | my ($info) = @_; |
15 | } |
15 | } |
|
|
16 | |
|
|
17 | |
|
|
18 | sub clr_def($) { "<span foreground=\"#777777\">$_[0]</span>" } |
|
|
19 | sub clr_act($) { "<span foreground=\"#ffffff\">$_[0]</span>" } |
|
|
20 | sub clr_hlt($) { "<span foreground=\"#aaaaff\">$_[0]</span>" } |
|
|
21 | sub clr_hlt2($) { "<span foreground=\"#9999ff\">$_[0]</span>" } |
16 | |
22 | |
17 | sub new { |
23 | sub new { |
18 | my $class = shift; |
24 | my $class = shift; |
19 | |
25 | |
20 | my $self = $class->SUPER::new ( |
26 | my $self = $class->SUPER::new ( |
… | |
… | |
71 | |
77 | |
72 | $bb->add (my $vb = CFPlus::UI::Box->new); |
78 | $bb->add (my $vb = CFPlus::UI::Box->new); |
73 | $bb->connect (activate => sub { $self->unhighlight_channel ($id); 0 }); |
79 | $bb->connect (activate => sub { $self->unhighlight_channel ($id); 0 }); |
74 | $vb->add ( |
80 | $vb->add ( |
75 | my $b = CFPlus::UI::Label->new ( |
81 | my $b = CFPlus::UI::Label->new ( |
76 | expand => 1, markup => $chaninfo->{title}, valign => 0, align => 0 |
82 | expand => 1, markup => clr_def ($chaninfo->{title}), valign => 0, align => 0 |
77 | ) |
83 | ) |
78 | ); |
84 | ); |
79 | |
85 | |
80 | $cv->{_chat_id} = $id; |
86 | $cv->{_chat_id} = $id; |
81 | $cv->{_tab_button} = $b; |
87 | $cv->{_tab_button} = $b; |
… | |
… | |
122 | my ($self, $id) = @_; |
128 | my ($self, $id) = @_; |
123 | my $cv = $self->{chatviews}->{$id}; |
129 | my $cv = $self->{chatviews}->{$id}; |
124 | $cv->{_channel_highlighted} = 1; |
130 | $cv->{_channel_highlighted} = 1; |
125 | my $tab = $cv->{_tab_button}; |
131 | my $tab = $cv->{_tab_button}; |
126 | $tab->set_markup ( |
132 | $tab->set_markup ( |
127 | "<span foreground='#ff0000'>" |
133 | clr_hlt (defined $id ? $self->{channel_info}->{$id}->{title} : "Log") |
128 | .$self->{channel_info}->{$id}->{title} |
|
|
129 | ."</span>" |
|
|
130 | ); |
134 | ); |
131 | } |
135 | } |
132 | |
136 | |
133 | sub unhighlight_channel { |
137 | sub unhighlight_channel { |
134 | my ($self, $id) = @_; |
138 | my ($self, $id) = @_; |
135 | |
139 | |
136 | my $cv = $self->{chatviews}->{$id}; |
140 | my $cv = $self->{chatviews}->{$id}; |
137 | $cv->{_channel_highlighted} = 0; |
141 | $cv->{_channel_highlighted} = 0; |
138 | my $tab = $cv->{_tab_button}; |
142 | my $tab = $cv->{_tab_button}; |
139 | $tab->set_markup ( |
143 | |
140 | "<span foreground='#ffff00'><b>" |
144 | $tab->set_markup (clr_act (defined $id ? $self->{channel_info}->{$id}->{title} : "Log")); |
141 | .$self->{channel_info}->{$id}->{title} |
|
|
142 | ."</b></span>" |
|
|
143 | ); |
|
|
144 | } |
145 | } |
145 | |
146 | |
146 | sub update_current_tab { |
147 | sub update_current_tab { |
147 | my ($self, $page) = @_; |
148 | my ($self, $page) = @_; |
148 | my $tab = $page->{_tab_button}; |
149 | my $tab = $page->{_tab_button}; |
|
|
150 | my $label; |
|
|
151 | if (defined $page->{_chat_id}) { |
149 | my $label = $self->{channel_info}->{$page->{_chat_id}}->{title}; |
152 | $label = $self->{channel_info}->{$page->{_chat_id}}->{title}; |
|
|
153 | } |
150 | $label = "Log" unless defined $label; |
154 | $label = "Log" unless defined $label; |
151 | $tab->set_markup ( |
155 | |
152 | "<span foreground='#ffff00'><b>" |
156 | $tab->set_markup (clr_act ($label)); |
153 | .$label |
|
|
154 | ."</b></span>" |
|
|
155 | ); |
|
|
156 | |
157 | |
157 | for ($self->{nb}->pages) { |
158 | for ($self->{nb}->pages) { |
158 | next if $_ eq $page; |
159 | next if $_ eq $page; |
159 | my $tab = $_->{_tab_button}; |
160 | my $tab = $_->{_tab_button}; |
160 | next if $_->{_channel_highlighted}; |
161 | next if $_->{_channel_highlighted}; |
161 | next unless $tab; |
162 | next unless $tab; |
162 | |
163 | |
|
|
164 | my $label; |
|
|
165 | if (defined $_->{_chat_id}) { |
163 | my $label = $self->{channel_info}->{$_->{_chat_id}}->{title}; |
166 | $label = $self->{channel_info}->{$_->{_chat_id}}->{title}; |
|
|
167 | } |
164 | $label = "Log" unless defined $label; |
168 | $label = "Log" unless defined $label; |
165 | |
169 | |
166 | $tab->set_markup ( |
170 | $tab->set_markup (clr_def ($label)); |
167 | "<span foreground='#ffffff'>" |
|
|
168 | .$label |
|
|
169 | ."</span>" |
|
|
170 | ); |
|
|
171 | } |
171 | } |
172 | } |
172 | } |
173 | |
173 | |
174 | sub add_channel { |
174 | sub add_channel { |
175 | my ($self, $info) = @_; |
175 | my ($self, $info) = @_; |
… | |
… | |
179 | |
179 | |
180 | sub message { |
180 | sub message { |
181 | my ($self, $para) = @_; |
181 | my ($self, $para) = @_; |
182 | my $id = $para->{type}; |
182 | my $id = $para->{type}; |
183 | |
183 | |
184 | if ($self->{channel_info}->{$id}) { |
184 | if (exists $self->{channel_info}->{$id}) { |
185 | $self->touch_channel ($id); |
185 | $self->touch_channel ($id); |
186 | $self->{chatviews}->{$id}->message ($para); |
186 | $self->{chatviews}->{$id}->message ($para); |
187 | } else { |
187 | } else { |
188 | $self->{main_log}->message ($para); |
188 | $self->{main_log}->message ($para); |
189 | } |
189 | } |