get identities
[snom-frontend] / snom.pl
diff --git a/snom.pl b/snom.pl
index f849011..7079772 100755 (executable)
--- a/snom.pl
+++ b/snom.pl
@@ -1,5 +1,7 @@
 #!/bin/sh
-#$Id: snom.pl,v 1.18 2006-05-21 22:56:51 michael Exp $
+#$Id: snom.pl,v 1.34 2006-05-22 12:11:55 michael Exp $
+
+# http://developer.gnome.org/doc/API/2.2/gtk/gtk-migrating-GtkComboBox.html
 
 PATH=/opt/csw/bin:/opt/local/bin:/usr/bin:/bin exec perl -w -x "$0" "$@"
 
@@ -12,9 +14,10 @@ use Glib qw/TRUE FALSE/;
 use Gtk2 '-init';
 use Gtk2::Gdk::Keysyms;
 use LWP::UserAgent;
-#use Config::IniFiles;
 
 my %g_key = ();
+my $g_host = Gtk2::ComboBox->new_text();
+my $g_identity = Gtk2::ComboBox->new_text();
 my $ua = LWP::UserAgent->new;
 
 open(INIFILE,"<$ENV{HOME}/.snomrc") || die("can't open config: $ENV{HOME}/.snomrc: $!");
@@ -22,50 +25,53 @@ my %Config = ();
 my @sections = ();
 while(<INIFILE>) {
        chomp;
+
+       next if (m/^#/);
+       
        if (m/^\s*\[(.*)\]\s*$/) {
                push @sections, $1;
                next;
        }
 
-       if ($#sections) {
-               for my $var (qw(host login password)) {
-                       if (m/^\s*${var}\s*=\s*(.*)\s*$/) {
-                               push @{$Config{$sections[$#sections]}}, ($var => $1);
-                       }
+       if (@sections) {
+               if (m/^\s*(.+)\s*=\s*(.*)\s*$/) {
+                       ${$Config{$sections[$#sections]}}{$1} = $2;
                }
        }
 }
 close(INIFILE);
 
-
 for my $section (@sections) {
-       for my $val (@{$Config{$section}}) {
-               print $val."\n";
-               #for my $val (qw(host login password)) {
-               #       if (defined($cfg->val($section, $val))) {
-               #               print "$val: <" . $cfg->val($section, $val) . ">\n";
-               #       }
-               #}
-
+       if (defined(${$Config{$section}}{host})) {
+               $g_host->append_text($section);
+               if (defined(${$Config{$section}}{login}) &&
+                       defined(${$Config{$section}}{password})) {
+                       $ua->credentials(${$Config{$section}}{host}.":80",
+                               "snom",
+                               ${$Config{$section}}{login},
+                               ${$Config{$section}}{password});
+               }
        }
 }
-
-
-
-#$ua->credentials("${ARGV[0]}:80","snom","root","geheim");
+$g_host->set_active(0);
+UpdatePhoneInfo();
+$g_host->signal_connect(changed => \&UpdatePhoneInfo);
+$g_host->show();
+$g_host->signal_connect(changed => \&SwitchIdentity);
+$g_identity->show();
 
 set_locale Gtk2;
 
 sub snom_key {
        my $key = shift;
        $key='%23' if ($key eq '#');
-       my $req = HTTP::Request->new(GET => "http://${ARGV[0]}/command.htm?key=${key}");
+       my $req = HTTP::Request->new(GET => "http://".${$Config{$sections[$g_host->get_active]}}{host}."/command.htm?key=${key}");
        $ua->request($req);
 }
 
 sub snom_number {
        my $number = shift;
-       my $req = HTTP::Request->new(GET => "http://${ARGV[0]}/command.htm?number=${number}");
+       my $req = HTTP::Request->new(GET => "http://".${$Config{$sections[$g_host->get_active]}}{host}."/command.htm?number=${number}");
        $ua->request($req);
 }
 
@@ -97,11 +103,6 @@ sub gen_table {
        $table;
 }
 
-if (!defined($ARGV[0])) {
-       print STDERR "Usage: ${0} snom.phone.address\n";
-       exit 1
-}
-
 my $window = Gtk2::Window->new('toplevel');
 $window->set_title("snom");
 $window->signal_connect(delete_event => \&CloseAppWindow);   
@@ -135,11 +136,6 @@ $display->signal_connect(enter_notify_event => \&DisplayMouseOver, TRUE);
 $display->signal_connect(leave_notify_event => \&DisplayMouseOver, FALSE);
 $display->show();
 
-my $host = Gtk2::ComboBox->new();
-# my $combobox = Gtk2::Ex::ComboBox->new($host);
-# $combobox->set_list(\@sections);
-$host->show();
-
 my $dispbox = Gtk2::VBox->new(0, 5);
 $dispbox->pack_start($display, 0, 0, 0);
 $dispbox->pack_start($softkeys, 0, 0, 0);
@@ -147,11 +143,12 @@ $dispbox->pack_start($navi, 0, 0, 0);
 $dispbox->show();
 
 my $outbox = Gtk2::VBox->new(0, 0);
-$outbox->pack_start($host, 0, 0, 0);
+$outbox->pack_start($g_host, 0, 0, 0);
 $outbox->pack_end($output, 0, 0, 0);
 $outbox->show();
 
 my $specialbox = Gtk2::VBox->new(0, 0);
+$specialbox->pack_start($g_identity, 0, 0, 0);
 $specialbox->pack_end($special, 0, 0, 0);
 $specialbox->show();
 
@@ -353,6 +350,38 @@ sub KBDInput
        return FALSE;
 }
 
+sub UpdatePhoneInfo
+{
+       print "TODO: Update PhoneInfo from <".${$Config{$sections[$g_host->get_active]}}{host}."> here!\n";
+       my $req = HTTP::Request->new(GET => "http://".${$Config{$sections[$g_host->get_active]}}{host}."/");
+       my $response = $ua->request($req);
+        if ($response->is_error) {
+                die("Can't retrieve line information: ", $ua->response->status_line);
+        }
+       
+       my @lines=split("\n", $response->content());
+       foreach (@lines) {
+               chomp;
+               #<option value="1" selected>51@stargate.gernoth.loc</option>
+               #<option value="2">89@asterix.ear-projekt.de</option>
+               #<option value="3">41@grumpy.gernoth.loc</option>
+               if (m/^\<option value=\"(.+)\"( selected)?\>([^<]*)\<\/option\>$/) {
+                       if(defined($2)) {
+                               print "*".$1." ".$3."\n";
+                       } else {
+                               print $1." ".$3."\n";
+                       }
+               }
+       }
+       $g_identity->append_text("\@line1");
+       $g_identity->set_active(0);
+}
+
+sub SwitchIdentity
+{
+       print "TODO: Switch Identity on <".${$Config{$sections[$g_host->get_active]}}{host}."> to ".$g_identity->get_active."!\n";
+}
+
 sub CloseAppWindow
 {
        $window->destroy;
Impressum, Datenschutz