X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fdc_glade.py;h=e9e30c672a3190e1db2735ff487040a11bb1abe6;hb=ce65e8fcd9cd4f7913e04e675516c83be59a5c34;hp=14b6db5e4712b5ef7e368685c44807af66cf25ce;hpb=c7301600ffd56e63f6c70e31b1a4d7b85435743b;p=gc-dialer diff --git a/src/dc_glade.py b/src/dc_glade.py index 14b6db5..e9e30c6 100755 --- a/src/dc_glade.py +++ b/src/dc_glade.py @@ -18,12 +18,16 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +@todo Try gogol's bigger tree view items +@todo Try gogol's wrapping for messages +@bug Does special notifiers even work? +@bug Messaging UI is bad(?) +@bug Not logging back in on network reconnect + @todo Figure out how to integrate with the Maemo contacts app -@todo Look into an actor system @bug Session timeouts are bad, possible solutions: @li For every X minutes, if logged in, attempt login @li Restructure so code handling login/dial/sms is beneath everything else and login attempts are made if those fail -@todo Can't text from dialpad (so can't do any arbitrary number texts) @todo Add logging support to make debugging issues for people a lot easier """ @@ -134,9 +138,16 @@ class Dialcentral(object): self._widgetTree.get_widget("callbackcombo").get_child().set_property('hildon-input-mode', (1 << 4)) except TypeError, e: warnings.warn(e.message) - hildon.hildon_helper_set_thumb_scrollbar(self._widgetTree.get_widget('recent_scrolledwindow'), True) - hildon.hildon_helper_set_thumb_scrollbar(self._widgetTree.get_widget('message_scrolledwindow'), True) - hildon.hildon_helper_set_thumb_scrollbar(self._widgetTree.get_widget('contacts_scrolledwindow'), True) + for scrollingWidget in ( + 'recent_scrolledwindow', + 'message_scrolledwindow', + 'contacts_scrolledwindow', + "phoneSelectionMessage_scrolledwindow", + "phonetypes_scrolledwindow", + "smsMessage_scrolledwindow", + "smsMessage_scrolledEntry", + ): + hildon.hildon_helper_set_thumb_scrollbar(self._widgetTree.get_widget(scrollingWidget), True) gtkMenu = self._widgetTree.get_widget("dialpad_menubar") menu = gtk.Menu() @@ -215,10 +226,13 @@ class Dialcentral(object): self._alarmHandler = alarm_handler.AlarmHandler() except ImportError: alarm_handler = None + except Exception: + with gtk_toolbox.gtk_lock(): + self._errorDisplay.push_exception() + alarm_handler = None if hildon is not None: import led_handler self._ledHandler = led_handler.LedHandler() - self._ledHandler.off() # Setup maemo specifics try: @@ -237,7 +251,6 @@ class Dialcentral(object): import gv_backend import gc_backend import file_backend - import evo_backend import gc_views try: @@ -296,7 +309,6 @@ class Dialcentral(object): ), }) - evoBackend = evo_backend.EvolutionAddressBook() fsContactsPath = os.path.join(constants._data_path_, "contacts") fileBackend = file_backend.FilesystemAddressBookFactory(fsContactsPath) for backendId in (self.GV_BACKEND, self.GC_BACKEND): @@ -307,7 +319,6 @@ class Dialcentral(object): addressBooks = [ self._phoneBackends[backendId], - evoBackend, fileBackend, ] mergedBook = gc_views.MergedAddressBook(addressBooks, gc_views.MergedAddressBook.advanced_lastname_sorter) @@ -592,9 +603,6 @@ class Dialcentral(object): config.write(configFile) def _refresh_active_tab(self): - if self._ledHandler is not None: - self._ledHandler.off() - pageIndex = self._notebook.get_current_page() if pageIndex == self.CONTACTS_TAB: self._contactsViews[self._selectedBackendId].update(force=True) @@ -603,6 +611,10 @@ class Dialcentral(object): elif pageIndex == self.MESSAGES_TAB: self._messagesViews[self._selectedBackendId].update(force=True) + if pageIndex in (self.RECENT_TAB, self.MESSAGES_TAB): + if self._ledHandler is not None: + self._ledHandler.off() + def _on_close(self, *args, **kwds): try: if self._osso is not None: @@ -679,15 +691,23 @@ class Dialcentral(object): def _on_notebook_switch_page(self, notebook, page, pageIndex): self._reset_tab_refresh() + + didRecentUpdate = False + didMessagesUpdate = False + if pageIndex == self.RECENT_TAB: - self._recentViews[self._selectedBackendId].update() + didRecentUpdate = self._recentViews[self._selectedBackendId].update() elif pageIndex == self.MESSAGES_TAB: - self._messagesViews[self._selectedBackendId].update() + didMessagesUpdate = self._messagesViews[self._selectedBackendId].update() elif pageIndex == self.CONTACTS_TAB: self._contactsViews[self._selectedBackendId].update() elif pageIndex == self.ACCOUNT_TAB: self._accountViews[self._selectedBackendId].update() + if didRecentUpdate or didMessagesUpdate: + if self._ledHandler is not None: + self._ledHandler.off() + def _set_tab_refresh(self, *args): pageIndex = self._notebook.get_current_page() child = self._notebook.get_nth_page(pageIndex) @@ -730,6 +750,9 @@ class Dialcentral(object): except ValueError, e: self._errorDisplay.push_exception() + if dialed: + self._dialpads[self._selectedBackendId].clear() + def _on_dial_clicked(self, number): assert number, "No number to call" try: @@ -790,13 +813,13 @@ def run_doctest(): def run_dialpad(): _lock_file = os.path.join(constants._data_path_, ".lock") - with gtk_toolbox.flock(_lock_file, 0): - gtk.gdk.threads_init() + #with gtk_toolbox.flock(_lock_file, 0): + gtk.gdk.threads_init() - if hildon is not None: - gtk.set_application_name(constants.__pretty_app_name__) - handle = Dialcentral() - gtk.main() + if hildon is not None: + gtk.set_application_name(constants.__pretty_app_name__) + handle = Dialcentral() + gtk.main() class DummyOptions(object):