]> git.neil.brown.name Git - plato.git/commitdiff
sendsms: provide access to contacts
authorNeilBrown <neilb@suse.de>
Mon, 14 Jan 2013 20:19:37 +0000 (07:19 +1100)
committerNeilBrown <neilb@suse.de>
Mon, 14 Jan 2013 20:19:37 +0000 (07:19 +1100)
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

index ad9de158123e6130bc240951170b4436705e42b3..ca31918ae92aaebf753902855a41b5a617f80f44 100755 (executable)
@@ -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):