Business-UTV
view release on metacpan or search on metacpan
bin/utv_usage_tray.pl view on Meta::CPAN
#!/usr/bin/perl -w
use strict;
use warnings;
use Win32::GUI;
use Business::UTV;
$SIG{QUIT} = "DEFAULT";
# you need to add your utv id/password and your name
# your name is used to verify the login so it should
# be the name of the account owner
my $id = "";
my $password = "";
my $name = "";
# most people would like to hide the console while the script is
# running
my $hideConsole = 1;
my ($DOS) = Win32::GUI::GetPerlWindow() if $hideConsole;
Win32::GUI::Hide($DOS) if $hideConsole;
my $utv;
my $usage;
my $main = Win32::GUI::Window->new( -name => 'Main', -text => 'UTV Usage',-width => 100, -height => 100);
my $icon = new Win32::GUI::Icon('GUIPERL.ICO');
my $ni = $main->AddNotifyIcon(-name => "NI", -id => 1,-icon => $icon, -tip => "retrieving data" );
my $popupMenu = Win32::GUI::Menu->new("Options" => "Options",
">Quit" => {-name => "Quit" , -onClick => sub { return -1; } } );
updateUsageText_Timer();
$main->AddTimer( "updateUsageText" , 60000 );
Win32::GUI::Dialog();
Win32::GUI::Show($DOS) if $hideConsole;
sub NI_RightClick
{
my ($x, $y) = Win32::GUI::GetCursorPos;
Win32::GUI::TrackPopupMenu($main->{-handle}, $popupMenu->{Options}, $x, $y);
}
sub getUsageText
{
unless($utv)
{
$utv = Business::UTV->login( $id , $password , { "name" => $name } );
}
if( $utv )
{
my $usage = $utv->usage();
if( $usage )
{
$usage = "up " . int($usage->{"upload"}) . " Down " . int($usage->{"download"});
}
else
{
$usage = "ERROR - " . $Business::UTV::errstr;
}
}
else
{
$usage = "ERROR - " . $Business::UTV::errstr;
}
}
sub updateUsageText_Timer
{
my $text = getUsageText();
$ni->Change( -name => "NI" , -id => 1, -icon => $icon, -tip => $text );
return 1;
}
=head1 NAME
utv_usage_tray.pl - Windows system tray icon displaying monthly bandwidth usage
=head1 SYNOPSIS
This script adds a tray icon to your system tray.
When the mouse pointer hovers over it the tray icon will display the current
monthly upload/download usage in megabytes of your UTV internet account.
To remove the icon right click on it and select quit.
The displayed values will be updated every 60 minutes but
typically the values provided by the utv website only update
every couple of day.
=head1 CONFIGURATION
Currently the script is configured by editing 4 perl variables.
id - utv internet id
password - utv internet password
name - name of the account holder
hideConsole - by default perl displays a console while it is running
( run in 0.506 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )