html/timezones.pl


   1 #
   2 # Add the statusbar item to its own statusbar with
   3 # /statusbar sb_timezones enable
   4 # /statusbar sb_timezones add -alignment left barstart
   5 # /statusbar sb_timezones add -after barstart timezones
   6 # /statusbar sb_timezones add -alignment right barend
   7 #
   8 # or add it to an existing one with
   9 # /statusbar window add timezones (window is an exaple, see /statusbar and /help statusbar for comprehensive help)
  10 
  11 $VERSION = "0.1";
  12 %IRSSI = (
  13     authors     => "Jari Matilainen",
  14     contact     => "irc: vague`\@freenode",
  15     name        => "timezones",
  16     description => "timezones displayer",
  17     license     => "Public Domain",
  18     url         => "http://vague.se"
  19 );
  20 
  21 use strict;
  22 use Irssi::TextUI;
  23 use DateTime;
  24 
  25 my $refresh_tag;
  26 
  27 sub timezones {
  28   my ($item,$get_size_only) = @_;
  29   my ($datetime) = Irssi::settings_get_str("timezones_clock_format");
  30   my ($div) = Irssi::settings_get_str("timezones_divider");
  31   my (@timezones) = split ' ', Irssi::settings_get_str("timezones");
  32 
  33   my $result = "";
  34 
  35   foreach(@timezones) {
  36     if(length($result)) { $result .= $div; }
  37     my ($nick, $timezone) = split /:/, $_;
  38     my $now = DateTime->now(time_zone => $timezone);
  39     $result .= $nick . ": " . $now->strftime("$datetime");
  40   }
  41 
  42   $item->default_handler($get_size_only, undef, $result, 1);
  43 }
  44 
  45 sub refresh_timezones {
  46   Irssi::statusbar_items_redraw('timezones');
  47 }
  48 
  49 sub init_timezones {
  50   Irssi::timeout_remove($refresh_tag) if ($refresh_tag);
  51   $refresh_tag = Irssi::timeout_add(1000, \&refresh_timezones, undef);
  52 }
  53 
  54 Irssi::statusbar_item_register('timezones', '{sb $0-}', 'timezones');
  55 Irssi::settings_add_str('timezones', 'timezones_clock_format', '%H:%M:%S');
  56 Irssi::settings_add_str('timezones', 'timezones_divider', ' ');
  57 Irssi::settings_add_str('timezones', 'timezones', 'Mike:GMT Sergey:EST');
  58 
  59 init_timezones();
  60 Irssi::signal_add('setup changed', \&init_timezones);
  61 refresh_timezones();