From: epage Date: Sat, 10 Oct 2009 13:37:11 +0000 (+0000) Subject: Giving access to all of a contacts numbers from recent and messages tabs; Increased... X-Git-Url: http://vcs.maemo.org/git/?a=commitdiff_plain;h=7004be81dc06b998063f78ac2b401736d70cdb59;p=gc-dialer Giving access to all of a contacts numbers from recent and messages tabs; Increased size of sms dialog git-svn-id: file:///svnroot/gc-dialer/trunk@514 c39d3808-3fe2-4d86-a59f-b7f623ee9f21 --- diff --git a/src/dialcentral.glade b/src/dialcentral.glade index c437659..db7bb56 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 @@ -1066,6 +1066,7 @@ + False 3 diff --git a/src/gv_backend.py b/src/gv_backend.py index dc1d865..1561b60 100644 --- a/src/gv_backend.py +++ b/src/gv_backend.py @@ -615,6 +615,7 @@ def decorate_recent(recentCallData): """ @returns (personsName, phoneNumber, date, action) """ + contactId = recentCallData["contactId"] if recentCallData["name"]: header = recentCallData["name"] elif recentCallData["prettyNumber"]: @@ -627,10 +628,11 @@ def decorate_recent(recentCallData): number = recentCallData["number"] relTime = recentCallData["relTime"] action = recentCallData["action"] - return header, number, relTime, action + return contactId, header, number, relTime, action def decorate_message(messageData): + contactId = messageData["contactId"] exactTime = messageData["time"] if messageData["name"]: header = messageData["name"] @@ -652,7 +654,7 @@ def decorate_message(messageData): for messagePart in messageParts ] - decoratedResults = header, number, relativeTime, messages + decoratedResults = contactId, header, number, relativeTime, messages return decoratedResults diff --git a/src/gv_views.py b/src/gv_views.py index a4fec0e..bf12585 100644 --- a/src/gv_views.py +++ b/src/gv_views.py @@ -302,7 +302,7 @@ class SmsEntryDialog(object): self._numberIndex = -1 self._contactDetails = [] - def run(self, contactDetails, messages = (), parent = None): + def run(self, contactDetails, messages = (), parent = None, defaultIndex = -1): entryConnectId = self._smsEntry.get_buffer().connect("changed", self._on_entry_changed) phoneConnectId = self._phoneButton.connect("clicked", self._on_phone) keyConnectId = self._keyPressEventId = self._dialog.connect("key-press-event", self._on_key_press) @@ -314,8 +314,8 @@ class SmsEntryDialog(object): row = (phoneNumber, display) self._contactDetails.append(row) if 0 < len(self._contactDetails): - self._numberIndex = 0 - self._phoneButton.set_label(self._contactDetails[0][1]) + self._numberIndex = defaultIndex if defaultIndex != -1 else 0 + self._phoneButton.set_label(self._contactDetails[self._numberIndex][1]) else: self._numberIndex = -1 self._phoneButton.set_label("Error: No Number Available") @@ -352,6 +352,8 @@ class SmsEntryDialog(object): if parent is not None: self._dialog.set_transient_for(parent) + parentSize = parent.get_size() + self._dialog.resize(parentSize[0], max(parentSize[1]-50, 100)) # Run try: @@ -361,7 +363,8 @@ class SmsEntryDialog(object): self._smsEntry.grab_focus() if 1 < len(self._contactDetails): - self._request_number() + if defaultIndex == -1: + self._request_number() self._phoneButton.set_sensitive(True) else: self._phoneButton.set_sensitive(False) @@ -891,6 +894,7 @@ class RecentCallsView(object): DATE_IDX = 1 ACTION_IDX = 2 FROM_IDX = 3 + FROM_ID_IDX = 4 def __init__(self, widgetTree, backend, errorDisplay): self._errorDisplay = errorDisplay @@ -902,6 +906,7 @@ class RecentCallsView(object): gobject.TYPE_STRING, # date gobject.TYPE_STRING, # action gobject.TYPE_STRING, # from + gobject.TYPE_STRING, # from id ) self._recentview = widgetTree.get_widget("recentview") self._recentviewselection = None @@ -955,7 +960,7 @@ class RecentCallsView(object): self._recentview.append_column(self._numberColumn) self._recentview.append_column(self._nameColumn) self._recentviewselection = self._recentview.get_selection() - self._recentviewselection.set_mode(gtk.SELECTION_NONE) + self._recentviewselection.set_mode(gtk.SELECTION_SINGLE) self._onRecentviewRowActivatedId = self._recentview.connect("row-activated", self._on_recentview_row_activated) @@ -1018,13 +1023,13 @@ class RecentCallsView(object): for data in gv_backend.sort_messages(recentItems) ) - for personName, phoneNumber, date, action in recentItems: + for contactId, 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) + item = (prettyNumber, date, action.capitalize(), personName, contactId) with gtk_toolbox.gtk_lock(): self._recentmodel.append(item) except Exception, e: @@ -1043,13 +1048,33 @@ class RecentCallsView(object): number = self._recentmodel.get_value(itr, self.NUMBER_IDX) number = make_ugly(number) - contactPhoneNumbers = [("Phone", number)] description = self._recentmodel.get_value(itr, self.FROM_IDX) + contactId = self._recentmodel.get_value(itr, self.FROM_ID_IDX) + if contactId: + contactPhoneNumbers = list(self._backend.get_contact_details(contactId)) + defaultMatches = [ + (number == make_ugly(contactNumber) or number[1:] == make_ugly(contactNumber)) + for (numberDescription, contactNumber) in contactPhoneNumbers + ] + try: + defaultIndex = defaultMatches.index(True) + except ValueError: + contactPhoneNumbers.append(("Other", number)) + defaultIndex = len(contactPhoneNumbers)-1 + _moduleLogger.warn( + "Could not find contact %r's number %s among %r" % ( + contactId, number, contactPhoneNumbers + ) + ) + else: + contactPhoneNumbers = [("Phone", number)] + defaultIndex = -1 action, phoneNumber, message = self._phoneTypeSelector.run( contactPhoneNumbers, messages = (description, ), parent = self._window, + defaultIndex = defaultIndex, ) if action == SmsEntryDialog.ACTION_CANCEL: return @@ -1068,6 +1093,7 @@ class MessagesView(object): HEADER_IDX = 2 MESSAGE_IDX = 3 MESSAGES_IDX = 4 + FROM_ID_IDX = 5 def __init__(self, widgetTree, backend, errorDisplay): self._errorDisplay = errorDisplay @@ -1080,6 +1106,7 @@ class MessagesView(object): gobject.TYPE_STRING, # header gobject.TYPE_STRING, # message object, # messages + gobject.TYPE_STRING, # from id ) self._messageview = widgetTree.get_widget("messages_view") self._messageviewselection = None @@ -1111,7 +1138,7 @@ class MessagesView(object): self._messageview.append_column(self._messageColumn) self._messageviewselection = self._messageview.get_selection() - self._messageviewselection.set_mode(gtk.SELECTION_NONE) + self._messageviewselection.set_mode(gtk.SELECTION_SINGLE) self._onMessageviewRowActivatedId = self._messageview.connect("row-activated", self._on_messageview_row_activated) @@ -1173,7 +1200,7 @@ class MessagesView(object): for message in gv_backend.sort_messages(messageItems) ) - for header, number, relativeDate, messages in messageItems: + for contactId, header, number, relativeDate, messages in messageItems: prettyNumber = number[2:] if number.startswith("+1") else number prettyNumber = make_pretty(prettyNumber) @@ -1190,7 +1217,7 @@ class MessagesView(object): number = make_ugly(number) - row = (number, relativeDate, header, "\n".join(collapsedMessages), expandedMessages) + row = number, relativeDate, header, "\n".join(collapsedMessages), expandedMessages, contactId with gtk_toolbox.gtk_lock(): self._messagemodel.append(row) except Exception, e: @@ -1207,13 +1234,35 @@ class MessagesView(object): if not itr: return - contactPhoneNumbers = [("Phone", self._messagemodel.get_value(itr, self.NUMBER_IDX))] + number = make_ugly(self._messagemodel.get_value(itr, self.NUMBER_IDX)) description = self._messagemodel.get_value(itr, self.MESSAGES_IDX) + contactId = self._messagemodel.get_value(itr, self.FROM_ID_IDX) + if contactId: + contactPhoneNumbers = list(self._backend.get_contact_details(contactId)) + defaultMatches = [ + (number == make_ugly(contactNumber) or number[1:] == make_ugly(contactNumber)) + for (numberDescription, contactNumber) in contactPhoneNumbers + ] + try: + defaultIndex = defaultMatches.index(True) + except ValueError: + contactPhoneNumbers.append(("Other", number)) + defaultIndex = len(contactPhoneNumbers)-1 + _moduleLogger.warn( + "Could not find contact %r's number %s among %r" % ( + contactId, number, contactPhoneNumbers + ) + ) + else: + contactPhoneNumbers = [("Phone", number)] + defaultIndex = -1 + action, phoneNumber, message = self._phoneTypeSelector.run( contactPhoneNumbers, messages = description, parent = self._window, + defaultIndex = defaultIndex, ) if action == SmsEntryDialog.ACTION_CANCEL: return @@ -1279,7 +1328,7 @@ class ContactsView(object): self._contactsview.set_fixed_height_mode(True) self._contactsview.append_column(self._contactColumn) self._contactsviewselection = self._contactsview.get_selection() - self._contactsviewselection.set_mode(gtk.SELECTION_NONE) + self._contactsviewselection.set_mode(gtk.SELECTION_SINGLE) del self._booksList[:] for (factoryId, bookId), (factoryName, bookName) in self.get_addressbooks(): diff --git a/src/hildonize.py b/src/hildonize.py index 74cdb41..bef2d3a 100644 --- a/src/hildonize.py +++ b/src/hildonize.py @@ -508,7 +508,7 @@ def _null_touch_selector(parent, title, items, defaultIndex = -1): treeView.set_model(model) treeView.append_column(column) selection = treeView.get_selection() - selection.set_mode(gtk.SELECTION_NONE) + selection.set_mode(gtk.SELECTION_SINGLE) if 0 < defaultIndex: selection.select_path((defaultIndex, )) @@ -622,7 +622,7 @@ def _null_touch_selector_entry(parent, title, items, defaultItem): treeView.set_model(model) treeView.append_column(column) selection = treeView.get_selection() - selection.set_mode(gtk.SELECTION_NONE) + selection.set_mode(gtk.SELECTION_SINGLE) scrolledWin = gtk.ScrolledWindow() scrolledWin.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) diff --git a/support/builddeb.py b/support/builddeb.py index f7c260b..b614792 100755 --- a/support/builddeb.py +++ b/support/builddeb.py @@ -26,11 +26,12 @@ __changelog__ = """ * Sped up various login cases * Added descriptions to the callback numbers * Collapsed conversations in the messages tab +* Give access to all of a contacts numbers when launching dialog from Recent or Messages tabs * UI Tweak: Added more login status notifications * UI Tweak: When no characters are entered, you can't send a text -* UI Tweak: Switched to TreeView's using no selection to match Fremantle * UI Tweak: Trying to consolidate dialogs by combining phone selection and SMS entry * UI Tweak: Removed "Select" button from SMS Dialog +* UI Tweak: Increased the size of the SMS dialog * Bug Fix: Expanded the types of the Enter key that are supported for going to full screen * Bug Fix: Random people were reporting login issues * Bug Fix: Hardened against issues with grabbing possible callback numbers