* Explicitly set the python version
[gc-dialer] / gc_dialer / gc_dialer.py
index e578a4b..0f16195 100755 (executable)
@@ -10,12 +10,14 @@ bergman@merctech.com
 
 
 import sys
-#import gc
+import gc
 import os
-import re
-import time
 import threading
-import contextlib
+import time
+import re
+
+import warnings
+
 import gobject
 import gtk
 import gtk.glade
@@ -55,14 +57,9 @@ except ImportError:
 from gcbackend import GCDialer
 
 import socket
-socket.setdefaulttimeout(5)
 
-@contextlib.contextmanager
-def gtk_critical_section():
-       #The API changed and I hope these are the right calls
-       gtk.gdk.threads_enter()
-       yield
-       gtk.gdk.threads_leave()
+
+socket.setdefaulttimeout(5)
 
 
 def makeugly(prettynumber):
@@ -172,7 +169,7 @@ class Dialpad(object):
                        self.wTree.get_widget("usernameentry").set_property('hildon-input-mode', 7)
                        self.wTree.get_widget("passwordentry").set_property('hildon-input-mode', 7|(1 << 29))
                else:
-                       print "No Hildon"
+                       warnings.warn("No Hildon", UserWarning, 2)
 
                if osso is not None:
                        self.osso = osso.Context(__name__, Dialpad.__version__, False)
@@ -182,9 +179,9 @@ class Dialpad(object):
                                abook.init_with_name(__name__, self.osso)
                                self.ebook = evo.open_addressbook("default")
                        else:
-                               print "No abook and No evolution address book support"
+                               warnings.warn("No abook and No evolution address book support", UserWarning, 2)
                else:
-                       print "No OSSO"
+                       warnings.warn("No OSSO", UserWarning, 2)
 
                if self.window:
                        self.window.connect("destroy", gtk.main_quit)
@@ -195,6 +192,7 @@ class Dialpad(object):
                        "on_digit_clicked"  : self.on_digit_clicked,
                        "on_dial_clicked"    : self.on_dial_clicked,
                        "on_loginbutton_clicked" : self.on_loginbutton_clicked,
+                       "on_loginclose_clicked" : self.on_loginclose_clicked,
                        "on_clearcookies_clicked" : self.on_clearcookies_clicked,
                #       "on_callbackentry_changed" : self.on_callbackentry_changed,
                        "on_notebook_switch_page" : self.on_notebook_switch_page,
@@ -354,6 +352,9 @@ class Dialpad(object):
        def on_loginbutton_clicked(self, data=None):
                self.wTree.get_widget("login_dialog").response(gtk.RESPONSE_OK)
 
+       def on_loginclose_clicked(self, data=None):
+               sys.exit(0)
+
        def on_dial_clicked(self, widget):
                self.attemptLogin(3)
 
@@ -382,10 +383,23 @@ class Dialpad(object):
        
        def on_device_state_change(self, shutdown, save_unsaved_data, memory_low, system_inactivity, message, userData):
                """
+               For shutdown or save_unsaved_data, our only state is cookies and I think the cookie manager handles that for us.
+               For system_inactivity, we have no background tasks to pause
+
                @todo Might be useful to do something when going in offline mode or low memory
                @note Hildon specific
                """
-               pass
+               if shutdown or save_unsaved_data:
+                       pass
+
+               if memory_low:
+                       self.gcd.clear_caches()
+                       re.purge()
+                       gc.collect()
+
+               #if offline (how do I tell this? the message somehow?)
+               #       disable the gui?
+               #       disable clearing of caches and when they click dial, request to connect?
 
        def setNumber(self, number):
                self.phonenumber = makeugly(number)