From f21889c060a108c57ae3bd14332e6bf6c9cff009 Mon Sep 17 00:00:00 2001 From: epage Date: Sun, 3 Jan 2010 02:47:00 +0000 Subject: [PATCH] Adding filtering of history git-svn-id: file:///svnroot/gc-dialer/trunk@609 c39d3808-3fe2-4d86-a59f-b7f623ee9f21 --- src/dialcentral.glade | 66 +++++++++++++++++++++++++++++-------------------- src/gv_views.py | 62 +++++++++++++++++++++++++++++++++++++++++----- src/null_views.py | 6 ++--- support/builddeb.py | 1 + 4 files changed, 99 insertions(+), 36 deletions(-) diff --git a/src/dialcentral.glade b/src/dialcentral.glade index 7255694..e262c45 100644 --- a/src/dialcentral.glade +++ b/src/dialcentral.glade @@ -174,10 +174,10 @@ False False - - - + + + True @@ -200,10 +200,10 @@ False False - - - + + + True @@ -226,10 +226,10 @@ False False - - - + + + True @@ -252,10 +252,10 @@ False False - - - + + + True @@ -280,10 +280,10 @@ False False - - - + + + True @@ -308,11 +308,11 @@ False False - - - - + + + + True @@ -335,10 +335,10 @@ False False - - - + + + True @@ -363,11 +363,11 @@ False False - - - - + + + + True @@ -518,6 +518,18 @@ True vertical + + All + True + True + True + + + False + 0 + + + True True @@ -533,7 +545,7 @@ - 0 + 1 diff --git a/src/gv_views.py b/src/gv_views.py index 7fada58..b4b6262 100644 --- a/src/gv_views.py +++ b/src/gv_views.py @@ -812,6 +812,8 @@ class CallHistoryView(object): FROM_IDX = 3 FROM_ID_IDX = 4 + HISTORY_ITEM_TYPES = ["All", "Received", "Missed", "Placed"] + def __init__(self, widgetTree, backend, errorDisplay): self._errorDisplay = errorDisplay self._backend = backend @@ -824,6 +826,8 @@ class CallHistoryView(object): gobject.TYPE_STRING, # from gobject.TYPE_STRING, # from id ) + self._historymodelfiltered = self._historymodel.filter_new() + self._historymodelfiltered.set_visible_func(self._is_history_visible) self._historyview = widgetTree.get_widget("historyview") self._historyviewselection = None self._onRecentviewRowActivatedId = 0 @@ -859,6 +863,10 @@ class CallHistoryView(object): self._window = gtk_toolbox.find_parent_window(self._historyview) self._phoneTypeSelector = SmsEntryDialog(widgetTree) + self._historyFilterSelector = widgetTree.get_widget("historyFilterSelector") + self._historyFilterSelector.connect("clicked", self._on_history_filter_clicked) + self._selectedFilter = "All" + self._updateSink = gtk_toolbox.threaded_stage( gtk_toolbox.comap( self._idly_populate_historyview, @@ -868,7 +876,9 @@ class CallHistoryView(object): def enable(self): assert self._backend.is_authed(), "Attempting to enable backend while not logged in" - self._historyview.set_model(self._historymodel) + self._historyFilterSelector.set_label(self._selectedFilter) + + self._historyview.set_model(self._historymodelfiltered) self._historyview.set_fixed_height_mode(False) self._historyview.append_column(self._dateColumn) @@ -911,14 +921,32 @@ class CallHistoryView(object): def name(): return "Recent Calls" - def load_settings(self, config, section): - pass + def load_settings(self, config, sectionName): + try: + self._selectedFilter = config.get(sectionName, "filter") + if self._selectedFilter not in self.HISTORY_ITEM_TYPES: + self._messageType = self.HISTORY_ITEM_TYPES[0] + except ConfigParser.NoOptionError: + pass - def save_settings(self, config, section): + def save_settings(self, config, sectionName): """ @note Thread Agnostic """ - pass + config.set(sectionName, "filter", self._selectedFilter) + + def _is_history_visible(self, model, iter): + try: + action = model.get_value(iter, self.ACTION_IDX) + if action is None: + return False # this seems weird but oh well + + if self._selectedFilter in [action, "All"]: + return True + else: + return False + except Exception, e: + self._errorDisplay.push_exception() def _idly_populate_historyview(self): with gtk_toolbox.gtk_lock(): @@ -956,9 +984,31 @@ class CallHistoryView(object): return False + def _on_history_filter_clicked(self, *args, **kwds): + try: + selectedComboIndex = self.HISTORY_ITEM_TYPES.index(self._selectedFilter) + + try: + newSelectedComboIndex = hildonize.touch_selector( + self._window, + "History", + self.HISTORY_ITEM_TYPES, + selectedComboIndex, + ) + except RuntimeError: + return + + option = self.HISTORY_ITEM_TYPES[newSelectedComboIndex] + self._selectedFilter = option + self._historyFilterSelector.set_label(self._selectedFilter) + self._historymodelfiltered.refilter() + except Exception, e: + self._errorDisplay.push_exception() + def _on_historyview_row_activated(self, treeview, path, view_column): try: - itr = self._historymodel.get_iter(path) + childPath = self._historymodelfiltered.convert_path_to_child_path(path) + itr = self._historymodel.get_iter(childPath) if not itr: return diff --git a/src/null_views.py b/src/null_views.py index c385c8f..573433a 100644 --- a/src/null_views.py +++ b/src/null_views.py @@ -113,13 +113,13 @@ class AccountInfo(object): class CallHistoryView(object): def __init__(self, widgetTree): - pass + self._historyFilterSelector = widgetTree.get_widget("historyFilterSelector") def enable(self): - pass + self._historyFilterSelector.set_sensitive(False) def disable(self): - pass + self._historyFilterSelector.set_sensitive(True) def update(self, force = False): return False diff --git a/support/builddeb.py b/support/builddeb.py index 624b9fb..435f983 100755 --- a/support/builddeb.py +++ b/support/builddeb.py @@ -35,6 +35,7 @@ __changelog__ = """ * Sped up GV contacts * Remember if fullscreen (Ctrl+enter) in settings * Added Ctrl+w and Ctrl+q to quit +* Added a filter for the Call History * Bugfix: Messages tab not showing all of a message in Fremantle * Bugfix: When selecting a message, the wrong message is displayed in the Send SMS dialog -- 1.7.9.5