From afdca8a81d71ab9c78780dabea1e651a9a4ccebb Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Thu, 20 Dec 2007 13:39:37 +0000 Subject: Simplify empaty_window_present, empathy_window_iconify and empathy_window_is_visible stuff svn path=/trunk/; revision=491 --- libempathy-gtk/empathy-new-message-dialog.c | 65 +++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 8 deletions(-) (limited to 'libempathy-gtk/empathy-new-message-dialog.c') diff --git a/libempathy-gtk/empathy-new-message-dialog.c b/libempathy-gtk/empathy-new-message-dialog.c index 908f8f16e..7a3fd9731 100644 --- a/libempathy-gtk/empathy-new-message-dialog.c +++ b/libempathy-gtk/empathy-new-message-dialog.c @@ -31,6 +31,7 @@ #include #include +#include #include #include @@ -46,23 +47,32 @@ typedef struct { GtkWidget *table_contact; GtkWidget *account_chooser; GtkWidget *entry_id; + GtkWidget *button_validate; + GtkWidget *button_voip; } EmpathyNewMessageDialog; - static void new_message_dialog_response_cb (GtkWidget *widget, - gint response, + gint response, EmpathyNewMessageDialog *dialog) { + McAccount *account; + const gchar *id; + + account = empathy_account_chooser_get_account (EMPATHY_ACCOUNT_CHOOSER (dialog->account_chooser)); + id = gtk_entry_get_text (GTK_ENTRY (dialog->entry_id)); + if (!account || G_STR_EMPTY (id)) { + if (account) { + g_object_unref (account); + } + gtk_widget_destroy (widget); + return; + } + if (response == GTK_RESPONSE_OK) { MissionControl *mc; - McAccount *account; - const gchar *id; - account = empathy_account_chooser_get_account (EMPATHY_ACCOUNT_CHOOSER (dialog->account_chooser)); - id = gtk_entry_get_text (GTK_ENTRY (dialog->entry_id)); mc = empathy_mission_control_new (); - mission_control_request_channel_with_string_handle (mc, account, TP_IFACE_CHANNEL_TYPE_TEXT, @@ -70,12 +80,45 @@ new_message_dialog_response_cb (GtkWidget *widget, TP_HANDLE_TYPE_CONTACT, NULL, NULL); g_object_unref (mc); - g_object_unref (account); + } + else if (response == 3) { + EmpathyContactFactory *factory; + EmpathyContact *contact = NULL; + + factory = empathy_contact_factory_new (); + contact = empathy_contact_factory_get_from_id (factory, + account, + id); + if (contact) { + empathy_call_contact (contact); + } else { + empathy_debug (DEBUG_DOMAIN, + "Contact ID %s does not exists", + id); + } + + g_object_unref (contact); + g_object_unref (factory); } + g_object_unref (account); gtk_widget_destroy (widget); } +static void +new_message_change_state_button_cb (GtkEditable *editable, + EmpathyNewMessageDialog *dialog) +{ + const gchar *id; + gboolean sensitive; + + id = gtk_entry_get_text (GTK_ENTRY (editable)); + sensitive = !G_STR_EMPTY (id); + + gtk_widget_set_sensitive(dialog->button_validate, sensitive); + gtk_widget_set_sensitive(dialog->button_voip, sensitive); +} + static void new_message_dialog_destroy_cb (GtkWidget *widget, EmpathyNewMessageDialog *dialog) @@ -102,12 +145,15 @@ empathy_new_message_dialog_show (GtkWindow *parent) "new_message_dialog", &dialog->dialog, "table_contact", &dialog->table_contact, "entry_id", &dialog->entry_id, + "button_validate", &dialog->button_validate, + "button_voip",&dialog->button_voip, NULL); empathy_glade_connect (glade, dialog, "new_message_dialog", "destroy", new_message_dialog_destroy_cb, "new_message_dialog", "response", new_message_dialog_response_cb, + "entry_id", "changed", new_message_change_state_button_cb, NULL); g_object_add_weak_pointer (G_OBJECT (dialog->dialog), (gpointer) &dialog); @@ -129,6 +175,9 @@ empathy_new_message_dialog_show (GtkWindow *parent) GTK_WINDOW (parent)); } + gtk_widget_set_sensitive(dialog->button_validate, FALSE); + gtk_widget_set_sensitive(dialog->button_voip, FALSE); + gtk_widget_show (dialog->dialog); return dialog->dialog; -- cgit v1.2.3