-from facebook import Facebook, FacebookError
+from pythonfacebook import Facebook, FacebookError
import gnome.gconf
import gtk, hildon
import org.maemo.hermes.engine.provider
"""Initialise the provider, and ensure the environment is going to work."""
self._gc = gnome.gconf.client_get_default()
- if (self._gc.get_string('/desktop/gnome/url-handlers/http/command') == 'epiphany %s'):
- raise Exception('Browser in gconf invalid (see NB#136012). Installation error.')
key_app = self._gc.get_string('/apps/maemo/hermes/facebook_app')
key_secret = self._gc.get_string('/apps/maemo/hermes/facebook_secret')
def get_account_detail(self):
"""Return the email address associated with the user, if available."""
-# if self.fb.users.getLoggedInUser() and self.fb.session_key:
-# info = self.fb.users.getInfo([self.fb.uid], ['name'])
-# return info['name']
-# else:
- return '---'
+ name = self._gc.get_string('/apps/maemo/hermes/facebook_user')
+ return name and name or _('Pending authorisation')
# -----------------------------------------------------------------------
"""Open the preferences for this provider as a child of the 'parent' widget."""
dialog = gtk.Dialog(self.get_name(), parent)
- dialog.add_button(_('Clear'), gtk.RESPONSE_OK)
dialog.add_button(_('Disable'), gtk.RESPONSE_NO)
dialog.add_button(_('Enable'), gtk.RESPONSE_YES)
- dialog.vbox.add(gtk.Label(_('Note: authentication via web page')))
-
checkbox = hildon.CheckButton(gtk.HILDON_SIZE_FINGER_HEIGHT)
checkbox.set_label(_('Create birthday-only contacts'))
checkbox.set_active(self._gc.get_bool('/apps/maemo/hermes/facebook_birthday_only'))
dialog.vbox.add(checkbox)
- dialog.vbox.add(gtk.Label(''))
+ dialog.vbox.add(gtk.Label("\n" + _('Note: authentication via web page') + "\n"))
- while True:
- dialog.show_all()
- result = dialog.run()
- dialog.hide()
- if result == gtk.RESPONSE_CANCEL:
- return None
- elif result == gtk.RESPONSE_OK:
- self._gc.set_string('/apps/maemo/hermes/facebook_session_key', '')
- self._gc.set_string('/apps/maemo/hermes/facebook_secret_key', '')
- self._gc.set_string('/apps/maemo/hermes/facebook_uid', '')
- else:
- break
+ clear = hildon.Button(gtk.HILDON_SIZE_FINGER_HEIGHT,
+ hildon.BUTTON_ARRANGEMENT_VERTICAL,
+ title = _("Clear authorisation"))
+ clear.connect('clicked', self._clear_auth)
+ dialog.vbox.add(clear)
+
+ dialog.show_all()
+ result = dialog.run()
+ dialog.hide()
+ if result == gtk.RESPONSE_CANCEL or result == gtk.RESPONSE_DELETE_EVENT:
+ return None
self._gc.set_bool('/apps/maemo/hermes/facebook_birthday_only', checkbox.get_active())
return result == gtk.RESPONSE_YES
+
+
+ # -----------------------------------------------------------------------
+ def _clear_auth(self, event):
+ """Clear Facebook authorisation information. Triggered by pressing
+ the 'clear' button in the preferences dialogue."""
+ self._gc.unset('/apps/maemo/hermes/facebook_session_key')
+ self._gc.unset('/apps/maemo/hermes/facebook_secret_key')
+ self._gc.unset('/apps/maemo/hermes/facebook_uid')
+ self._gc.unset('/apps/maemo/hermes/facebook_user')
+
# -----------------------------------------------------------------------
def service(self, gui_callback):
pass
self._do_fb_login()
- return org.maemo.hermes.engine.facebook.service.Service(self.fb)
+ return org.maemo.hermes.engine.facebook.service.Service(self.get_id(), self.fb, self._gc.get_bool('/apps/maemo/hermes/facebook_birthday_only'))
# -----------------------------------------------------------------------
self._gc.set_string('/apps/maemo/hermes/facebook_session_key', session['session_key'])
self._gc.set_string('/apps/maemo/hermes/facebook_secret_key', session['secret'])
self._gc.set_string('/apps/maemo/hermes/facebook_uid', str(session['uid']))
+
+ info = self.fb.users.getInfo([self.fb.uid], ['name'])
+ self._gc.set_string('/apps/maemo/hermes/facebook_user', info[0]['name'])
+