Various bug fixes and tweaks found through 0, 1, and 2
[gc-dialer] / src / gv_views.py
index d1a04b1..91f75d2 100644 (file)
@@ -96,6 +96,19 @@ def make_pretty(phonenumber):
        return prettynumber
 
 
+def abbrev_relative_date(date):
+       """
+       >>> abbrev_relative_date("42 hours ago")
+       '42 h'
+       >>> abbrev_relative_date("2 days ago")
+       '2 d'
+       >>> abbrev_relative_date("4 weeks ago")
+       '4 w'
+       """
+       parts = date.split(" ")
+       return "%s %s" % (parts[0], parts[1][0])
+
+
 class MergedAddressBook(object):
        """
        Merger of all addressbooks
@@ -583,7 +596,7 @@ class AccountInfo(object):
                self._onCallbackentryChangedId = 0
 
                self._notifyCheckbox = widgetTree.get_widget("notifyCheckbox")
-               self._minutesEntry = widgetTree.get_widget("minutesEntry")
+               self._minutesEntryButton = widgetTree.get_widget("minutesEntryButton")
                self._missedCheckbox = widgetTree.get_widget("missedCheckbox")
                self._voicemailCheckbox = widgetTree.get_widget("voicemailCheckbox")
                self._smsCheckbox = widgetTree.get_widget("smsCheckbox")
@@ -594,6 +607,7 @@ class AccountInfo(object):
                self._onSmsToggled = 0
                self._applyAlarmTimeoutId = None
 
+               self._window = gtk_toolbox.find_parent_window(self._minutesEntryButton)
                self._defaultCallback = ""
 
        def enable(self):
@@ -606,22 +620,20 @@ class AccountInfo(object):
                self._onCallbackentryChangedId = self._callbackCombo.get_child().connect("changed", self._on_callbackentry_changed)
 
                if self._alarmHandler is not None:
-                       self._minutesEntry.set_range(1, 60)
-
                        self._notifyCheckbox.set_active(self._alarmHandler.isEnabled)
-                       self._minutesEntry.set_value(self._alarmHandler.recurrence)
+                       self._minutesEntryButton.set_label("%d minutes" % self._alarmHandler.recurrence)
                        self._missedCheckbox.set_active(self._notifyOnMissed)
                        self._voicemailCheckbox.set_active(self._notifyOnVoicemail)
                        self._smsCheckbox.set_active(self._notifyOnSms)
 
                        self._onNotifyToggled = self._notifyCheckbox.connect("toggled", self._on_notify_toggled)
-                       self._onMinutesChanged = self._minutesEntry.connect("value-changed", self._on_minutes_changed)
+                       self._onMinutesChanged = self._minutesEntryButton.connect("clicked", self._on_minutes_changed)
                        self._onMissedToggled = self._missedCheckbox.connect("toggled", self._on_missed_toggled)
                        self._onVoicemailToggled = self._voicemailCheckbox.connect("toggled", self._on_voicemail_toggled)
                        self._onSmsToggled = self._smsCheckbox.connect("toggled", self._on_sms_toggled)
                else:
                        self._notifyCheckbox.set_sensitive(False)
-                       self._minutesEntry.set_sensitive(False)
+                       self._minutesEntryButton.set_sensitive(False)
                        self._missedCheckbox.set_sensitive(False)
                        self._voicemailCheckbox.set_sensitive(False)
                        self._smsCheckbox.set_sensitive(False)
@@ -634,7 +646,7 @@ class AccountInfo(object):
 
                if self._alarmHandler is not None:
                        self._notifyCheckbox.disconnect(self._onNotifyToggled)
-                       self._minutesEntry.disconnect(self._onMinutesChanged)
+                       self._minutesEntryButton.disconnect(self._onMinutesChanged)
                        self._missedCheckbox.disconnect(self._onNotifyToggled)
                        self._voicemailCheckbox.disconnect(self._onNotifyToggled)
                        self._smsCheckbox.disconnect(self._onNotifyToggled)
@@ -645,7 +657,7 @@ class AccountInfo(object):
                        self._onSmsToggled = 0
                else:
                        self._notifyCheckbox.set_sensitive(True)
-                       self._minutesEntry.set_sensitive(True)
+                       self._minutesEntryButton.set_sensitive(True)
                        self._missedCheckbox.set_sensitive(True)
                        self._voicemailCheckbox.set_sensitive(True)
                        self._smsCheckbox.set_sensitive(True)
@@ -742,16 +754,15 @@ class AccountInfo(object):
                except StandardError, e:
                        self._errorDisplay.push_exception()
 
-       def _update_alarm_settings(self):
+       def _update_alarm_settings(self, recurrence):
                try:
                        isEnabled = self._notifyCheckbox.get_active()
-                       recurrence = self._minutesEntry.get_value_as_int()
                        if isEnabled != self._alarmHandler.isEnabled or recurrence != self._alarmHandler.recurrence:
                                self._alarmHandler.apply_settings(isEnabled, recurrence)
                finally:
                        self.save_everything()
                        self._notifyCheckbox.set_active(self._alarmHandler.isEnabled)
-                       self._minutesEntry.set_value(self._alarmHandler.recurrence)
+                       self._minutesEntryButton.set_label("%d Minutes" % self._alarmHandler.recurrence)
 
        def _on_callbackentry_changed(self, *args):
                text = self.get_selected_callback_number()
@@ -765,15 +776,15 @@ class AccountInfo(object):
                self._applyAlarmTimeoutId = gobject.timeout_add(500, self._on_apply_timeout)
 
        def _on_minutes_changed(self, *args):
-               if self._applyAlarmTimeoutId is not None:
-                       gobject.source_remove(self._applyAlarmTimeoutId)
-                       self._applyAlarmTimeoutId = None
-               self._applyAlarmTimeoutId = gobject.timeout_add(500, self._on_apply_timeout)
+               recurrence = hildonize.request_number(
+                       self._window, "Minutes", (1, 50), self._alarmHandler.recurrence
+               )
+               self._update_alarm_settings(recurrence)
 
        def _on_apply_timeout(self, *args):
                self._applyAlarmTimeoutId = None
 
-               self._update_alarm_settings()
+               self._update_alarm_settings(self._alarmHandler.recurrence)
                return False
 
        def _on_missed_toggled(self, *args):
@@ -813,14 +824,12 @@ class RecentCallsView(object):
 
                textrenderer = gtk.CellRendererText()
                textrenderer.set_property("yalign", 0)
-               hildonize.set_cell_thumb_selectable(textrenderer)
                self._dateColumn = gtk.TreeViewColumn("Date")
                self._dateColumn.pack_start(textrenderer, expand=True)
                self._dateColumn.add_attribute(textrenderer, "text", self.DATE_IDX)
 
                textrenderer = gtk.CellRendererText()
                textrenderer.set_property("yalign", 0)
-               hildonize.set_cell_thumb_selectable(textrenderer)
                self._actionColumn = gtk.TreeViewColumn("Action")
                self._actionColumn.pack_start(textrenderer, expand=True)
                self._actionColumn.add_attribute(textrenderer, "text", self.ACTION_IDX)
@@ -917,6 +926,7 @@ class RecentCallsView(object):
                for personName, phoneNumber, date, action in recentItems:
                        if not personName:
                                personName = "Unknown"
+                       date = abbrev_relative_date(date)
                        prettyNumber = phoneNumber[2:] if phoneNumber.startswith("+1") else phoneNumber
                        prettyNumber = make_pretty(prettyNumber)
                        item = (prettyNumber, date, action.capitalize(), personName)
@@ -971,7 +981,6 @@ class MessagesView(object):
                self._onMessageviewRowActivatedId = 0
 
                self._messageRenderer = gtk.CellRendererText()
-               hildonize.set_cell_thumb_selectable(self._messageRenderer)
                self._messageRenderer.set_property("wrap-mode", pango.WRAP_WORD)
                self._messageRenderer.set_property("wrap-width", 500)
                self._messageColumn = gtk.TreeViewColumn("Messages")