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();