From d86e51de57197b0f0ce77fac46fc113713aa9033 Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Fri, 4 May 2012 14:53:34 +0200 Subject: Turn EmpathyAccountWidget to a proper GtkWidget https://bugzilla.gnome.org/show_bug.cgi?id=640417 --- libempathy-gtk/empathy-account-widget-irc.c | 10 +- libempathy-gtk/empathy-account-widget-irc.h | 6 +- libempathy-gtk/empathy-account-widget-private.h | 2 - libempathy-gtk/empathy-account-widget-sip.c | 4 +- libempathy-gtk/empathy-account-widget-sip.h | 2 +- libempathy-gtk/empathy-account-widget.c | 156 +++++++++++---------- libempathy-gtk/empathy-account-widget.h | 6 +- .../empathy-local-xmpp-assistant-widget.c | 17 +-- libempathy-gtk/empathy-new-account-dialog.c | 30 ++-- src/empathy-accounts-dialog.c | 52 +++---- 10 files changed, 139 insertions(+), 146 deletions(-) diff --git a/libempathy-gtk/empathy-account-widget-irc.c b/libempathy-gtk/empathy-account-widget-irc.c index d7282b198..a4343e161 100644 --- a/libempathy-gtk/empathy-account-widget-irc.c +++ b/libempathy-gtk/empathy-account-widget-irc.c @@ -139,7 +139,8 @@ entry_password_changed_cb (GtkEntry *entry, EmpathyIrcNetworkChooser * empathy_account_widget_irc_build (EmpathyAccountWidget *self, const char *filename, - GtkWidget **table_common_settings) + GtkWidget **table_common_settings, + GtkWidget **box) { EmpathyAccountWidgetIrc *settings; EmpathyAccountSettings *ac_settings; @@ -151,7 +152,7 @@ empathy_account_widget_irc_build (EmpathyAccountWidget *self, self->ui_details->gui = empathy_builder_get_file (filename, "table_irc_settings", table_common_settings, - "vbox_irc", &self->ui_details->widget, + "vbox_irc", box, "table_irc_settings", &settings->vbox_settings, "entry_password", &entry_password, NULL); @@ -204,7 +205,8 @@ empathy_account_widget_irc_build (EmpathyAccountWidget *self, EmpathyIrcNetworkChooser * empathy_account_widget_irc_build_simple (EmpathyAccountWidget *self, - const char *filename) + const char *filename, + GtkWidget **box) { EmpathyAccountWidgetIrc *settings; EmpathyAccountSettings *ac_settings; @@ -214,7 +216,7 @@ empathy_account_widget_irc_build_simple (EmpathyAccountWidget *self, settings->self = self; self->ui_details->gui = empathy_builder_get_file (filename, - "vbox_irc_simple", &self->ui_details->widget, + "vbox_irc_simple", box, "alignment_network_simple", &alignment, NULL); diff --git a/libempathy-gtk/empathy-account-widget-irc.h b/libempathy-gtk/empathy-account-widget-irc.h index cc5dfff27..bcd45b76a 100644 --- a/libempathy-gtk/empathy-account-widget-irc.h +++ b/libempathy-gtk/empathy-account-widget-irc.h @@ -30,11 +30,13 @@ G_BEGIN_DECLS EmpathyIrcNetworkChooser * empathy_account_widget_irc_build ( EmpathyAccountWidget *self, const char *filename, - GtkWidget **table_common_settings); + GtkWidget **table_common_settings, + GtkWidget **box); EmpathyIrcNetworkChooser * empathy_account_widget_irc_build_simple ( EmpathyAccountWidget *self, - const char *filename); + const char *filename, + GtkWidget **box); G_END_DECLS diff --git a/libempathy-gtk/empathy-account-widget-private.h b/libempathy-gtk/empathy-account-widget-private.h index db8dc7ddf..988b09883 100644 --- a/libempathy-gtk/empathy-account-widget-private.h +++ b/libempathy-gtk/empathy-account-widget-private.h @@ -29,8 +29,6 @@ G_BEGIN_DECLS struct _EmpathyAccountWidgetUIDetails { - GtkWidget *widget; - GtkBuilder *gui; char *default_focus; diff --git a/libempathy-gtk/empathy-account-widget-sip.c b/libempathy-gtk/empathy-account-widget-sip.c index ed2f44529..8aa4e89d1 100644 --- a/libempathy-gtk/empathy-account-widget-sip.c +++ b/libempathy-gtk/empathy-account-widget-sip.c @@ -108,7 +108,7 @@ checkbutton_tel_toggled ( empathy_account_widget_changed (sip_settings->self); } -void +GtkWidget * empathy_account_widget_sip_build (EmpathyAccountWidget *self, const char *filename, GtkWidget **grid_common_settings) @@ -265,5 +265,5 @@ empathy_account_widget_sip_build (EmpathyAccountWidget *self, gtk_widget_show (settings->combobox_keep_alive_mechanism); } - self->ui_details->widget = vbox_settings; + return vbox_settings; } diff --git a/libempathy-gtk/empathy-account-widget-sip.h b/libempathy-gtk/empathy-account-widget-sip.h index 7673a5bfd..84e96e7b6 100644 --- a/libempathy-gtk/empathy-account-widget-sip.h +++ b/libempathy-gtk/empathy-account-widget-sip.h @@ -26,7 +26,7 @@ G_BEGIN_DECLS -void empathy_account_widget_sip_build (EmpathyAccountWidget *self, +GtkWidget * empathy_account_widget_sip_build (EmpathyAccountWidget *self, const char *filename, GtkWidget **grid_common_settings); diff --git a/libempathy-gtk/empathy-account-widget.c b/libempathy-gtk/empathy-account-widget.c index 7494fa0a0..6848c87ed 100644 --- a/libempathy-gtk/empathy-account-widget.c +++ b/libempathy-gtk/empathy-account-widget.c @@ -50,7 +50,7 @@ #define DEBUG_FLAG EMPATHY_DEBUG_ACCOUNT #include -G_DEFINE_TYPE (EmpathyAccountWidget, empathy_account_widget, G_TYPE_OBJECT) +G_DEFINE_TYPE (EmpathyAccountWidget, empathy_account_widget, GTK_TYPE_BOX) typedef enum { @@ -1049,15 +1049,15 @@ account_widget_settings_ready_cb (EmpathyAccountSettings *settings, account_widget_setup_generic (self); } -static void +static GtkWidget * account_widget_build_generic (EmpathyAccountWidget *self, const char *filename) { - GtkWidget *expander_advanced; + GtkWidget *expander_advanced, *box; self->ui_details->gui = empathy_builder_get_file (filename, "grid_common_settings", &self->priv->grid_common_settings, - "vbox_generic_settings", &self->ui_details->widget, + "vbox_generic_settings", &box, "expander_advanced_settings", &expander_advanced, NULL); @@ -1071,17 +1071,19 @@ account_widget_build_generic (EmpathyAccountWidget *self, else g_signal_connect (self->priv->settings, "notify::ready", G_CALLBACK (account_widget_settings_ready_cb), self); + + return box; } -static void +static GtkWidget * account_widget_build_salut (EmpathyAccountWidget *self, const char *filename) { - GtkWidget *expander_advanced; + GtkWidget *expander_advanced, *box; self->ui_details->gui = empathy_builder_get_file (filename, "grid_common_settings", &self->priv->grid_common_settings, - "vbox_salut_settings", &self->ui_details->widget, + "vbox_salut_settings", &box, "expander_advanced_settings", &expander_advanced, NULL); @@ -1098,12 +1100,16 @@ account_widget_build_salut (EmpathyAccountWidget *self, gtk_widget_hide (expander_advanced); self->ui_details->default_focus = g_strdup ("entry_first_name"); + + return box; } -static void +static GtkWidget * account_widget_build_irc (EmpathyAccountWidget *self, const char *filename) { + GtkWidget *box; + empathy_account_settings_set_regex (self->priv->settings, "account", ACCOUNT_REGEX_IRC); empathy_account_settings_set_regex (self->priv->settings, "username", @@ -1112,20 +1118,24 @@ account_widget_build_irc (EmpathyAccountWidget *self, if (self->priv->simple) { self->priv->irc_network_chooser = empathy_account_widget_irc_build_simple - (self, filename); + (self, filename, &box); } else { self->priv->irc_network_chooser = empathy_account_widget_irc_build (self, - filename, &self->priv->grid_common_settings); + filename, &self->priv->grid_common_settings, &box); } + + return box; } -static void +static GtkWidget * account_widget_build_sip (EmpathyAccountWidget *self, const char *filename) { - empathy_account_widget_sip_build (self, filename, + GtkWidget *box; + + box = empathy_account_widget_sip_build (self, filename, &self->priv->grid_common_settings); if (self->priv->simple) @@ -1139,19 +1149,23 @@ account_widget_build_sip (EmpathyAccountWidget *self, self->priv->remember_password_widget = GTK_WIDGET ( gtk_builder_get_object (self->ui_details->gui, "remember_password")); } + + return box; } -static void +static GtkWidget * account_widget_build_msn (EmpathyAccountWidget *self, const char *filename) { + GtkWidget *box; + empathy_account_settings_set_regex (self->priv->settings, "account", ACCOUNT_REGEX_MSN); if (self->priv->simple) { self->ui_details->gui = empathy_builder_get_file (filename, - "vbox_msn_simple", &self->ui_details->widget, + "vbox_msn_simple", &box, NULL); empathy_account_widget_handle_params (self, @@ -1169,7 +1183,7 @@ account_widget_build_msn (EmpathyAccountWidget *self, { self->ui_details->gui = empathy_builder_get_file (filename, "grid_common_msn_settings", &self->priv->grid_common_settings, - "vbox_msn_settings", &self->ui_details->widget, + "vbox_msn_settings", &box, NULL); empathy_account_widget_handle_params (self, @@ -1184,6 +1198,8 @@ account_widget_build_msn (EmpathyAccountWidget *self, self->priv->remember_password_widget = GTK_WIDGET ( gtk_builder_get_object (self->ui_details->gui, "remember_password")); } + + return box; } static void @@ -1277,7 +1293,7 @@ account_widget_get_service (EmpathyAccountWidget *self) return NO_SERVICE; } -static void +static GtkWidget * account_widget_build_jabber (EmpathyAccountWidget *self, const char *filename) { @@ -1289,6 +1305,7 @@ account_widget_build_jabber (EmpathyAccountWidget *self, GtkWidget *label_example; GtkWidget *expander_advanced; GtkWidget *entry_id; + GtkWidget *box; Service service; service = account_widget_get_service (self); @@ -1300,7 +1317,7 @@ account_widget_build_jabber (EmpathyAccountWidget *self, { /* Simple widget for XMPP */ self->ui_details->gui = empathy_builder_get_file (filename, - "vbox_jabber_simple", &self->ui_details->widget, + "vbox_jabber_simple", &box, "label_id_simple", &label_id, "label_id_create", &label_id_create, "label_password_simple", &label_password, @@ -1331,7 +1348,7 @@ account_widget_build_jabber (EmpathyAccountWidget *self, { /* Simple widget for Google Talk */ self->ui_details->gui = empathy_builder_get_file (filename, - "vbox_gtalk_simple", &self->ui_details->widget, + "vbox_gtalk_simple", &box, NULL); empathy_account_widget_handle_params (self, @@ -1349,7 +1366,7 @@ account_widget_build_jabber (EmpathyAccountWidget *self, { /* Simple widget for Facebook */ self->ui_details->gui = empathy_builder_get_file (filename, - "vbox_fb_simple", &self->ui_details->widget, + "vbox_fb_simple", &box, "entry_id_fb_simple", &entry_id, NULL); @@ -1372,7 +1389,7 @@ account_widget_build_jabber (EmpathyAccountWidget *self, /* Full widget for XMPP, Google Talk and Facebook*/ self->ui_details->gui = empathy_builder_get_file (filename, "grid_common_settings", &self->priv->grid_common_settings, - "vbox_jabber_settings", &self->ui_details->widget, + "vbox_jabber_settings", &box, "spinbutton_port", &spinbutton_port, "checkbutton_ssl", &checkbutton_ssl, "label_username_f_example", &label_example_fb, @@ -1434,13 +1451,16 @@ account_widget_build_jabber (EmpathyAccountWidget *self, if (!info.show_advanced) gtk_widget_hide (expander_advanced); } + + return box; } -static void +static GtkWidget * account_widget_build_icq (EmpathyAccountWidget *self, const char *filename) { GtkWidget *spinbutton_port; + GtkWidget *box; empathy_account_settings_set_regex (self->priv->settings, "account", ACCOUNT_REGEX_ICQ); @@ -1448,7 +1468,7 @@ account_widget_build_icq (EmpathyAccountWidget *self, if (self->priv->simple) { self->ui_details->gui = empathy_builder_get_file (filename, - "vbox_icq_simple", &self->ui_details->widget, + "vbox_icq_simple", &box, NULL); empathy_account_widget_handle_params (self, @@ -1466,7 +1486,7 @@ account_widget_build_icq (EmpathyAccountWidget *self, { self->ui_details->gui = empathy_builder_get_file (filename, "grid_common_settings", &self->priv->grid_common_settings, - "vbox_icq_settings", &self->ui_details->widget, + "vbox_icq_settings", &box, "spinbutton_port", &spinbutton_port, NULL); @@ -1483,18 +1503,20 @@ account_widget_build_icq (EmpathyAccountWidget *self, self->priv->remember_password_widget = GTK_WIDGET ( gtk_builder_get_object (self->ui_details->gui, "remember_password")); } + + return box; } -static void +static GtkWidget * account_widget_build_aim (EmpathyAccountWidget *self, const char *filename) { - GtkWidget *spinbutton_port; + GtkWidget *spinbutton_port, *box; if (self->priv->simple) { self->ui_details->gui = empathy_builder_get_file (filename, - "vbox_aim_simple", &self->ui_details->widget, + "vbox_aim_simple", &box, NULL); empathy_account_widget_handle_params (self, @@ -1512,7 +1534,7 @@ account_widget_build_aim (EmpathyAccountWidget *self, { self->ui_details->gui = empathy_builder_get_file (filename, "grid_common_settings", &self->priv->grid_common_settings, - "vbox_aim_settings", &self->ui_details->widget, + "vbox_aim_settings", &box, "spinbutton_port", &spinbutton_port, NULL); @@ -1528,19 +1550,23 @@ account_widget_build_aim (EmpathyAccountWidget *self, self->priv->remember_password_widget = GTK_WIDGET ( gtk_builder_get_object (self->ui_details->gui, "remember_password")); } + + return box; } -static void +static GtkWidget * account_widget_build_yahoo (EmpathyAccountWidget *self, const char *filename) { + GtkWidget *box; + empathy_account_settings_set_regex (self->priv->settings, "account", ACCOUNT_REGEX_YAHOO); if (self->priv->simple) { self->ui_details->gui = empathy_builder_get_file (filename, - "vbox_yahoo_simple", &self->ui_details->widget, + "vbox_yahoo_simple", &box, NULL); empathy_account_widget_handle_params (self, @@ -1558,7 +1584,7 @@ account_widget_build_yahoo (EmpathyAccountWidget *self, { self->ui_details->gui = empathy_builder_get_file (filename, "grid_common_settings", &self->priv->grid_common_settings, - "vbox_yahoo_settings", &self->ui_details->widget, + "vbox_yahoo_settings", &box, NULL); empathy_account_widget_handle_params (self, @@ -1575,16 +1601,20 @@ account_widget_build_yahoo (EmpathyAccountWidget *self, self->priv->remember_password_widget = GTK_WIDGET ( gtk_builder_get_object (self->ui_details->gui, "remember_password")); } + + return box; } -static void +static GtkWidget * account_widget_build_groupwise (EmpathyAccountWidget *self, const char *filename) { + GtkWidget *box; + if (self->priv->simple) { self->ui_details->gui = empathy_builder_get_file (filename, - "vbox_groupwise_simple", &self->ui_details->widget, + "vbox_groupwise_simple", &box, NULL); empathy_account_widget_handle_params (self, @@ -1602,7 +1632,7 @@ account_widget_build_groupwise (EmpathyAccountWidget *self, { self->ui_details->gui = empathy_builder_get_file (filename, "grid_common_groupwise_settings", &self->priv->grid_common_settings, - "vbox_groupwise_settings", &self->ui_details->widget, + "vbox_groupwise_settings", &box, NULL); empathy_account_widget_handle_params (self, @@ -1617,16 +1647,8 @@ account_widget_build_groupwise (EmpathyAccountWidget *self, self->priv->remember_password_widget = GTK_WIDGET ( gtk_builder_get_object (self->ui_details->gui, "remember_password")); } -} - -static void -account_widget_destroy_cb (GtkWidget *widget, - EmpathyAccountWidget *self) -{ - /* set the destroyed flag - workaround */ - self->priv->destroyed = TRUE; - g_object_unref (self); + return box; } void @@ -1788,7 +1810,6 @@ add_register_buttons (EmpathyAccountWidget *self, { const TpConnectionManagerProtocol *protocol; GtkWidget *radiobutton_register; - GtkWidget *vbox = self->ui_details->widget; if (!self->priv->creating_account) return; @@ -1813,11 +1834,11 @@ add_register_buttons (EmpathyAccountWidget *self, GTK_RADIO_BUTTON (self->priv->radiobutton_reuse)), _("Create a new account on the server")); - gtk_box_pack_start (GTK_BOX (vbox), self->priv->radiobutton_reuse, FALSE, + gtk_box_pack_start (GTK_BOX (self), self->priv->radiobutton_reuse, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (vbox), radiobutton_register, FALSE, FALSE, 0); - gtk_box_reorder_child (GTK_BOX (vbox), self->priv->radiobutton_reuse, 0); - gtk_box_reorder_child (GTK_BOX (vbox), radiobutton_register, 1); + gtk_box_pack_start (GTK_BOX (self), radiobutton_register, FALSE, FALSE, 0); + gtk_box_reorder_child (GTK_BOX (self), self->priv->radiobutton_reuse, 0); + gtk_box_reorder_child (GTK_BOX (self), radiobutton_register, 1); gtk_widget_show (self->priv->radiobutton_reuse); gtk_widget_show (radiobutton_register); } @@ -1873,7 +1894,7 @@ do_constructed (GObject *obj) const gchar *cm_name; const gchar *protocol; const char *file; - void (*func)(EmpathyAccountWidget *self, const gchar *filename); + GtkWidget * (*func)(EmpathyAccountWidget *self, const gchar *filename); } widgets [] = { { "salut", "local-xmpp", "empathy-account-widget-local-xmpp.ui", account_widget_build_salut }, @@ -1887,6 +1908,7 @@ do_constructed (GObject *obj) WIDGET (sofiasip, sip), }; const gchar *protocol, *cm_name; + GtkWidget *box; account = empathy_account_settings_get_account (self->priv->settings); @@ -1902,7 +1924,7 @@ do_constructed (GObject *obj) filename = empathy_file_lookup (widgets[i].file, "libempathy-gtk"); - widgets[i].func (self, filename); + box = widgets[i].func (self, filename); g_free (filename); break; @@ -1913,10 +1935,12 @@ do_constructed (GObject *obj) { gchar *filename = empathy_file_lookup ( "empathy-account-widget-generic.ui", "libempathy-gtk"); - account_widget_build_generic (self, filename); + box = account_widget_build_generic (self, filename); g_free (filename); } + gtk_container_add (GTK_CONTAINER (self), box); + /* handle default focus */ if (self->ui_details->default_focus != NULL) { @@ -1994,7 +2018,7 @@ do_constructed (GObject *obj) gtk_box_pack_end (GTK_BOX (self->priv->hbox_buttons), self->priv->cancel_button, TRUE, TRUE, 3); - gtk_box_pack_end (GTK_BOX (self->ui_details->widget), self->priv->hbox_buttons, FALSE, + gtk_box_pack_end (GTK_BOX (self), self->priv->hbox_buttons, FALSE, FALSE, 3); g_signal_connect (self->priv->cancel_button, "clicked", @@ -2016,16 +2040,7 @@ do_constructed (GObject *obj) add_register_buttons (self, account); - /* hook up to widget destruction to unref ourselves */ - g_signal_connect (self->ui_details->widget, "destroy", - G_CALLBACK (account_widget_destroy_cb), self); - - if (self->ui_details->gui != NULL) - { - empathy_builder_unref_and_keep_widget (self->ui_details->gui, - self->ui_details->widget); - self->ui_details->gui = NULL; - } + g_clear_object (&self->ui_details->gui); display_name = empathy_account_settings_get_display_name ( self->priv->settings); @@ -2180,28 +2195,19 @@ empathy_account_widget_handle_params (EmpathyAccountWidget *self, va_end (args); } -GtkWidget * -empathy_account_widget_get_widget (EmpathyAccountWidget *widget) -{ - return widget->ui_details->widget; -} - EmpathyAccountWidget * empathy_account_widget_new_for_protocol (EmpathyAccountSettings *settings, gboolean simple) { - EmpathyAccountWidget *self; - g_return_val_if_fail (EMPATHY_IS_ACCOUNT_SETTINGS (settings), NULL); - self = g_object_new - (EMPATHY_TYPE_ACCOUNT_WIDGET, - "settings", settings, "simple", simple, + return g_object_new (EMPATHY_TYPE_ACCOUNT_WIDGET, + "orientation", GTK_ORIENTATION_VERTICAL, + "settings", settings, + "simple", simple, "creating-account", - empathy_account_settings_get_account (settings) == NULL, + empathy_account_settings_get_account (settings) == NULL, NULL); - - return self; } gchar * diff --git a/libempathy-gtk/empathy-account-widget.h b/libempathy-gtk/empathy-account-widget.h index 5279d75f2..acc8a051a 100644 --- a/libempathy-gtk/empathy-account-widget.h +++ b/libempathy-gtk/empathy-account-widget.h @@ -46,7 +46,7 @@ typedef struct _EmpathyAccountWidgetPriv EmpathyAccountWidgetPriv; typedef struct _EmpathyAccountWidgetUIDetails EmpathyAccountWidgetUIDetails; typedef struct { - GObject parent; + GtkBox parent; EmpathyAccountWidgetUIDetails *ui_details; @@ -54,13 +54,11 @@ typedef struct { } EmpathyAccountWidget; typedef struct { - GObjectClass parent_class; + GtkBoxClass parent_class; } EmpathyAccountWidgetClass; GType empathy_account_widget_get_type (void); -GtkWidget *empathy_account_widget_get_widget (EmpathyAccountWidget *widget); - EmpathyAccountWidget * empathy_account_widget_new_for_protocol ( EmpathyAccountSettings *settings, gboolean simple); diff --git a/libempathy-gtk/empathy-local-xmpp-assistant-widget.c b/libempathy-gtk/empathy-local-xmpp-assistant-widget.c index 9caca7de9..cf3803928 100644 --- a/libempathy-gtk/empathy-local-xmpp-assistant-widget.c +++ b/libempathy-gtk/empathy-local-xmpp-assistant-widget.c @@ -137,8 +137,7 @@ empathy_local_xmpp_assistant_widget_constructed (GObject *object) object; GtkWidget *w; GdkPixbuf *pix; - GtkWidget *account_widget; - EmpathyAccountWidget *widget_object; + EmpathyAccountWidget *account_widget; gchar *markup; G_OBJECT_CLASS (empathy_local_xmpp_assistant_widget_parent_class)-> @@ -165,17 +164,15 @@ empathy_local_xmpp_assistant_widget_constructed (GObject *object) self->priv->settings = create_salut_account_settings (); - widget_object = empathy_account_widget_new_for_protocol (self->priv->settings, - TRUE); - empathy_account_widget_hide_buttons (widget_object); + account_widget = empathy_account_widget_new_for_protocol ( + self->priv->settings, TRUE); + empathy_account_widget_hide_buttons (account_widget); - account_widget = empathy_account_widget_get_widget (widget_object); - - g_signal_connect (widget_object, "handle-apply", + g_signal_connect (account_widget, "handle-apply", G_CALLBACK (handle_apply_cb), self); - gtk_grid_attach (GTK_GRID (self), account_widget, 0, 1, 2, 1); - gtk_widget_show (account_widget); + gtk_grid_attach (GTK_GRID (self), GTK_WIDGET (account_widget), 0, 1, 2, 1); + gtk_widget_show (GTK_WIDGET (account_widget)); w = gtk_label_new (NULL); markup = g_strdup_printf ( diff --git a/libempathy-gtk/empathy-new-account-dialog.c b/libempathy-gtk/empathy-new-account-dialog.c index cab22ea4d..180cc4198 100644 --- a/libempathy-gtk/empathy-new-account-dialog.c +++ b/libempathy-gtk/empathy-new-account-dialog.c @@ -34,11 +34,10 @@ G_DEFINE_TYPE (EmpathyNewAccountDialog, empathy_new_account_dialog, \ struct _EmpathyNewAccountDialogPrivate { GtkWidget *chooser; - GtkWidget *current_account_widget; + EmpathyAccountWidget *current_account_widget; GtkWidget *main_vbox; GtkWidget *connect_button; - EmpathyAccountWidget *current_widget_object; EmpathyAccountSettings *settings; }; @@ -62,8 +61,7 @@ protocol_changed_cb (GtkComboBox *chooser, EmpathyNewAccountDialog *self) { EmpathyAccountSettings *settings; - GtkWidget *account_widget; - EmpathyAccountWidget *widget_object; + EmpathyAccountWidget *account_widget; gchar *password = NULL, *account = NULL; settings = empathy_protocol_chooser_create_account_settings ( @@ -84,45 +82,43 @@ protocol_changed_cb (GtkComboBox *chooser, g_object_unref (self->priv->settings); } - widget_object = empathy_account_widget_new_for_protocol (settings, TRUE); - account_widget = empathy_account_widget_get_widget (widget_object); + account_widget = empathy_account_widget_new_for_protocol (settings, TRUE); if (self->priv->current_account_widget != NULL) { - g_signal_handlers_disconnect_by_func (self->priv->current_widget_object, + g_signal_handlers_disconnect_by_func (self->priv->current_account_widget, account_created_cb, self); - g_signal_handlers_disconnect_by_func (self->priv->current_widget_object, + g_signal_handlers_disconnect_by_func (self->priv->current_account_widget, cancelled_cb, self); - gtk_widget_destroy (self->priv->current_account_widget); + gtk_widget_destroy (GTK_WIDGET (self->priv->current_account_widget)); } self->priv->current_account_widget = account_widget; - self->priv->current_widget_object = widget_object; self->priv->settings = settings; - g_signal_connect (self->priv->current_widget_object, "account-created", + g_signal_connect (self->priv->current_account_widget, "account-created", G_CALLBACK (account_created_cb), self); - g_signal_connect (self->priv->current_widget_object, "cancelled", + g_signal_connect (self->priv->current_account_widget, "cancelled", G_CALLBACK (cancelled_cb), self); /* Restore "account" and "password" parameters in the new widget */ if (account != NULL) { - empathy_account_widget_set_account_param (widget_object, account); + empathy_account_widget_set_account_param (account_widget, account); g_free (account); } if (password != NULL) { - empathy_account_widget_set_password_param (widget_object, password); + empathy_account_widget_set_password_param (account_widget, password); g_free (password); } - gtk_box_pack_start (GTK_BOX (self->priv->main_vbox), account_widget, - FALSE, FALSE, 0); - gtk_widget_show (account_widget); + gtk_box_pack_start (GTK_BOX (self->priv->main_vbox), + GTK_WIDGET (account_widget), FALSE, FALSE, 0); + gtk_widget_show (GTK_WIDGET (account_widget)); } static void diff --git a/src/empathy-accounts-dialog.c b/src/empathy-accounts-dialog.c index a0d101c38..9c5715bc0 100644 --- a/src/empathy-accounts-dialog.c +++ b/src/empathy-accounts-dialog.c @@ -123,7 +123,7 @@ typedef struct { * That's kinda ugly; cf bgo #640417. * * */ - EmpathyAccountWidget *setting_widget_object; + EmpathyAccountWidget *setting_widget; gboolean connecting_show; guint connecting_id; @@ -540,7 +540,7 @@ empathy_account_dialog_cancel (EmpathyAccountsDialog *dialog) COL_ACCOUNT_SETTINGS, &settings, COL_ACCOUNT, &account, -1); - empathy_account_widget_discard_pending_changes (priv->setting_widget_object); + empathy_account_widget_discard_pending_changes (priv->setting_widget); if (account == NULL) { @@ -580,7 +580,7 @@ accounts_dialog_has_valid_accounts (EmpathyAccountsDialog *dialog) GtkTreeIter iter; gboolean creating; - g_object_get (priv->setting_widget_object, + g_object_get (priv->setting_widget, "creating-account", &creating, NULL); if (!creating) @@ -599,7 +599,7 @@ account_dialog_create_edit_params_dialog (EmpathyAccountsDialog *dialog) { EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog); EmpathyAccountSettings *settings; - GtkWidget *subdialog, *content, *content_area, *align; + GtkWidget *subdialog, *content_area, *align; settings = accounts_dialog_model_get_selected_settings (dialog); if (settings == NULL) @@ -610,22 +610,20 @@ account_dialog_create_edit_params_dialog (EmpathyAccountsDialog *dialog) GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, NULL, NULL); - priv->setting_widget_object = + priv->setting_widget = (EmpathyAccountWidget *) empathy_account_widget_new_for_protocol (settings, FALSE); - g_object_add_weak_pointer (G_OBJECT (priv->setting_widget_object), - (gpointer *) &priv->setting_widget_object); + g_object_add_weak_pointer (G_OBJECT (priv->setting_widget), + (gpointer *) &priv->setting_widget); if (accounts_dialog_has_valid_accounts (dialog)) empathy_account_widget_set_other_accounts_exist ( - priv->setting_widget_object, TRUE); + priv->setting_widget, TRUE); - content = empathy_account_widget_get_widget (priv->setting_widget_object); - - g_signal_connect (priv->setting_widget_object, "cancelled", + g_signal_connect (priv->setting_widget, "cancelled", G_CALLBACK (empathy_account_dialog_widget_cancelled_cb), dialog); - g_signal_connect_swapped (priv->setting_widget_object, "close", + g_signal_connect_swapped (priv->setting_widget, "close", G_CALLBACK (gtk_widget_destroy), subdialog); content_area = gtk_dialog_get_content_area (GTK_DIALOG (subdialog)); @@ -633,10 +631,10 @@ account_dialog_create_edit_params_dialog (EmpathyAccountsDialog *dialog) align = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_alignment_set_padding (GTK_ALIGNMENT (align), 6, 0, 6, 6); - gtk_container_add (GTK_CONTAINER (align), content); + gtk_container_add (GTK_CONTAINER (align), GTK_WIDGET (priv->setting_widget)); gtk_box_pack_start (GTK_BOX (content_area), align, TRUE, TRUE, 0); - gtk_widget_show (content); + gtk_widget_show (GTK_WIDGET (priv->setting_widget)); gtk_widget_show (align); gtk_widget_show (subdialog); } @@ -826,10 +824,6 @@ account_dialog_create_dialog_content (EmpathyAccountsDialog *dialog, account = empathy_account_settings_get_account (settings); - // if (priv->setting_widget_object != NULL) - // g_object_remove_weak_pointer (G_OBJECT (priv->setting_widget_object), - // (gpointer *) &priv->setting_widget_object); - priv->dialog_content = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_container_add (GTK_CONTAINER (priv->alignment_settings), priv->dialog_content); @@ -929,9 +923,9 @@ accounts_dialog_has_pending_change (EmpathyAccountsDialog *dialog, if (gtk_tree_selection_get_selected (selection, &model, &iter)) gtk_tree_model_get (model, &iter, COL_ACCOUNT, account, -1); - return priv->setting_widget_object != NULL + return priv->setting_widget != NULL && empathy_account_widget_contains_pending_changes ( - priv->setting_widget_object); + priv->setting_widget); } static void @@ -1475,9 +1469,9 @@ accounts_dialog_model_selection_changed (GtkTreeSelection *selection, if (settings != NULL) g_object_unref (settings); - if (priv->setting_widget_object != NULL) + if (priv->setting_widget != NULL) { - g_object_get (priv->setting_widget_object, + g_object_get (priv->setting_widget, "creating-account", &creating, NULL); } @@ -1506,7 +1500,7 @@ accounts_dialog_selection_change_response_cb (GtkDialog *message_dialog, priv->force_change_row = TRUE; empathy_account_widget_discard_pending_changes ( - priv->setting_widget_object); + priv->setting_widget); path = gtk_tree_row_reference_get_path (priv->destination_row); selection = gtk_tree_view_get_selection ( @@ -2043,11 +2037,11 @@ accounts_dialog_accounts_model_row_inserted_cb (GtkTreeModel *model, { EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog); - if (priv->setting_widget_object != NULL && + if (priv->setting_widget != NULL && accounts_dialog_has_valid_accounts (dialog)) { empathy_account_widget_set_other_accounts_exist ( - priv->setting_widget_object, TRUE); + priv->setting_widget, TRUE); } } @@ -2058,11 +2052,11 @@ accounts_dialog_accounts_model_row_deleted_cb (GtkTreeModel *model, { EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog); - if (priv->setting_widget_object != NULL && + if (priv->setting_widget != NULL && !accounts_dialog_has_valid_accounts (dialog)) { empathy_account_widget_set_other_accounts_exist ( - priv->setting_widget_object, FALSE); + priv->setting_widget, FALSE); } } @@ -2744,10 +2738,10 @@ empathy_accounts_dialog_is_creating (EmpathyAccountsDialog *dialog) EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog); gboolean result = FALSE; - if (priv->setting_widget_object == NULL) + if (priv->setting_widget == NULL) goto out; - g_object_get (priv->setting_widget_object, + g_object_get (priv->setting_widget, "creating-account", &result, NULL); out: -- cgit v1.2.3