loggedIn = False
try:
- if self._phoneBackends[self._defaultBackendId].is_authed():
- serviceId = self._defaultBackendId
- loggedIn = True
- username, password = self._credentials
- for x in xrange(numOfAttempts):
+ username, password = self._credentials
+ serviceId = self._defaultBackendId
+
+ # Attempt using the cookies
+ loggedIn = self._phoneBackends[self._defaultBackendId].is_authed()
+ if loggedIn:
+ warnings.warn(
+ "Logged into %r through cookies" % self._phoneBackends[self._defaultBackendId]
+ )
+
+ # Attempt using the settings file
+ if not loggedIn and username and password:
+ loggedIn = self._phoneBackends[self._defaultBackendId].login(username, password)
+ if loggedIn:
+ warnings.warn(
+ "Logged into %r through settings" % self._phoneBackends[self._defaultBackendId]
+ )
+
+ # Query the user for credentials
+ for attemptCount in xrange(numOfAttempts):
if loggedIn:
break
with gtk_toolbox.gtk_lock():
serviceId, username, password = credentials
loggedIn = self._phoneBackends[serviceId].login(username, password)
+ if 0 < attemptCount:
+ warnings.warn(
+ "Logged into %r through user request" % self._phoneBackends[serviceId]
+ )
except RuntimeError, e:
warnings.warn(traceback.format_exc())
self._errorDisplay.push_exception_with_lock(e)
with gtk_toolbox.gtk_lock():
if loggedIn:
self._credentials = username, password
+ self._change_loggedin_status(serviceId)
else:
self._errorDisplay.push_message("Login Failed")
- self._change_loggedin_status(serviceId if loggedIn else self.NULL_BACKEND)
+ self._change_loggedin_status(self.NULL_BACKEND)
return loggedIn
def _on_close(self, *args, **kwds):
backgroundLogin.start()
def _on_notebook_switch_page(self, notebook, page, page_num):
- if page_num == self.CONTACTS_TAB:
- self._contactsViews[self._selectedBackendId].update()
- elif page_num == self.RECENT_TAB:
+ if page_num == self.RECENT_TAB:
self._recentViews[self._selectedBackendId].update()
elif page_num == self.MESSAGES_TAB:
self._messagesViews[self._selectedBackendId].update()
+ elif page_num == self.CONTACTS_TAB:
+ self._contactsViews[self._selectedBackendId].update()
+ elif page_num == self.ACCOUNT_TAB:
+ self._accountViews[self._selectedBackendId].update()
tabTitle = self._notebook.get_tab_label(self._notebook.get_nth_page(page_num)).get_text()
if hildon is not None:
def __init__(self, widgetTree, backend, errorDisplay):
self._errorDisplay = errorDisplay
self._backend = backend
+ self._isPopulated = False
self._callbackList = gtk.ListStore(gobject.TYPE_STRING)
self._accountViewNumberDisplay = widgetTree.get_widget("gcnumber_display")
self._accountViewNumberDisplay.set_use_markup(True)
self.set_account_number("")
self._callbackList.clear()
- self.update()
self._onCallbackentryChangedId = self._callbackCombo.get_child().connect("changed", self._on_callbackentry_changed)
+ self.update(force=True)
def disable(self):
self._callbackCombo.get_child().disconnect(self._onCallbackentryChangedId)
+
self.clear()
+
self._callbackList.clear()
def get_selected_callback_number(self):
self._accountViewNumberDisplay.set_label("<span size='23000' weight='bold'>%s</span>" % (number))
def update(self, force = False):
+ if not force and self._isPopulated:
+ return
self._populate_callback_combo()
self.set_account_number(self._backend.get_account_number())
def clear(self):
self._callbackCombo.get_child().set_text("")
self.set_account_number("")
+ self._isPopulated = False
@staticmethod
def name():
config.set(section, "callback", callback)
def _populate_callback_combo(self):
+ self._isPopulated = True
self._callbackList.clear()
try:
callbackNumbers = self._backend.get_callback_numbers()
except RuntimeError, e:
self._errorDisplay.push_exception(e)
+ self._isPopulated = False
return
for number, description in callbackNumbers.iteritems():
self._callbackCombo.set_model(self._callbackList)
self._callbackCombo.set_text_column(0)
- try:
- callbackNumber = self._backend.get_callback_number()
- except RuntimeError, e:
- callbackNumber = self._defaultCallback
+ #callbackNumber = self._backend.get_callback_number()
+ callbackNumber = self._defaultCallback
self._callbackCombo.get_child().set_text(make_pretty(callbackNumber))
- def _on_callbackentry_changed(self, *args):
+ def _set_callback_number(self, number):
"""
@todo Potential blocking on web access, maybe we should defer this or put up a dialog?
"""
try:
- text = self.get_selected_callback_number()
- if not self._backend.is_valid_syntax(text):
- self._errorDisplay.push_message("%s is not a valid callback number" % text)
- elif text == self._backend.get_callback_number():
+ if not self._backend.is_valid_syntax(number):
+ self._errorDisplay.push_message("%s is not a valid callback number" % numbern)
+ elif number == self._backend.get_callback_number():
warnings.warn("Callback number already is %s" % self._backend.get_callback_number(), UserWarning, 2)
else:
- self._backend.set_callback_number(text)
+ self._backend.set_callback_number(number)
+ warnings.warn("Callback number set to %s" % self._backend.get_callback_number(), UserWarning, 2)
except RuntimeError, e:
self._errorDisplay.push_exception(e)
+ def _on_callbackentry_changed(self, *args):
+ """
+ @todo Potential blocking on web access, maybe we should defer this or put up a dialog?
+ """
+ text = self.get_selected_callback_number()
+ self._set_callback_number(text)
+
class RecentCallsView(object):
def disable(self):
self._recentview.disconnect(self._onRecentviewRowActivatedId)
+
+ self.clear()
+
self._recentview.remove_column(self._recentviewColumn)
self._recentview.set_model(None)
def disable(self):
self._messageview.disconnect(self._onMessageviewRowActivatedId)
+
+ self.clear()
+
self._messageview.remove_column(self._messageviewColumn)
self._messageview.set_model(None)
self._contactsview.disconnect(self._onContactsviewRowActivatedId)
self._booksSelectionBox.disconnect(self._onAddressbookComboChangedId)
+ self.clear()
+
self._booksSelectionBox.clear()
self._booksSelectionBox.set_model(None)
self._contactsview.set_model(None)