diff options
author | Xavier Claessens <xclaesse@src.gnome.org> | 2007-12-20 21:39:37 +0800 |
---|---|---|
committer | Xavier Claessens <xclaesse@src.gnome.org> | 2007-12-20 21:39:37 +0800 |
commit | afdca8a81d71ab9c78780dabea1e651a9a4ccebb (patch) | |
tree | 01b8684b6a1b6a89d40dbd880cc3e533c2db8c61 /libempathy-gtk/empathy-new-message-dialog.c | |
parent | 511f857fef39819c913d06538836b46d68b6e832 (diff) | |
download | gsoc2013-empathy-afdca8a81d71ab9c78780dabea1e651a9a4ccebb.tar gsoc2013-empathy-afdca8a81d71ab9c78780dabea1e651a9a4ccebb.tar.gz gsoc2013-empathy-afdca8a81d71ab9c78780dabea1e651a9a4ccebb.tar.bz2 gsoc2013-empathy-afdca8a81d71ab9c78780dabea1e651a9a4ccebb.tar.lz gsoc2013-empathy-afdca8a81d71ab9c78780dabea1e651a9a4ccebb.tar.xz gsoc2013-empathy-afdca8a81d71ab9c78780dabea1e651a9a4ccebb.tar.zst gsoc2013-empathy-afdca8a81d71ab9c78780dabea1e651a9a4ccebb.zip |
Simplify empaty_window_present, empathy_window_iconify and empathy_window_is_visible stuff
svn path=/trunk/; revision=491
Diffstat (limited to 'libempathy-gtk/empathy-new-message-dialog.c')
-rw-r--r-- | libempathy-gtk/empathy-new-message-dialog.c | 65 |
1 files changed, 57 insertions, 8 deletions
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 <libmissioncontrol/mc-account.h> #include <libmissioncontrol/mission-control.h> +#include <libempathy/empathy-contact-factory.h> #include <libempathy/empathy-debug.h> #include <libempathy/empathy-utils.h> @@ -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,13 +80,46 @@ 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; |