1# $Id: awaylogcnt.pl,v 0.2 2004/10/27 19:46 derwan Exp $
2#
3# Run command '/statusbar window add -after user -priority 1 awaylogcnt' after loading awaylogcnt.pl.
4#
5
6use strict;
7use vars qw($VERSION %IRSSI);
8
9use Irssi;
10$VERSION = '0.2';
11%IRSSI = (
12   authors      => 'Marcin Rozycki',
13   contact      => 'derwan@irssi.pl',
14   name         => 'awalogcnt',
15   description  => 'Displays in statusbar number of messages in awaylog',
16   modules      => '',
17   sbitems      => 'awaylogcnt',
18   license      => 'GNU GPL v2',
19   url          => 'http://derwan.irssi.pl',
20   changed      => 'Wed Oct 27 19:46:28 CEST 2004'
21);
22
23use Irssi::TextUI;
24
25our $cnt = 0;
26our $fname = undef();
27
28
29Irssi::signal_add( 'log started' => sub {
30   my $logfile = Irssi::settings_get_str( 'awaylog_file' );
31   return unless ( $_[0]->{fname} eq $logfile );
32   ($fname, $cnt) = ($logfile, 0);
33   Irssi::statusbar_items_redraw('awaylogcnt');
34});
35
36Irssi::signal_add( 'log stopped' => sub {
37   return unless ( $_[0]->{fname} eq $fname );
38   ($cnt, $fname) = (0, undef);
39   Irssi::statusbar_items_redraw('awaylogcnt');
40});
41
42Irssi::signal_add( 'log written' => sub {
43   return unless ( $_[0]->{fname} eq $fname );
44   $cnt++;
45   Irssi::statusbar_items_redraw('awaylogcnt');
46});
47
48sub awaylogcnt ($$) {
49   my ($sbitem, $get_size_only) = @_;
50   unless ( $cnt )
51   {
52      $sbitem->{min_size} = $sbitem->{max_size} = 0 if ( ref $sbitem );
53      return;
54   }
55   my $format = sprintf('{sb \%%yawaylog\%%n %d}', $cnt);
56   $sbitem->default_handler($get_size_only, $format, undef, 1);
57}
58
59Irssi::statusbar_item_register('awaylogcnt', undef, 'awaylogcnt');
60