Adding an sms button to the dialpad
authorepage <eopage@byu.net>
Sat, 30 May 2009 21:01:18 +0000 (21:01 +0000)
committerepage <eopage@byu.net>
Sat, 30 May 2009 21:01:18 +0000 (21:01 +0000)
git-svn-id: file:///svnroot/gc-dialer/trunk@349 c39d3808-3fe2-4d86-a59f-b7f623ee9f21

src/dialcentral.glade
src/gc_views.py

index b8620b9..0052d33 100644 (file)
               <widget class="GtkVBox" id="keypad_vbox">
                 <property name="visible">True</property>
                 <child>
-                  <widget class="GtkLabel" id="numberdisplay">
-                    <property name="height_request">50</property>
+                  <widget class="GtkHBox" id="hbox3">
                     <property name="visible">True</property>
-                    <property name="label" translatable="yes">&lt;span size="35000" weight="bold"&gt;&lt;/span&gt;</property>
-                    <property name="use_markup">True</property>
-                    <property name="justify">center</property>
+                    <child>
+                      <widget class="GtkLabel" id="numberdisplay">
+                        <property name="height_request">50</property>
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">&lt;span size="35000" weight="bold"&gt;&lt;/span&gt;</property>
+                        <property name="use_markup">True</property>
+                        <property name="justify">center</property>
+                      </widget>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="back">
+                        <property name="label" translatable="yes">gtk-go-back</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="use_stock">True</property>
+                        <property name="focus_on_click">False</property>
+                        <signal name="pressed" handler="on_back_pressed"/>
+                        <signal name="clicked" handler="on_back_clicked"/>
+                        <signal name="released" handler="on_back_released"/>
+                        <accelerator key="BackSpace" signal="clicked"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
                   </widget>
                   <packing>
                     <property name="expand">False</property>
                         <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>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkButton" id="back">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="receives_default">False</property>
-                        <property name="focus_on_click">False</property>
-                        <signal name="pressed" handler="on_back_pressed"/>
-                        <signal name="clicked" handler="on_back_clicked"/>
-                        <signal name="released" handler="on_back_released"/>
-                        <accelerator key="BackSpace" signal="clicked"/>
-                        <child>
-                          <widget class="GtkHBox" id="hbox2">
-                            <property name="visible">True</property>
-                            <child>
-                              <widget class="GtkImage" id="image2">
-                                <property name="visible">True</property>
-                                <property name="xalign">1</property>
-                                <property name="stock">gtk-no</property>
-                              </widget>
-                              <packing>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <widget class="GtkLabel" id="label9">
-                                <property name="visible">True</property>
-                                <property name="xalign">0</property>
-                                <property name="xpad">5</property>
-                                <property name="label" translatable="yes">&lt;span size="17000" weight="Bold"&gt;Back&lt;/span&gt;</property>
-                                <property name="use_markup">True</property>
-                              </widget>
-                              <packing>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </widget>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="top_attach">3</property>
-                        <property name="bottom_attach">4</property>
-                      </packing>
-                    </child>
-                    <child>
                       <widget class="GtkButton" id="digit0">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="bottom_attach">4</property>
                       </packing>
                     </child>
+                    <child>
+                      <widget class="GtkButton" id="sms">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="on_sms_clicked"/>
+                        <accelerator key="Return" signal="clicked"/>
+                        <child>
+                          <widget class="GtkHBox" id="hbox2">
+                            <property name="visible">True</property>
+                            <child>
+                              <widget class="GtkImage" id="image2">
+                                <property name="visible">True</property>
+                                <property name="xalign">1</property>
+                                <property name="stock">gtk-file</property>
+                              </widget>
+                              <packing>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label1">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="xpad">5</property>
+                                <property name="label" translatable="yes">&lt;span size="17000" weight="bold"&gt;SMS&lt;/span&gt;</property>
+                                <property name="use_markup">True</property>
+                              </widget>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="top_attach">3</property>
+                        <property name="bottom_attach">4</property>
+                      </packing>
+                    </child>
                   </widget>
                   <packing>
                     <property name="position">1</property>
index 6c2411e..472c0e3 100644 (file)
@@ -255,7 +255,7 @@ class PhoneTypeSelector(object):
                self._widgetTree = widgetTree
 
                self._dialog = self._widgetTree.get_widget("phonetype_dialog")
-               self._smsDialog = SmsEntryDialog(self._widgetTree, self._gcBackend)
+               self._smsDialog = SmsEntryDialog(self._widgetTree)
 
                self._smsButton = self._widgetTree.get_widget("sms_button")
                self._smsButton.connect("clicked", self._on_phonetype_send_sms)
@@ -369,8 +369,7 @@ class SmsEntryDialog(object):
 
        MAX_CHAR = 160
 
-       def __init__(self, widgetTree, gcBackend):
-               self._gcBackend = gcBackend
+       def __init__(self, widgetTree):
                self._widgetTree = widgetTree
                self._dialog = self._widgetTree.get_widget("smsDialog")
 
@@ -410,7 +409,7 @@ class SmsEntryDialog(object):
                else:
                        enteredMessage = ""
 
-               return enteredMessage
+               return enteredMessage.strip()
 
        def _update_letter_count(self, *args):
                entryLength = self._smsEntry.get_buffer().get_char_count()
@@ -435,6 +434,8 @@ class Dialpad(object):
 
        def __init__(self, widgetTree, errorDisplay):
                self._errorDisplay = errorDisplay
+               self._smsDialog = SmsEntryDialog(widgetTree)
+
                self._numberdisplay = widgetTree.get_widget("numberdisplay")
                self._dialButton = widgetTree.get_widget("dial")
                self._phonenumber = ""
@@ -443,6 +444,7 @@ class Dialpad(object):
 
                callbackMapping = {
                        "on_dial_clicked": self._on_dial_clicked,
+                       "on_sms_clicked": self._on_sms_clicked,
                        "on_digit_clicked": self._on_digit_clicked,
                        "on_clear_number": self._on_clear_number,
                        "on_back_clicked": self._on_backspace,
@@ -451,6 +453,8 @@ class Dialpad(object):
                }
                widgetTree.signal_autoconnect(callbackMapping)
 
+               self._window = gtk_toolbox.find_parent_window(self._numberdisplay)
+
        def enable(self):
                self._dialButton.grab_focus()
 
@@ -493,6 +497,19 @@ class Dialpad(object):
                """
                pass
 
+       def _on_sms_clicked(self, widget):
+               action = PhoneTypeSelector.ACTION_SEND_SMS
+               phoneNumber = self.get_number()
+
+               message = self._smsDialog.run(phoneNumber, "", self._window)
+               if not message:
+                       phoneNumber = ""
+                       action = PhoneTypeSelector.ACTION_CANCEL
+
+               if action == PhoneTypeSelector.ACTION_CANCEL:
+                       return
+               self.number_selected(action, phoneNumber, message)
+
        def _on_dial_clicked(self, widget):
                action = PhoneTypeSelector.ACTION_DIAL
                phoneNumber = self.get_number()