From 0d855afa3332adeb5947104a78b7ed01cce7851d Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Tue, 15 Jan 2013 07:19:37 +1100 Subject: [PATCH] sendsms: provide access to contacts When viewing a message, we can now 'call' the correspondent or go to the contacts app with a search for the correspondent. --- sms/sendsms.py | 89 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 70 insertions(+), 19 deletions(-) diff --git a/sms/sendsms.py b/sms/sendsms.py index ad9de15..ca31918 100755 --- a/sms/sendsms.py +++ b/sms/sendsms.py @@ -1266,17 +1266,6 @@ class SendSMS(gtk.Window): self.view_button = self.add_button(h, 'View', self.view) self.reply = self.add_button(h, 'New', self.open) - h = gtk.HBox() ; h.show() - h.set_size_request(-1,80) - h.set_homogeneous(True) - v.pack_end(h, expand=False) - self.buttonA = self.add_button(h, 'Sent', self.rotate_list, 'A') - self.buttonB = self.add_button(h, 'Recv', self.rotate_list, 'B') - - - self.last_response = gtk.Label('') - v.pack_end(self.last_response, expand = False) - h = gtk.HBox() ; h.show() v.pack_start(h, expand=False) b = gtk.Button("clr") ; b.show() @@ -1300,7 +1289,22 @@ class SendSMS(gtk.Window): self.listview.assign_colour('bg-1', 'pink') self.listview.assign_colour('bg-selected', 'white') - v.add(self.listview) + self.listbox = gtk.VBox() + self.listbox.add(self.listview) + v.add(self.listbox) + self.listbox.show() + + + bb = gtk.HBox() ; bb.show() + bb.set_size_request(-1,80) + bb.set_homogeneous(True) + self.listbox.pack_end(bb, expand=False) + self.buttonA = self.add_button(bb, 'Sent', self.rotate_list, 'A') + self.buttonB = self.add_button(bb, 'Recv', self.rotate_list, 'B') + + + self.last_response = gtk.Label('') + self.listbox.pack_end(self.last_response, expand = False) self.singleview = gtk.TextView() self.singleview.modify_font(self.button_font) @@ -1309,10 +1313,20 @@ class SendSMS(gtk.Window): sw = gtk.ScrolledWindow() sw.add(self.singleview) sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) - sw.hide() - v.add(sw) + sw.show() self.singlescroll = sw - + + self.singlebox = gtk.VBox() + self.singlebox.add(sw) + self.singlebox.hide() + v.add(self.singlebox) + + bb = gtk.HBox() ; bb.show() + bb.set_size_request(-1,80) + bb.set_homogeneous(True) + self.singlebox.pack_end(bb, expand=False) + self.add_button(bb, 'Call', self.docall) + self.add_button(bb, 'Contacts', self.contacts) main.show() return main @@ -1480,8 +1494,8 @@ class SendSMS(gtk.Window): if self.viewing: w.child.set_text('View') self.viewing = False - self.singlescroll.hide() - self.listview.show() + self.singlebox.hide() + self.listbox.show() if self.listview.smslist and len(self.listview.smslist ) >= 1: s = self.listview.smslist[self.listview.selected] if s.state == 'NEW': @@ -1496,7 +1510,7 @@ class SendSMS(gtk.Window): w.child.set_text('List') self.viewing = True self.last_response.hide() - self.listview.hide() + self.listbox.hide() if self.book: n = book_name(self.book, s.correspondent) if n and n[0]: @@ -1514,7 +1528,7 @@ class SendSMS(gtk.Window): t += '\n' t += s.text self.singleview.get_buffer().set_text(t) - self.singlescroll.show() + self.singlebox.show() if s.source == 'LOCAL': self.reply.child.set_text('Open') @@ -1600,6 +1614,43 @@ class SendSMS(gtk.Window): def got_new(self): self.rotate_list(self, target = 'New') + def get_contact(self): + if not self.listview.smslist or len(self.listview.smslist ) < 1: + return None + s = self.listview.smslist[self.listview.selected] + return s.correspondent + + def docall(self, b): + send_number('voice-dial', self.get_contact()) + + def contacts(self, b): + send_number('contact-find', self.get_contact()) + +sel_number = None +clips = {} +def clip_get_data(clip, sel, info, data): + global sel_number + print 'get clip data', sel_number + if sel_number: + sel.set_text(sel_number) +def clip_clear_data(clip, data): + global sel_number + print 'clear clip data', clip.wait_for_text() + sel_number = None + +def send_number(sel, num): + global sel_number, clips + if not num: + return + sel_number = num + if sel not in clips: + clips[sel] = gtk.Clipboard(selection = sel) + c = clips[sel] + c.set_with_data([(gtk.gdk.SELECTION_TYPE_STRING, 0, 0)], + clip_get_data, clip_clear_data, None) + + + def main(args): for p in ['/data','/media/card','/var/tmp']: if os.path.exists(p): -- 2.39.5