use strict; use vars qw($VERSION %IRSSI); use warnings; use Irssi qw( signal_add timeout_add timeout_remove settings_get_int settings_add_int ); use Irssi::TextUI; use Date::Pcalc qw(Today Today_and_Now Delta_Days Delta_DHMS); our($last_update,$last_interval,$timeout_id,$interval)=(0,0,0,60); $VERSION = '1.00'; %IRSSI = ( authors => 'Taneli "Dist" Kaivola', contact => 'dist@ihme.org', name => 'Japani countdown', description => '', license => 'GNUv2', url => '', changed => 'Thu Jan 19 23:11:43 EEST 2006', ); sub update { my ($item, $get_size_only) = @_; my @lahto = (2006,7,29,17,15,0); my $days = Delta_Days(Today,@lahto[0..2]); my $format = '{sb Japaniin $0d}'; my @hours = Delta_DHMS(Today_and_Now, @lahto); my @jaljella; if (abs($days) < 10) { @jaljella = @hours; $format = '{sb Japaniin $0d $1:$2:$3}'; $interval = 1; setup_changed(); } else { @jaljella = ($days); $interval = 60; setup_changed(); } map {$_=sprintf"%02d",$_} @jaljella[1..$#jaljella]; $item->default_handler($get_size_only, $format, (join " "=>@jaljella), 1); } sub update_statusbar { $last_update=0; Irssi::statusbar_items_redraw('japani'); } sub setup_changed { return if $interval == $last_interval || $interval<=0; $last_interval = $interval; timeout_remove $timeout_id if $timeout_id; $timeout_id = timeout_add($interval*1000, 'update_statusbar', undef); } setup_changed(); signal_add 'setup changed' => \&setup_changed; Irssi::statusbar_item_register('japani', 'x', 'update'); # '{sb Users: $0/$1}', 'update'; Irssi::print "Type: '/statusbar window ADD japani' to add statusbar item";