X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/snom-frontend/blobdiff_plain/9307ec52aff2dbbd2fd1feb1a4b46ab53a376ce7..HEAD:/snom.pl diff --git a/snom.pl b/snom.pl index 34d61a2..3acac1b 100755 --- a/snom.pl +++ b/snom.pl @@ -11,11 +11,14 @@ use Glib qw/TRUE FALSE/; use Gtk2 '-init'; use Gtk2::Gdk::Keysyms; use LWP::UserAgent; +use FindBin qw($Bin); + my %g_key = (); my %g_arrows; my $g_host = Gtk2::ComboBox->new_text(); my $g_identity = Gtk2::ComboBox->new_text(); +my $cbextern = Gtk2::CheckButton->new("extern"); my $ua = LWP::UserAgent->new; open(INIFILE,"<$ENV{HOME}/.snomrc") || die("can't open config: $ENV{HOME}/.snomrc: $!"); @@ -110,6 +113,8 @@ my $window = Gtk2::Window->new('toplevel'); $window->set_title("snom"); $window->signal_connect(delete_event => \&CloseAppWindow); $window->signal_connect(destroy => sub { Gtk2->main_quit; }); + + my $kphandler = $window->signal_connect(key_press_event => \&KBDInput); $window->set_border_width(15); $window->set_resizable(FALSE); @@ -148,9 +153,6 @@ $display->signal_connect(enter_notify_event => \&DisplayMouseOver, TRUE); $display->signal_connect(leave_notify_event => \&DisplayMouseOver, FALSE); $display->show(); -my $cbextern = Gtk2::CheckButton->new("extern"); -$cbextern->show(); - my $dialbox = Gtk2::HBox->new(0, 30); $dialbox->pack_start($display, 0, 0, 0); $dialbox->pack_start($cbextern, 0, 0, 0); @@ -234,21 +236,35 @@ sub activate_icon_cb { } } -my $status_icon = Gtk2::StatusIcon->new_from_file('snom.ico'); -my $menu = Gtk2::Menu->new(); +sub minimize_to_try{ + my ($w, $event) = @_; + if ($event->changed_mask & [ 'iconified', ]){ + $window->hide(); + # Needs to be deiconified after hiding, otherwise show will not behave as expected. + $window->deiconify(); + } +} -my $menuItem = Gtk2::ImageMenuItem->new_from_stock('gtk-quit'); -$menuItem->signal_connect('activate', \&quit_cb, $status_icon); -$menu->append($menuItem); +my $status_icon = Gtk2::StatusIcon->new_from_file($Bin.'/snom.ico'); +if($status_icon->is_embedded){ -$status_icon->set_tooltip(" Snom Tray "); -$status_icon->signal_connect('activate', \&activate_icon_cb); -$status_icon->signal_connect('popup-menu', \&popup_menu_cb, $menu); -$status_icon->set_visible(1); + my $menu = Gtk2::Menu->new(); + + my $menuItem = Gtk2::ImageMenuItem->new_from_stock('gtk-quit'); + $menuItem->signal_connect('activate', \&quit_cb, $status_icon); + $menu->append($menuItem); + + $status_icon->set_tooltip('Snom Tray'); + $status_icon->signal_connect('activate', \&activate_icon_cb); + $status_icon->signal_connect('popup-menu', \&popup_menu_cb, $menu); + $status_icon->set_visible(1); + + $window->signal_connect('window-state-event',\&minimize_to_try); +} ########################################################################333 $window->add($mainbox); -$window->set_icon_from_file('snom.ico'); +$window->set_icon_from_file($Bin.'/snom.ico'); $window->show(); $g_key{OK}->grab_focus(); @@ -308,11 +324,12 @@ sub DialNumber { my ($entry) = @_; my ($num) = $entry->get_text(); - if ($cbextern->get_active){ - snom_number("09".$num) - } else { - snom_number($num); + + if ($cbextern->get_active && defined(${$Config{$sections[$g_host->get_active]}}{extern})) { + $num = ${$Config{$sections[$g_host->get_active]}}{extern} . $num; } + + snom_number($num); return TRUE; } @@ -426,6 +443,12 @@ sub KBDInput sub UpdatePhoneInfo { + if (defined(${$Config{$sections[$g_host->get_active]}}{extern})) { + $cbextern->show(); + } else { + $cbextern->hide(); + } + my $req = HTTP::Request->new(GET => "http://".${$Config{$sections[$g_host->get_active]}}{host}."/"); my $response = $ua->request($req);