+ with gtk_toolbox.gtk_lock():
+ unifiedDialpad = gc_views.Dialpad(self._widgetTree, self._errorDisplay)
+ unifiedDialpad.set_number("")
+ self._dialpads.update({
+ self.GC_BACKEND: unifiedDialpad,
+ self.GV_BACKEND: unifiedDialpad,
+ })
+ self._accountViews.update({
+ self.GC_BACKEND: gc_views.AccountInfo(
+ self._widgetTree, self._phoneBackends[self.GC_BACKEND], None, self._errorDisplay
+ ),
+ self.GV_BACKEND: gc_views.AccountInfo(
+ self._widgetTree, self._phoneBackends[self.GV_BACKEND], self._alarmHandler, self._errorDisplay
+ ),
+ })
+ self._accountViews[self.GC_BACKEND].save_everything = lambda *args: None
+ self._accountViews[self.GV_BACKEND].save_everything = self._save_settings
+ self._recentViews.update({
+ self.GC_BACKEND: gc_views.RecentCallsView(
+ self._widgetTree, self._phoneBackends[self.GC_BACKEND], self._errorDisplay
+ ),
+ self.GV_BACKEND: gc_views.RecentCallsView(
+ self._widgetTree, self._phoneBackends[self.GV_BACKEND], self._errorDisplay
+ ),
+ })
+ self._messagesViews.update({
+ self.GC_BACKEND: null_views.MessagesView(self._widgetTree),
+ self.GV_BACKEND: gc_views.MessagesView(
+ self._widgetTree, self._phoneBackends[self.GV_BACKEND], self._errorDisplay
+ ),
+ })
+ self._contactsViews.update({
+ self.GC_BACKEND: gc_views.ContactsView(
+ self._widgetTree, self._phoneBackends[self.GC_BACKEND], self._errorDisplay
+ ),
+ self.GV_BACKEND: gc_views.ContactsView(
+ self._widgetTree, self._phoneBackends[self.GV_BACKEND], self._errorDisplay
+ ),
+ })
+
+ fsContactsPath = os.path.join(constants._data_path_, "contacts")
+ fileBackend = file_backend.FilesystemAddressBookFactory(fsContactsPath)
+ for backendId in (self.GV_BACKEND, self.GC_BACKEND):
+ self._dialpads[backendId].number_selected = self._select_action
+ self._recentViews[backendId].number_selected = self._select_action
+ self._messagesViews[backendId].number_selected = self._select_action
+ self._contactsViews[backendId].number_selected = self._select_action
+
+ addressBooks = [
+ self._phoneBackends[backendId],
+ fileBackend,
+ ]
+ mergedBook = gc_views.MergedAddressBook(addressBooks, gc_views.MergedAddressBook.advanced_lastname_sorter)
+ self._contactsViews[backendId].append(mergedBook)
+ self._contactsViews[backendId].extend(addressBooks)
+ self._contactsViews[backendId].open_addressbook(*self._contactsViews[backendId].get_addressbooks().next()[0][0:2])
+
+ callbackMapping = {
+ "on_paste": self._on_paste,
+ "on_refresh": self._on_menu_refresh,
+ "on_clearcookies_clicked": self._on_clearcookies_clicked,
+ "on_notebook_switch_page": self._on_notebook_switch_page,
+ "on_about_activate": self._on_about_activate,
+ }
+ self._widgetTree.signal_autoconnect(callbackMapping)
+
+ with gtk_toolbox.gtk_lock():
+ self._originalCurrentLabels = [
+ self._notebook.get_tab_label(self._notebook.get_nth_page(pageIndex)).get_text()
+ for pageIndex in xrange(self._notebook.get_n_pages())
+ ]
+ self._notebookTapHandler = gtk_toolbox.TapOrHold(self._notebook)
+ self._notebookTapHandler.enable()
+ self._notebookTapHandler.on_tap = self._reset_tab_refresh
+ self._notebookTapHandler.on_hold = self._on_tab_refresh
+ self._notebookTapHandler.on_holding = self._set_tab_refresh
+ self._notebookTapHandler.on_cancel = self._reset_tab_refresh
+
+ self._initDone = True
+
+ config = ConfigParser.SafeConfigParser()
+ config.read(constants._user_settings_)
+ with gtk_toolbox.gtk_lock():
+ self.load_settings(config)
+
+ self._spawn_attempt_login(2)
+ except Exception, e:
+ with gtk_toolbox.gtk_lock():
+ self._errorDisplay.push_exception()
+
+ def attempt_login(self, numOfAttempts = 10, force = False):
+ """
+ @todo Handle user notification better like attempting to login and failed login