<property name="receives_default">False</property>
<property name="focus_on_click">False</property>
<signal name="clicked" handler="on_digit_clicked"/>
- <accelerator key="2" signal="clicked"/>
- <accelerator key="a" signal="clicked"/>
- <accelerator key="b" signal="clicked"/>
<accelerator key="c" signal="clicked"/>
+ <accelerator key="b" signal="clicked"/>
+ <accelerator key="a" signal="clicked"/>
+ <accelerator key="2" signal="clicked"/>
<child>
<widget class="GtkLabel" id="label10">
<property name="visible">True</property>
<property name="receives_default">False</property>
<property name="focus_on_click">False</property>
<signal name="clicked" handler="on_digit_clicked"/>
- <accelerator key="3" signal="clicked"/>
- <accelerator key="d" signal="clicked"/>
- <accelerator key="e" signal="clicked"/>
<accelerator key="f" signal="clicked"/>
+ <accelerator key="e" signal="clicked"/>
+ <accelerator key="d" signal="clicked"/>
+ <accelerator key="3" signal="clicked"/>
<child>
<widget class="GtkLabel" id="label11">
<property name="visible">True</property>
<property name="receives_default">False</property>
<property name="focus_on_click">False</property>
<signal name="clicked" handler="on_digit_clicked"/>
- <accelerator key="4" signal="clicked"/>
- <accelerator key="g" signal="clicked"/>
- <accelerator key="h" signal="clicked"/>
<accelerator key="i" signal="clicked"/>
+ <accelerator key="h" signal="clicked"/>
+ <accelerator key="g" signal="clicked"/>
+ <accelerator key="4" signal="clicked"/>
<child>
<widget class="GtkLabel" id="label13">
<property name="visible">True</property>
<property name="receives_default">False</property>
<property name="focus_on_click">False</property>
<signal name="clicked" handler="on_digit_clicked"/>
- <accelerator key="5" signal="clicked"/>
- <accelerator key="j" signal="clicked"/>
- <accelerator key="k" signal="clicked"/>
<accelerator key="l" signal="clicked"/>
+ <accelerator key="k" signal="clicked"/>
+ <accelerator key="j" signal="clicked"/>
+ <accelerator key="5" signal="clicked"/>
<child>
<widget class="GtkLabel" id="label14">
<property name="visible">True</property>
<property name="receives_default">False</property>
<property name="focus_on_click">False</property>
<signal name="clicked" handler="on_digit_clicked"/>
- <accelerator key="6" signal="clicked"/>
- <accelerator key="m" signal="clicked"/>
- <accelerator key="n" signal="clicked"/>
<accelerator key="o" signal="clicked"/>
+ <accelerator key="n" signal="clicked"/>
+ <accelerator key="m" signal="clicked"/>
+ <accelerator key="6" signal="clicked"/>
<child>
<widget class="GtkLabel" id="label15">
<property name="visible">True</property>
<property name="receives_default">False</property>
<property name="focus_on_click">False</property>
<signal name="clicked" handler="on_digit_clicked"/>
- <accelerator key="7" signal="clicked"/>
- <accelerator key="p" signal="clicked"/>
- <accelerator key="q" signal="clicked"/>
- <accelerator key="r" signal="clicked"/>
<accelerator key="s" signal="clicked"/>
+ <accelerator key="r" signal="clicked"/>
+ <accelerator key="q" signal="clicked"/>
+ <accelerator key="p" signal="clicked"/>
+ <accelerator key="7" signal="clicked"/>
<child>
<widget class="GtkLabel" id="label16">
<property name="visible">True</property>
<property name="receives_default">False</property>
<property name="focus_on_click">False</property>
<signal name="clicked" handler="on_digit_clicked"/>
- <accelerator key="8" signal="clicked"/>
- <accelerator key="t" signal="clicked"/>
- <accelerator key="u" signal="clicked"/>
<accelerator key="v" signal="clicked"/>
+ <accelerator key="u" signal="clicked"/>
+ <accelerator key="t" signal="clicked"/>
+ <accelerator key="8" signal="clicked"/>
<child>
<widget class="GtkLabel" id="label17">
<property name="visible">True</property>
<property name="receives_default">False</property>
<property name="focus_on_click">False</property>
<signal name="clicked" handler="on_digit_clicked"/>
- <accelerator key="9" signal="clicked"/>
- <accelerator key="w" signal="clicked"/>
- <accelerator key="x" signal="clicked"/>
- <accelerator key="y" signal="clicked"/>
<accelerator key="z" signal="clicked"/>
+ <accelerator key="y" signal="clicked"/>
+ <accelerator key="x" signal="clicked"/>
+ <accelerator key="w" signal="clicked"/>
+ <accelerator key="9" signal="clicked"/>
<child>
<widget class="GtkLabel" id="label18">
<property name="visible">True</property>
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
+ <widget class="GtkButton" id="historyFilterSelector">
+ <property name="label" translatable="yes">All</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
<widget class="GtkScrolledWindow" id="history_scrolledwindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
</child>
</widget>
<packing>
- <property name="position">0</property>
+ <property name="position">1</property>
</packing>
</child>
</widget>
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
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
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,
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)
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():
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