]> git.0d.be Git - empathy.git/commitdiff
Add an SMS button to the new-message dialog
authorDanielle Madeley <danielle.madeley@collabora.co.uk>
Tue, 12 Apr 2011 06:23:49 +0000 (16:23 +1000)
committerDanielle Madeley <danielle.madeley@collabora.co.uk>
Thu, 5 May 2011 06:31:27 +0000 (16:31 +1000)
libempathy-gtk/empathy-new-message-dialog.c

index b9edb93e7b949344bc4e6c32ead373ad82f26b36..81b532b377ea486362308effdc16a16caae3de28 100644 (file)
@@ -62,21 +62,40 @@ G_DEFINE_TYPE(EmpathyNewMessageDialog, empathy_new_message_dialog,
  * to be started with any contact on any enabled account.
  */
 
+enum
+{
+  EMP_NEW_MESSAGE_TEXT,
+  EMP_NEW_MESSAGE_SMS,
+};
+
 static void
 empathy_new_message_dialog_response (GtkDialog *dialog, int response_id)
 {
   TpAccount *account;
   const gchar *contact_id;
 
-  if (response_id != GTK_RESPONSE_ACCEPT) goto out;
+  if (response_id < EMP_NEW_MESSAGE_TEXT) goto out;
 
   contact_id = empathy_contact_selector_dialog_get_selected (
       EMPATHY_CONTACT_SELECTOR_DIALOG (dialog), NULL, &account);
 
   if (EMP_STR_EMPTY (contact_id) || account == NULL) goto out;
 
-  empathy_chat_with_contact_id (account, contact_id,
-      gtk_get_current_event_time ());
+  switch (response_id)
+    {
+      case EMP_NEW_MESSAGE_TEXT:
+        empathy_chat_with_contact_id (account, contact_id,
+            gtk_get_current_event_time ());
+        break;
+
+      case EMP_NEW_MESSAGE_SMS:
+        empathy_sms_contact_id (account, contact_id,
+            gtk_get_current_event_time ());
+        break;
+
+      default:
+        g_warn_if_reached ();
+    }
 
 out:
   gtk_widget_destroy (GTK_WIDGET (dialog));
@@ -165,8 +184,19 @@ empathy_new_message_dialog_init (EmpathyNewMessageDialog *dialog)
 {
   EmpathyContactSelectorDialog *parent = EMPATHY_CONTACT_SELECTOR_DIALOG (
         dialog);
+  GtkWidget *button;
   GtkWidget *image;
 
+  /* add an SMS button */
+  button = gtk_button_new_with_mnemonic (_("_SMS"));
+  image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_SMS,
+      GTK_ICON_SIZE_BUTTON);
+  gtk_button_set_image (GTK_BUTTON (button), image);
+
+  gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button,
+      EMP_NEW_MESSAGE_SMS);
+  gtk_widget_show (button);
+
   /* add chat button */
   parent->button_action = gtk_button_new_with_mnemonic (_("C_hat"));
   image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_NEW_MESSAGE,
@@ -174,9 +204,14 @@ empathy_new_message_dialog_init (EmpathyNewMessageDialog *dialog)
   gtk_button_set_image (GTK_BUTTON (parent->button_action), image);
 
   gtk_dialog_add_action_widget (GTK_DIALOG (dialog), parent->button_action,
-      GTK_RESPONSE_ACCEPT);
+      EMP_NEW_MESSAGE_TEXT);
   gtk_widget_show (parent->button_action);
 
+  /* the parent class will update the sensitivity of button_action, propagate
+   * it */
+  g_object_bind_property (parent->button_action, "sensitive",
+      button, "sensitive", G_BINDING_SYNC_CREATE);
+
   /* Tweak the dialog */
   gtk_window_set_title (GTK_WINDOW (dialog), _("New Conversation"));
   gtk_window_set_role (GTK_WINDOW (dialog), "new_message");