--- /usr/bin/zhone-bak  2008-09-15 21:18:01.000000000 +0000
+++ /usr/bin/zhone      2008-09-15 23:26:43.000000000 +0000
@@ -174,6 +174,21 @@
                 self.main.groups["call"].onCallStatus( None, "outgoing", {"peer": "".join(self.text)} )
         self.last = time.time()
 
+    def onNetworkStatus( self, status ):
+        logger.info( "network status changed: %s" % status )
+        #if(status.has_key("registration") != "busy")  # XXX this might work too.  which is better?
+        if(status.has_key('provider')):
+           self.main.agents["gsm"].setState("Registered: %s" % status['provider'])
+            self.main.groups["main"].targets["phone"] = True
+            self.main.groups["main"].update()
+            if dbus_object.gsm_sim_iface.GetSimReady():
+                self.main.groups["contacts"].prepare()
+                self.main.groups["sms"].prepare()
+        else:
+           self.main.agents["gsm"].setState("Failed to register to network")
+           self.main.groups["main"].targets["phone"] = False
+           self.main.groups["main"].update()
+
 #----------------------------------------------------------------------------#
 class pyphone_call(edje_group):
 #----------------------------------------------------------------------------#
@@ -1744,15 +1759,9 @@
         self.cbDBusReady()
 
     def cbRegisterReply( self ):
-        self.setState( "Registered to network" )
-        self.main.groups["main"].targets["phone"] = True
-        self.main.groups["main"].update()
-        if dbus_object.gsm_sim_iface.GetSimReady():
-            self.main.groups["contacts"].prepare()
-            self.main.groups["sms"].prepare()
+       0
 
     def cbRegisterError( self, e ):
-        self.setState( "Failed to register to network" )
         logger.exception( e )
 
 #----------------------------------------------------------------------------#
@@ -1819,6 +1828,7 @@
         dbus_object.onReadyStatus.append( self.groups["sms"].onReadyStatus )
         dbus_object.onIncomingMessage.append( self.groups["sms"].onIncomingMessage )
         dbus_object.onIdleStateChanged.append( self.lock_on_idle )
+        dbus_object.onNetworkStatus.append( self.groups["phone"].onNetworkStatus )
 
         logger.debug( "GUI init done" )

