+ if (response_id < EMP_NEW_MESSAGE_TEXT)
+ goto out;
+
+ individual = empathy_contact_chooser_dup_selected (
+ EMPATHY_CONTACT_CHOOSER (self->priv->chooser));
+ if (individual == NULL)
+ goto out;
+
+ switch (response_id)
+ {
+ case EMP_NEW_MESSAGE_TEXT:
+ contact = empathy_contact_dup_best_for_action (individual,
+ EMPATHY_ACTION_CHAT);
+ g_return_if_fail (contact != NULL);
+
+ empathy_chat_with_contact_id (empathy_contact_get_account (contact),
+ empathy_contact_get_id (contact),
+ empathy_get_current_action_time (),
+ ensure_text_channel_cb,
+ gtk_widget_get_parent_window (GTK_WIDGET (dialog)));
+ break;
+
+ case EMP_NEW_MESSAGE_SMS:
+ contact = empathy_contact_dup_best_for_action (individual,
+ EMPATHY_ACTION_SMS);
+ g_return_if_fail (contact != NULL);
+
+ empathy_sms_contact_id (empathy_contact_get_account (contact),
+ empathy_contact_get_id (contact),
+ empathy_get_current_action_time (),
+ ensure_text_channel_cb,
+ gtk_widget_get_parent_window (GTK_WIDGET (dialog)));
+ break;
+
+ default:
+ g_warn_if_reached ();
+ }
+
+out:
+ tp_clear_object (&individual);
+ tp_clear_object (&contact);
+ gtk_widget_destroy (GTK_WIDGET (dialog));