import time
import thread
import contactview
+import urllib2
from hermes import Hermes
gobject.threads_init()
try:
fb2c = Hermes(self,
twitter = (self.get_use_twitter() and self.get_twitter_credentials()) or None,
- facebook = self.get_use_facebook())
+ facebook = self.get_use_facebook(),
+ empty = self.get_create_empty())
fb2c.load_friends()
fb2c.sync_contacts(resync = force)
gobject.idle_add(self.open_summary, fb2c)
+
+ except urllib2.HTTPError, e:
+ traceback.print_exc()
+ if e.code == 401:
+ gobject.idle_add(self.report_error, 'Authentication problem. Check credentials.', True)
+ else:
+ gobject.idle_add(self.report_error, 'Network connection error. Check connectivity.')
+
+ except urllib2.URLError, e:
+ traceback.print_exc()
+ gobject.idle_add(self.report_error, 'Network connection error. Check connectivity.')
+
except Exception, e:
traceback.print_exc()
gobject.idle_add(self.report_error, 'Something went wrong: ' + e.message)
view = contactview.ContactView(contacts)
dialog = gtk.Dialog('Contacts', self.window)
- dialog.add_button('Back', gtk.RESPONSE_OK)
#view.connect('contact-activated', self.map_contact)
dialog.vbox.add(view)
dialog.show_all()
dialog = gtk.Dialog('Accounts', self.window)
dialog.add_button('Save', gtk.RESPONSE_OK)
- use_facebook = hildon.CheckButton(gtk.HILDON_SIZE_FINGER_HEIGHT)
- use_facebook.set_label('Use Facebook')
+ #pa = hildon.PannableArea()
+ #dialog.vbox.add(pa)
+ content = dialog.vbox
+ #content = gtk.VBox()
+ #pa.add(content)
+ #pa.set_size_request(600, 380)
+
+ use_facebook = self.new_checkbox('Use Facebook', content)
use_facebook.set_active(self.get_use_facebook())
- dialog.vbox.add(use_facebook)
- use_twitter = hildon.CheckButton(gtk.HILDON_SIZE_FINGER_HEIGHT)
- use_twitter.set_label('Use Twitter')
+ indent = self.new_indent(content)
+ fb_msg = self.add_linked(indent, use_facebook, gtk.Label('Note: authentication via web page'))
+ fb_msg.set_property('justify', gtk.JUSTIFY_LEFT)
+
+ fb_empty = self.add_linked(indent, use_facebook, self.new_checkbox('Create birthday-only contacts'))
+ fb_empty.set_active(self.get_create_empty())
+
+ use_twitter = self.new_checkbox('Use Twitter', content)
use_twitter.set_active(self.get_use_twitter())
- dialog.vbox.add(use_twitter)
- tw_indent = gtk.HBox()
- tw_user = hildon.Entry(gtk.HILDON_SIZE_FINGER_HEIGHT)
- tw_user.set_property('hildon-input-mode', gtk.HILDON_GTK_INPUT_MODE_FULL)
- tw_user.set_placeholder("Username")
- tw_user.set_property('is-focus', False)
+ indent = self.new_indent(content)
+ tw_user = self.add_linked(indent, use_twitter, self.new_input('Twitter username'))
tw_user.set_text(self.get_twitter_credentials()[0])
- self.sync_edit(use_twitter, tw_user)
- use_twitter.connect('toggled', self.sync_edit, tw_user)
- tw_indent.pack_start(tw_user, padding=48)
- dialog.vbox.add(tw_indent)
-
- tw_indent = gtk.HBox()
- tw_pass = hildon.Entry(gtk.HILDON_SIZE_FINGER_HEIGHT)
- tw_pass.set_placeholder("Password")
+
+ tw_pass = self.add_linked(indent, use_twitter, self.new_input('Twitter password'))
tw_pass.set_property('hildon-input-mode', gtk.HILDON_GTK_INPUT_MODE_FULL |
gtk.HILDON_GTK_INPUT_MODE_INVISIBLE)
tw_pass.set_text(self.get_twitter_credentials()[1])
- self.sync_edit(use_twitter, tw_pass)
- use_twitter.connect('toggled', self.sync_edit, tw_pass)
- tw_indent.pack_start(tw_pass, padding=48)
- dialog.vbox.add(tw_indent)
dialog.show_all()
result = dialog.run()
dialog.hide()
if result == gtk.RESPONSE_OK:
self.set_use_facebook(use_facebook.get_active())
+ self.set_create_empty(fb_empty.get_active())
self.set_use_twitter(use_twitter.get_active(), tw_user.get_text(), tw_pass.get_text())
return result
-
+
+ # -----------------------------------------------------------------------
+ def new_checkbox(self, label, box = None):
+ checkbox = hildon.CheckButton(gtk.HILDON_SIZE_FINGER_HEIGHT)
+ checkbox.set_label(label)
+ if box:
+ box.add(checkbox)
+ return checkbox
+
+
+ # -----------------------------------------------------------------------
+ def new_indent(self, box):
+ outer = gtk.HBox()
+ indent = gtk.VBox()
+ outer.pack_start(indent, padding=48)
+ box.add(outer)
+ return indent
+
+
+ # -----------------------------------------------------------------------
+ def new_input(self, text, box = None):
+ input = hildon.Entry(gtk.HILDON_SIZE_FINGER_HEIGHT)
+ input.set_property('hildon-input-mode', gtk.HILDON_GTK_INPUT_MODE_FULL)
+ input.set_placeholder(text)
+ input.set_property('is-focus', False)
+ if box:
+ box.add(input)
+ return input
+
+
+ # -----------------------------------------------------------------------
+ def add_linked(self, box, ctrl, to_add):
+ box.add(to_add)
+ self.sync_edit(ctrl, to_add)
+ ctrl.connect('toggled', self.sync_edit, to_add)
+ return to_add
+
# -----------------------------------------------------------------------
def sync_edit(self, use_twitter, edit):
# -----------------------------------------------------------------------
- def report_error(self, e):
+ def report_error(self, e, prefs = False):
+ if self.progressnote:
+ self.window.set_property('sensitive', True)
+ self.progressnote.destroy()
+
hildon.hildon_banner_show_information(self.window, '', e)
+ if prefs:
+ self.open_prefs()
# -----------------------------------------------------------------------
self.app = hildon.Program()
self.window = hildon.Window()
gtk.set_application_name('Hermes')
- self.osso_context = osso.Context('org.maemo.hermes', '0.0.4', False)
+ self.osso_context = osso.Context('org.maemo.hermes', '0.0.5', False)
self.app.add_window(self.window)
self.window.connect("delete-event", gtk.main_quit)
def set_use_facebook(self, value):
self.gc.set_bool("/apps/maemo/hermes/use_facebook", value)
+ def get_create_empty(self):
+ return self.gc.get_bool("/apps/maemo/hermes/create_empty")
+
+
+ def set_create_empty(self, value):
+ self.gc.set_bool("/apps/maemo/hermes/create_empty", value)
+
def get_use_twitter(self):
return self.gc.get_bool("/apps/maemo/hermes/use_twitter")