From c6e40cfec95a7f0bef133a96b74220a9bd295c72 Mon Sep 17 00:00:00 2001 From: Cosimo Cecchi Date: Mon, 27 Jul 2009 01:17:25 +0200 Subject: Use telepathy style --- libempathy-gtk/empathy-account-widget.c | 1289 ++++++++++++++++--------------- 1 file changed, 657 insertions(+), 632 deletions(-) (limited to 'libempathy-gtk/empathy-account-widget.c') diff --git a/libempathy-gtk/empathy-account-widget.c b/libempathy-gtk/empathy-account-widget.c index 901fc68d9..1a5c4f643 100644 --- a/libempathy-gtk/empathy-account-widget.c +++ b/libempathy-gtk/empathy-account-widget.c @@ -49,24 +49,24 @@ G_DEFINE_TYPE (EmpathyAccountWidget, empathy_account_widget, G_TYPE_OBJECT) typedef struct { - GtkWidget *widget; + GtkWidget *widget; - char *protocol; - EmpathyAccountSettings *settings; + char *protocol; + EmpathyAccountSettings *settings; - GtkWidget *apply_button; - GtkWidget *entry_password; - GtkWidget *button_forget; - GtkWidget *spinbutton_port; - - GtkBuilder *gui; - char *default_focus; - gboolean add_forget; + GtkWidget *apply_button; + GtkWidget *entry_password; + GtkWidget *button_forget; + GtkWidget *spinbutton_port; + + GtkBuilder *gui; + char *default_focus; + gboolean add_forget; } EmpathyAccountWidgetPriv; enum { - PROP_PROTOCOL = 1, - PROP_SETTINGS + PROP_PROTOCOL = 1, + PROP_SETTINGS }; #define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyAccountWidget) @@ -74,408 +74,431 @@ enum { static void account_widget_handle_apply_sensitivity (EmpathyAccountWidget *self) { - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); - gtk_widget_set_sensitive (priv->apply_button, - empathy_account_settings_is_valid (priv->settings)); + gtk_widget_set_sensitive (priv->apply_button, + empathy_account_settings_is_valid (priv->settings)); } static gboolean -account_widget_entry_focus_cb (GtkWidget *widget, - GdkEventFocus *event, - EmpathyAccountWidget *self) +account_widget_entry_focus_cb (GtkWidget *widget, + GdkEventFocus *event, + EmpathyAccountWidget *self) { - const gchar *str; - const gchar *param_name; - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); - - str = gtk_entry_get_text (GTK_ENTRY (widget)); - param_name = g_object_get_data (G_OBJECT (widget), "param_name"); - - if (EMP_STR_EMPTY (str)) { - const gchar *value = NULL; - - empathy_account_settings_unset (priv->settings, param_name); - value = empathy_account_settings_get_string (priv->settings, param_name); - DEBUG ("Unset %s and restore to %s", param_name, value); - gtk_entry_set_text (GTK_ENTRY (widget), value ? value : ""); - } else { - DEBUG ("Setting %s to %s", param_name, - strstr (param_name, "password") ? "***" : str); - empathy_account_settings_set_string (priv->settings, param_name, str); - } - - account_widget_handle_apply_sensitivity (self); - - return FALSE; + const gchar *str; + const gchar *param_name; + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + + str = gtk_entry_get_text (GTK_ENTRY (widget)); + param_name = g_object_get_data (G_OBJECT (widget), "param_name"); + + if (EMP_STR_EMPTY (str)) + { + const gchar *value = NULL; + + empathy_account_settings_unset (priv->settings, param_name); + value = empathy_account_settings_get_string (priv->settings, param_name); + DEBUG ("Unset %s and restore to %s", param_name, value); + gtk_entry_set_text (GTK_ENTRY (widget), value ? value : ""); + } + else + { + DEBUG ("Setting %s to %s", param_name, + strstr (param_name, "password") ? "***" : str); + empathy_account_settings_set_string (priv->settings, param_name, str); + } + + account_widget_handle_apply_sensitivity (self); + + return FALSE; } static void account_widget_int_changed_cb (GtkWidget *widget, - EmpathyAccountWidget *self) + EmpathyAccountWidget *self) { - const gchar *param_name; - gint value; - const gchar *signature; - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); - - value = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (widget)); - param_name = g_object_get_data (G_OBJECT (widget), "param_name"); - - signature = empathy_settings_get_dbus_signature (priv->settings, param_name); - g_return_if_fail (signature != NULL); - - DEBUG ("Setting %s to %d", param_name, value); - - switch ((int)*signature) - { - case DBUS_TYPE_INT16: - case DBUS_TYPE_INT32: - empathy_account_settings_set_int32 (priv->settings, param_name, value); - break; - case DBUS_TYPE_INT64: - empathy_account_settings_set_int64 (priv->settings, param_name, value); - break; - case DBUS_TYPE_UINT16: - case DBUS_TYPE_UINT32: - empathy_account_settings_set_uint32 (priv->settings, param_name, value); - break; - case DBUS_TYPE_UINT64: - empathy_account_settings_set_uint64 (priv->settings, param_name, value); - break; - default: - g_return_if_reached (); - } + const gchar *param_name; + gint value; + const gchar *signature; + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + + value = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (widget)); + param_name = g_object_get_data (G_OBJECT (widget), "param_name"); + + signature = empathy_settings_get_dbus_signature (priv->settings, param_name); + g_return_if_fail (signature != NULL); + + DEBUG ("Setting %s to %d", param_name, value); + + switch ((int)*signature) + { + case DBUS_TYPE_INT16: + case DBUS_TYPE_INT32: + empathy_account_settings_set_int32 (priv->settings, param_name, value); + break; + case DBUS_TYPE_INT64: + empathy_account_settings_set_int64 (priv->settings, param_name, value); + break; + case DBUS_TYPE_UINT16: + case DBUS_TYPE_UINT32: + empathy_account_settings_set_uint32 (priv->settings, param_name, value); + break; + case DBUS_TYPE_UINT64: + empathy_account_settings_set_uint64 (priv->settings, param_name, value); + break; + default: + g_return_if_reached (); + } - account_widget_handle_apply_sensitivity (self); + account_widget_handle_apply_sensitivity (self); } static void account_widget_checkbutton_toggled_cb (GtkWidget *widget, - EmpathyAccountWidget *self) + EmpathyAccountWidget *self) { - gboolean value; - gboolean default_value; - const gchar *param_name; - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); - - value = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)); - param_name = g_object_get_data (G_OBJECT (widget), "param_name"); - - /* FIXME: This is ugly! checkbox don't have a "not-set" value so we - * always unset the param and set the value if different from the - * default value. */ - empathy_account_settings_unset (priv->settings, param_name); - default_value = empathy_account_settings_get_boolean (priv->settings, param_name); - - if (default_value == value) { - DEBUG ("Unset %s and restore to %d", param_name, default_value); - } else { - DEBUG ("Setting %s to %d", param_name, value); - empathy_account_settings_set_boolean (priv->settings, param_name, value); - } + gboolean value; + gboolean default_value; + const gchar *param_name; + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + + value = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)); + param_name = g_object_get_data (G_OBJECT (widget), "param_name"); + + /* FIXME: This is ugly! checkbox don't have a "not-set" value so we + * always unset the param and set the value if different from the + * default value. */ + empathy_account_settings_unset (priv->settings, param_name); + default_value = empathy_account_settings_get_boolean (priv->settings, param_name); + + if (default_value == value) + { + DEBUG ("Unset %s and restore to %d", param_name, default_value); + } + else + { + DEBUG ("Setting %s to %d", param_name, value); + empathy_account_settings_set_boolean (priv->settings, param_name, value); + } - account_widget_handle_apply_sensitivity (self); + account_widget_handle_apply_sensitivity (self); } static void account_widget_forget_clicked_cb (GtkWidget *button, - EmpathyAccountWidget *self) + EmpathyAccountWidget *self) { - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); - const gchar *param_name; + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + const gchar *param_name; - param_name = g_object_get_data (G_OBJECT (priv->entry_password), "param_name"); + param_name = g_object_get_data (G_OBJECT (priv->entry_password), "param_name"); - DEBUG ("Unset %s", param_name); - empathy_account_settings_unset (priv->settings, param_name); - gtk_entry_set_text (GTK_ENTRY (priv->entry_password), ""); + DEBUG ("Unset %s", param_name); + empathy_account_settings_unset (priv->settings, param_name); + gtk_entry_set_text (GTK_ENTRY (priv->entry_password), ""); - account_widget_handle_apply_sensitivity (self); + account_widget_handle_apply_sensitivity (self); } static void account_widget_password_changed_cb (GtkWidget *entry, - GtkWidget *button) + GtkWidget *button) { - const gchar *str; + const gchar *str; - str = gtk_entry_get_text (GTK_ENTRY (entry)); - gtk_widget_set_sensitive (button, !EMP_STR_EMPTY (str)); + str = gtk_entry_get_text (GTK_ENTRY (entry)); + gtk_widget_set_sensitive (button, !EMP_STR_EMPTY (str)); } static void account_widget_jabber_ssl_toggled_cb (GtkWidget *checkbutton_ssl, - EmpathyAccountWidget *self) + EmpathyAccountWidget *self) { - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); - gboolean value; - gint32 port = 0; - - value = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbutton_ssl)); - port = empathy_account_settings_get_uint32 (priv->settings, "port"); - - if (value) { - if (port == 5222 || port == 0) { - port = 5223; - } - } else { - if (port == 5223 || port == 0) { - port = 5222; - } - } - - gtk_spin_button_set_value (GTK_SPIN_BUTTON (priv->spinbutton_port), port); + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + gboolean value; + gint32 port = 0; + + value = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbutton_ssl)); + port = empathy_account_settings_get_uint32 (priv->settings, "port"); + + if (value) + { + if (port == 5222 || port == 0) + port = 5223; + } + else + { + if (port == 5223 || port == 0) + port = 5222; + } + + gtk_spin_button_set_value (GTK_SPIN_BUTTON (priv->spinbutton_port), port); } static void account_widget_setup_widget (EmpathyAccountWidget *self, - GtkWidget *widget, - const gchar *param_name) + GtkWidget *widget, + const gchar *param_name) { - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); - g_object_set_data_full (G_OBJECT (widget), "param_name", - g_strdup (param_name), g_free); - - if (GTK_IS_SPIN_BUTTON (widget)) { - gint value = 0; - const gchar *signature; - - signature = empathy_settings_get_dbus_signature (priv->settings, param_name); - g_return_if_fail (signature != NULL); - - switch ((int)*signature) - { - case DBUS_TYPE_INT16: - case DBUS_TYPE_INT32: - value = empathy_account_settings_get_int32 (priv->settings, param_name); - break; - case DBUS_TYPE_INT64: - value = empathy_account_settings_get_int64 (priv->settings, param_name); - break; - case DBUS_TYPE_UINT16: - case DBUS_TYPE_UINT32: - value = empathy_account_settings_get_uint32 (priv->settings, param_name); - break; - case DBUS_TYPE_UINT64: - value = empathy_account_settings_get_uint64 (priv->settings, param_name); - break; - default: - g_return_if_reached (); - } - - gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), value); - - g_signal_connect (widget, "value-changed", - G_CALLBACK (account_widget_int_changed_cb), - self); - } - else if (GTK_IS_ENTRY (widget)) { - const gchar *str = NULL; - - str = empathy_account_settings_get_string (priv->settings, param_name); - gtk_entry_set_text (GTK_ENTRY (widget), str ? str : ""); - - if (strstr (param_name, "password")) { - gtk_entry_set_visibility (GTK_ENTRY (widget), FALSE); - } - - g_signal_connect (widget, "focus-out-event", - G_CALLBACK (account_widget_entry_focus_cb), - self); - } - else if (GTK_IS_TOGGLE_BUTTON (widget)) { - gboolean value = FALSE; - - value = empathy_account_settings_get_boolean (priv->settings, param_name); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), value); - - g_signal_connect (widget, "toggled", - G_CALLBACK (account_widget_checkbutton_toggled_cb), - self); - } else { - DEBUG ("Unknown type of widget for param %s", param_name); - } + g_object_set_data_full (G_OBJECT (widget), "param_name", + g_strdup (param_name), g_free); + + if (GTK_IS_SPIN_BUTTON (widget)) + { + gint value = 0; + const gchar *signature; + + signature = empathy_settings_get_dbus_signature (priv->settings, param_name); + g_return_if_fail (signature != NULL); + + switch ((int)*signature) + { + case DBUS_TYPE_INT16: + case DBUS_TYPE_INT32: + value = empathy_account_settings_get_int32 (priv->settings, param_name); + break; + case DBUS_TYPE_INT64: + value = empathy_account_settings_get_int64 (priv->settings, param_name); + break; + case DBUS_TYPE_UINT16: + case DBUS_TYPE_UINT32: + value = empathy_account_settings_get_uint32 (priv->settings, param_name); + break; + case DBUS_TYPE_UINT64: + value = empathy_account_settings_get_uint64 (priv->settings, param_name); + break; + default: + g_return_if_reached (); + } + + gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), value); + + g_signal_connect (widget, "value-changed", + G_CALLBACK (account_widget_int_changed_cb), + self); + } + else if (GTK_IS_ENTRY (widget)) + { + const gchar *str = NULL; + + str = empathy_account_settings_get_string (priv->settings, param_name); + gtk_entry_set_text (GTK_ENTRY (widget), str ? str : ""); + + if (strstr (param_name, "password")) + { + gtk_entry_set_visibility (GTK_ENTRY (widget), FALSE); + } + + g_signal_connect (widget, "focus-out-event", + G_CALLBACK (account_widget_entry_focus_cb), + self); + } + else if (GTK_IS_TOGGLE_BUTTON (widget)) + { + gboolean value = FALSE; + + value = empathy_account_settings_get_boolean (priv->settings, param_name); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), value); + + g_signal_connect (widget, "toggled", + G_CALLBACK (account_widget_checkbutton_toggled_cb), + self); + } + else + { + DEBUG ("Unknown type of widget for param %s", param_name); + } } static gchar * account_widget_generic_format_param_name (const gchar *param_name) { - gchar *str; - gchar *p; + gchar *str; + gchar *p; - str = g_strdup (param_name); + str = g_strdup (param_name); - if (str && g_ascii_isalpha (str[0])) { - str[0] = g_ascii_toupper (str[0]); - } + if (str && g_ascii_isalpha (str[0])) + str[0] = g_ascii_toupper (str[0]); - while ((p = strchr (str, '-')) != NULL) { - if (p[1] != '\0' && g_ascii_isalpha (p[1])) { - p[0] = ' '; - p[1] = g_ascii_toupper (p[1]); - } + while ((p = strchr (str, '-')) != NULL) + { + if (p[1] != '\0' && g_ascii_isalpha (p[1])) + { + p[0] = ' '; + p[1] = g_ascii_toupper (p[1]); + } - p++; - } + p++; + } - return str; + return str; } static void accounts_widget_generic_setup (EmpathyAccountWidget *self, - GtkWidget *table_common_settings, - GtkWidget *table_advanced_settings) + GtkWidget *table_common_settings, + GtkWidget *table_advanced_settings) { - TpConnectionManagerParam *params, *param; - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); - - params = empathy_account_settings_get_tp_params (priv->settings); - - for (param = params; param != NULL && param->name != NULL; param++) { - GtkWidget *table_settings; - guint n_rows = 0; - GtkWidget *widget = NULL; - gchar *param_name_formatted; - - if (param->flags & TP_CONN_MGR_PARAM_FLAG_REQUIRED) { - table_settings = table_common_settings; - } else { - table_settings = table_advanced_settings; - } - param_name_formatted = account_widget_generic_format_param_name (param->name); - g_object_get (table_settings, "n-rows", &n_rows, NULL); - gtk_table_resize (GTK_TABLE (table_settings), ++n_rows, 2); - - if (param->dbus_signature[0] == 's') { - gchar *str; - - str = g_strdup_printf (_("%s:"), param_name_formatted); - widget = gtk_label_new (str); - gtk_misc_set_alignment (GTK_MISC (widget), 0, 0.5); - g_free (str); - - gtk_table_attach (GTK_TABLE (table_settings), - widget, - 0, 1, - n_rows - 1, n_rows, - GTK_FILL, 0, - 0, 0); - gtk_widget_show (widget); - - widget = gtk_entry_new (); - if (strcmp (param->name, "account") == 0) { - g_signal_connect (widget, "realize", - G_CALLBACK (gtk_widget_grab_focus), - NULL); - } - gtk_table_attach (GTK_TABLE (table_settings), - widget, - 1, 2, - n_rows - 1, n_rows, - GTK_FILL | GTK_EXPAND, 0, - 0, 0); - gtk_widget_show (widget); - } - /* int types: ynqiuxt. double type is 'd' */ - else if (param->dbus_signature[0] == 'y' || - param->dbus_signature[0] == 'n' || - param->dbus_signature[0] == 'q' || - param->dbus_signature[0] == 'i' || - param->dbus_signature[0] == 'u' || - param->dbus_signature[0] == 'x' || - param->dbus_signature[0] == 't' || - param->dbus_signature[0] == 'd') { - gchar *str = NULL; - gdouble minint = 0; - gdouble maxint = 0; - gdouble step = 1; - - switch (param->dbus_signature[0]) { - case 'y': minint = G_MININT8; maxint = G_MAXINT8; break; - case 'n': minint = G_MININT16; maxint = G_MAXINT16; break; - case 'q': minint = 0; maxint = G_MAXUINT16; break; - case 'i': minint = G_MININT32; maxint = G_MAXINT32; break; - case 'u': minint = 0; maxint = G_MAXUINT32; break; - case 'x': minint = G_MININT64; maxint = G_MAXINT64; break; - case 't': minint = 0; maxint = G_MAXUINT64; break; - case 'd': minint = G_MININT32; maxint = G_MAXINT32; step = 0.1; break; - } - - str = g_strdup_printf (_("%s:"), param_name_formatted); - widget = gtk_label_new (str); - gtk_misc_set_alignment (GTK_MISC (widget), 0, 0.5); - g_free (str); - - gtk_table_attach (GTK_TABLE (table_settings), - widget, - 0, 1, - n_rows - 1, n_rows, - GTK_FILL, 0, - 0, 0); - gtk_widget_show (widget); - - widget = gtk_spin_button_new_with_range (minint, maxint, step); - gtk_table_attach (GTK_TABLE (table_settings), - widget, - 1, 2, - n_rows - 1, n_rows, - GTK_FILL | GTK_EXPAND, 0, - 0, 0); - gtk_widget_show (widget); - } - else if (param->dbus_signature[0] == 'b') { - widget = gtk_check_button_new_with_label (param_name_formatted); - gtk_table_attach (GTK_TABLE (table_settings), - widget, - 0, 2, - n_rows - 1, n_rows, - GTK_FILL | GTK_EXPAND, 0, - 0, 0); - gtk_widget_show (widget); - } else { - DEBUG ("Unknown signature for param %s: %s", - param_name_formatted, param->dbus_signature); - } - - if (widget) { - account_widget_setup_widget (self, widget, param->name); - } - - g_free (param_name_formatted); - } + TpConnectionManagerParam *params, *param; + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + + params = empathy_account_settings_get_tp_params (priv->settings); + + for (param = params; param != NULL && param->name != NULL; param++) + { + GtkWidget *table_settings; + guint n_rows = 0; + GtkWidget *widget = NULL; + gchar *param_name_formatted; + + if (param->flags & TP_CONN_MGR_PARAM_FLAG_REQUIRED) + table_settings = table_common_settings; + else + table_settings = table_advanced_settings; + + param_name_formatted = account_widget_generic_format_param_name (param->name); + g_object_get (table_settings, "n-rows", &n_rows, NULL); + gtk_table_resize (GTK_TABLE (table_settings), ++n_rows, 2); + + if (param->dbus_signature[0] == 's') + { + gchar *str; + + str = g_strdup_printf (_("%s:"), param_name_formatted); + widget = gtk_label_new (str); + gtk_misc_set_alignment (GTK_MISC (widget), 0, 0.5); + g_free (str); + + gtk_table_attach (GTK_TABLE (table_settings), + widget, + 0, 1, + n_rows - 1, n_rows, + GTK_FILL, 0, + 0, 0); + gtk_widget_show (widget); + + widget = gtk_entry_new (); + if (strcmp (param->name, "account") == 0) + { + g_signal_connect (widget, "realize", + G_CALLBACK (gtk_widget_grab_focus), + NULL); + } + gtk_table_attach (GTK_TABLE (table_settings), + widget, + 1, 2, + n_rows - 1, n_rows, + GTK_FILL | GTK_EXPAND, 0, + 0, 0); + gtk_widget_show (widget); + } + /* int types: ynqiuxt. double type is 'd' */ + else if (param->dbus_signature[0] == 'y' || + param->dbus_signature[0] == 'n' || + param->dbus_signature[0] == 'q' || + param->dbus_signature[0] == 'i' || + param->dbus_signature[0] == 'u' || + param->dbus_signature[0] == 'x' || + param->dbus_signature[0] == 't' || + param->dbus_signature[0] == 'd') + { + gchar *str = NULL; + gdouble minint = 0; + gdouble maxint = 0; + gdouble step = 1; + + switch (param->dbus_signature[0]) + { + case 'y': minint = G_MININT8; maxint = G_MAXINT8; break; + case 'n': minint = G_MININT16; maxint = G_MAXINT16; break; + case 'q': minint = 0; maxint = G_MAXUINT16; break; + case 'i': minint = G_MININT32; maxint = G_MAXINT32; break; + case 'u': minint = 0; maxint = G_MAXUINT32; break; + case 'x': minint = G_MININT64; maxint = G_MAXINT64; break; + case 't': minint = 0; maxint = G_MAXUINT64; break; + case 'd': minint = G_MININT32; maxint = G_MAXINT32; step = 0.1; break; + } + + str = g_strdup_printf (_("%s:"), param_name_formatted); + widget = gtk_label_new (str); + gtk_misc_set_alignment (GTK_MISC (widget), 0, 0.5); + g_free (str); + + gtk_table_attach (GTK_TABLE (table_settings), + widget, + 0, 1, + n_rows - 1, n_rows, + GTK_FILL, 0, + 0, 0); + gtk_widget_show (widget); + + widget = gtk_spin_button_new_with_range (minint, maxint, step); + gtk_table_attach (GTK_TABLE (table_settings), + widget, + 1, 2, + n_rows - 1, n_rows, + GTK_FILL | GTK_EXPAND, 0, + 0, 0); + gtk_widget_show (widget); + } + else if (param->dbus_signature[0] == 'b') + { + widget = gtk_check_button_new_with_label (param_name_formatted); + gtk_table_attach (GTK_TABLE (table_settings), + widget, + 0, 2, + n_rows - 1, n_rows, + GTK_FILL | GTK_EXPAND, 0, + 0, 0); + gtk_widget_show (widget); + } + else + { + DEBUG ("Unknown signature for param %s: %s", + param_name_formatted, param->dbus_signature); + } + + if (widget) + account_widget_setup_widget (self, widget, param->name); + + g_free (param_name_formatted); + } } static void account_widget_handle_params_valist (EmpathyAccountWidget *self, - const gchar *first_widget, - va_list args) + const gchar *first_widget, + va_list args) { - GObject *object; - const gchar *name; - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + GObject *object; + const gchar *name; + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); - for (name = first_widget; name; name = va_arg (args, const gchar *)) { - const gchar *param_name; + for (name = first_widget; name; name = va_arg (args, const gchar *)) + { + const gchar *param_name; - param_name = va_arg (args, const gchar *); - object = gtk_builder_get_object (priv->gui, name); + param_name = va_arg (args, const gchar *); + object = gtk_builder_get_object (priv->gui, name); - if (!object) { - g_warning ("Builder is missing object '%s'.", name); - continue; - } + if (!object) + { + g_warning ("Builder is missing object '%s'.", name); + continue; + } - account_widget_setup_widget (self, GTK_WIDGET (object), param_name); - } + account_widget_setup_widget (self, GTK_WIDGET (object), param_name); + } } static void account_widget_apply_clicked_cb (GtkWidget *button, - EmpathyAccountWidget *self) + EmpathyAccountWidget *self) { - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); empathy_account_settings_apply_async (priv->settings, NULL, NULL); } @@ -483,395 +506,397 @@ account_widget_apply_clicked_cb (GtkWidget *button, static void account_widget_setup_generic (EmpathyAccountWidget *self) { - GtkWidget *table_common_settings; - GtkWidget *table_advanced_settings; - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + GtkWidget *table_common_settings; + GtkWidget *table_advanced_settings; + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); - table_common_settings = GTK_WIDGET (gtk_builder_get_object (priv->gui, - "table_common_settings")); - table_advanced_settings = GTK_WIDGET (gtk_builder_get_object (priv->gui, - "table_advanced_settings")); + table_common_settings = GTK_WIDGET (gtk_builder_get_object (priv->gui, + "table_common_settings")); + table_advanced_settings = GTK_WIDGET (gtk_builder_get_object (priv->gui, + "table_advanced_settings")); - accounts_widget_generic_setup (self, table_common_settings, - table_advanced_settings); + accounts_widget_generic_setup (self, table_common_settings, + table_advanced_settings); } static void account_widget_settings_ready_cb (EmpathyAccountSettings *settings, - GParamSpec *pspec, - gpointer user_data) + GParamSpec *pspec, + gpointer user_data) { - EmpathyAccountWidget *self = user_data; - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + EmpathyAccountWidget *self = user_data; + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); - if (empathy_account_settings_is_ready (priv->settings)) - account_widget_setup_generic (self); + if (empathy_account_settings_is_ready (priv->settings)) + account_widget_setup_generic (self); } static void account_widget_build_generic (EmpathyAccountWidget *self, - const char *filename) + const char *filename) { - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); - priv->gui = empathy_builder_get_file (filename, - "vbox_generic_settings", &self->ui_details->widget, - NULL); - - if (empathy_account_settings_is_ready (priv->settings)) - account_widget_setup_generic (self); - else - g_signal_connect (priv->settings, "notify::ready", - G_CALLBACK (account_widget_settings_ready_cb), self); + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + priv->gui = empathy_builder_get_file (filename, + "vbox_generic_settings", &self->ui_details->widget, + NULL); + + if (empathy_account_settings_is_ready (priv->settings)) + account_widget_setup_generic (self); + else + g_signal_connect (priv->settings, "notify::ready", + G_CALLBACK (account_widget_settings_ready_cb), self); } static void account_widget_build_salut (EmpathyAccountWidget *self, - const char *filename) + const char *filename) { - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); - priv->gui = empathy_builder_get_file (filename, - "vbox_salut_settings", &self->ui_details->widget, - NULL); - - empathy_account_widget_handle_params (self, - "entry_published", "published-name", - "entry_nickname", "nickname", - "entry_first_name", "first-name", - "entry_last_name", "last-name", - "entry_email", "email", - "entry_jid", "jid", - NULL); - - self->ui_details->default_focus = g_strdup ("entry_nickname"); + priv->gui = empathy_builder_get_file (filename, + "vbox_salut_settings", &self->ui_details->widget, + NULL); + + empathy_account_widget_handle_params (self, + "entry_published", "published-name", + "entry_nickname", "nickname", + "entry_first_name", "first-name", + "entry_last_name", "last-name", + "entry_email", "email", + "entry_jid", "jid", + NULL); + + self->ui_details->default_focus = g_strdup ("entry_nickname"); } static void account_widget_build_msn (EmpathyAccountWidget *self, - const char *filename) + const char *filename) { - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); - priv->gui = empathy_builder_get_file (filename, - "vbox_msn_settings", &self->ui_details->widget, - NULL); - - empathy_account_widget_handle_params (self, - "entry_id", "account", - "entry_password", "password", - "entry_server", "server", - "spinbutton_port", "port", - NULL); - - self->ui_details->default_focus = g_strdup ("entry_id"); - self->ui_details->add_forget = TRUE; + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + priv->gui = empathy_builder_get_file (filename, + "vbox_msn_settings", &self->ui_details->widget, + NULL); + + empathy_account_widget_handle_params (self, + "entry_id", "account", + "entry_password", "password", + "entry_server", "server", + "spinbutton_port", "port", + NULL); + + self->ui_details->default_focus = g_strdup ("entry_id"); + self->ui_details->add_forget = TRUE; } static void account_widget_build_jabber (EmpathyAccountWidget *self, - const char *filename) + const char *filename) { - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); - GtkWidget *spinbutton_port; - GtkWidget *checkbutton_ssl; - - priv->gui = empathy_builder_get_file (filename, - "vbox_jabber_settings", &self->ui_details->widget, - "spinbutton_port", &spinbutton_port, - "checkbutton_ssl", &checkbutton_ssl, - NULL); - - empathy_account_widget_handle_params (self, - "entry_id", "account", - "entry_password", "password", - "entry_resource", "resource", - "entry_server", "server", - "spinbutton_port", "port", - "spinbutton_priority", "priority", - "checkbutton_ssl", "old-ssl", - "checkbutton_ignore_ssl_errors", "ignore-ssl-errors", - "checkbutton_encryption", "require-encryption", - NULL); - - self->ui_details->default_focus = g_strdup ("entry_id"); - self->ui_details->add_forget = TRUE; - priv->spinbutton_port = spinbutton_port; - - g_signal_connect (checkbutton_ssl, "toggled", - G_CALLBACK (account_widget_jabber_ssl_toggled_cb), - self); + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + GtkWidget *spinbutton_port; + GtkWidget *checkbutton_ssl; + + priv->gui = empathy_builder_get_file (filename, + "vbox_jabber_settings", &self->ui_details->widget, + "spinbutton_port", &spinbutton_port, + "checkbutton_ssl", &checkbutton_ssl, + NULL); + + empathy_account_widget_handle_params (self, + "entry_id", "account", + "entry_password", "password", + "entry_resource", "resource", + "entry_server", "server", + "spinbutton_port", "port", + "spinbutton_priority", "priority", + "checkbutton_ssl", "old-ssl", + "checkbutton_ignore_ssl_errors", "ignore-ssl-errors", + "checkbutton_encryption", "require-encryption", + NULL); + + self->ui_details->default_focus = g_strdup ("entry_id"); + self->ui_details->add_forget = TRUE; + priv->spinbutton_port = spinbutton_port; + + g_signal_connect (checkbutton_ssl, "toggled", + G_CALLBACK (account_widget_jabber_ssl_toggled_cb), + self); } static void account_widget_build_icq (EmpathyAccountWidget *self, - const char *filename) + const char *filename) { - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); - GtkWidget *spinbutton_port; - - priv->gui = empathy_builder_get_file (filename, - "vbox_icq_settings", &self->ui_details->widget, - "spinbutton_port", &spinbutton_port, - NULL); - - empathy_account_widget_handle_params (self, - "entry_uin", "account", - "entry_password", "password", - "entry_server", "server", - "spinbutton_port", "port", - "entry_charset", "charset", - NULL); - - self->ui_details->default_focus = g_strdup ("entry_uin"); - self->ui_details->add_forget = TRUE; + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + GtkWidget *spinbutton_port; + + priv->gui = empathy_builder_get_file (filename, + "vbox_icq_settings", &self->ui_details->widget, + "spinbutton_port", &spinbutton_port, + NULL); + + empathy_account_widget_handle_params (self, + "entry_uin", "account", + "entry_password", "password", + "entry_server", "server", + "spinbutton_port", "port", + "entry_charset", "charset", + NULL); + + self->ui_details->default_focus = g_strdup ("entry_uin"); + self->ui_details->add_forget = TRUE; } static void account_widget_build_aim (EmpathyAccountWidget *self, - const char *filename) + const char *filename) { - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); - GtkWidget *spinbutton_port; - - priv->gui = empathy_builder_get_file (filename, - "vbox_aim_settings", &self->ui_details->widget, - "spinbutton_port", &spinbutton_port, - NULL); - - empathy_account_widget_handle_params (self, - "entry_screenname", "account", - "entry_password", "password", - "entry_server", "server", - "spinbutton_port", "port", - NULL); - - self->ui_details->default_focus = g_strdup ("entry_screenname"); - self->ui_details->add_forget = TRUE; + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + GtkWidget *spinbutton_port; + + priv->gui = empathy_builder_get_file (filename, + "vbox_aim_settings", &self->ui_details->widget, + "spinbutton_port", &spinbutton_port, + NULL); + + empathy_account_widget_handle_params (self, + "entry_screenname", "account", + "entry_password", "password", + "entry_server", "server", + "spinbutton_port", "port", + NULL); + + self->ui_details->default_focus = g_strdup ("entry_screenname"); + self->ui_details->add_forget = TRUE; } static void account_widget_build_yahoo (EmpathyAccountWidget *self, - const char *filename) + const char *filename) { - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); - - priv->gui = empathy_builder_get_file (filename, - "vbox_yahoo_settings", &self->ui_details->widget, - NULL); - - empathy_account_widget_handle_params (self, - "entry_id", "account", - "entry_password", "password", - "entry_server", "server", - "entry_locale", "room-list-locale", - "entry_charset", "charset", - "spinbutton_port", "port", - "checkbutton_yahoojp", "yahoojp", - "checkbutton_ignore_invites", "ignore-invites", - NULL); - - self->ui_details->default_focus = g_strdup ("entry_id"); - self->ui_details->add_forget = TRUE; + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + + priv->gui = empathy_builder_get_file (filename, + "vbox_yahoo_settings", &self->ui_details->widget, + NULL); + + empathy_account_widget_handle_params (self, + "entry_id", "account", + "entry_password", "password", + "entry_server", "server", + "entry_locale", "room-list-locale", + "entry_charset", "charset", + "spinbutton_port", "port", + "checkbutton_yahoojp", "yahoojp", + "checkbutton_ignore_invites", "ignore-invites", + NULL); + + self->ui_details->default_focus = g_strdup ("entry_id"); + self->ui_details->add_forget = TRUE; } static void account_widget_build_groupwise (EmpathyAccountWidget *self, - const char *filename) + const char *filename) { - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); - priv->gui = empathy_builder_get_file (filename, - "vbox_groupwise_settings", &self->ui_details->widget, - NULL); + priv->gui = empathy_builder_get_file (filename, + "vbox_groupwise_settings", &self->ui_details->widget, + NULL); - empathy_account_widget_handle_params (self, - "entry_id", "account", - "entry_password", "password", - "entry_server", "server", - "spinbutton_port", "port", - NULL); + empathy_account_widget_handle_params (self, + "entry_id", "account", + "entry_password", "password", + "entry_server", "server", + "spinbutton_port", "port", + NULL); - self->ui_details->default_focus = g_strdup ("entry_id"); - self->ui_details->add_forget = TRUE; + self->ui_details->default_focus = g_strdup ("entry_id"); + self->ui_details->add_forget = TRUE; } static void do_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { - EmpathyAccountWidgetPriv *priv = GET_PRIV (object); - - switch (prop_id) { - case PROP_PROTOCOL: - priv->protocol = g_value_dup_string (value); - break; - case PROP_SETTINGS: - priv->settings = g_value_dup_object (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - } + EmpathyAccountWidgetPriv *priv = GET_PRIV (object); + + switch (prop_id) + { + case PROP_PROTOCOL: + priv->protocol = g_value_dup_string (value); + break; + case PROP_SETTINGS: + priv->settings = g_value_dup_object (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } } static void do_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { - EmpathyAccountWidgetPriv *priv = GET_PRIV (object); - - switch (prop_id) { - case PROP_PROTOCOL: - g_value_set_string (value, priv->protocol); - break; - case PROP_SETTINGS: - g_value_set_object (value, priv->settings); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - } + EmpathyAccountWidgetPriv *priv = GET_PRIV (object); + + switch (prop_id) + { + case PROP_PROTOCOL: + g_value_set_string (value, priv->protocol); + break; + case PROP_SETTINGS: + g_value_set_object (value, priv->settings); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } } static void do_constructed (GObject *obj) { - EmpathyAccountWidget *self = EMPATHY_ACCOUNT_WIDGET (obj); - EmpathyAccountWidgetPriv *priv = GET_PRIV (self); - char *uiname, *filename; - - uiname = g_strconcat ("empathy-account-widget-", priv->protocol, - ".ui", NULL); - filename = empathy_file_lookup (uiname, "libempathy-gtk"); - - if (!tp_strdiff (priv->protocol, "local-xmpp")) - account_widget_build_salut (self, filename); - else if (!tp_strdiff (priv->protocol, "msn")) - account_widget_build_msn (self, filename); - else if (!tp_strdiff (priv->protocol, "jabber")) - account_widget_build_jabber (self, filename); - else if (!tp_strdiff (priv->protocol, "icq")) - account_widget_build_icq (self, filename); - else if (!tp_strdiff (priv->protocol, "aim")) - account_widget_build_aim (self, filename); - else if (!tp_strdiff (priv->protocol, "yahoo")) - account_widget_build_yahoo (self, filename); - else if (!tp_strdiff (priv->protocol, "groupwise")) - account_widget_build_groupwise (self, filename); - else if (!tp_strdiff (priv->protocol, "irc")) - empathy_account_widget_irc_build (self, filename); - else if (!tp_strdiff (priv->protocol, "sip")) - empathy_account_widget_sip_build (self, filename); - else - account_widget_build_generic (self, filename); - - g_free (uiname); - g_free (filename); - - /* handle default focus */ - if (self->ui_details->default_focus != NULL) - { - GObject *default_focus_entry; - - default_focus_entry = gtk_builder_get_object - (priv->gui, self->ui_details->default_focus); - g_signal_connect (default_focus_entry, "realize", - G_CALLBACK (gtk_widget_grab_focus), - NULL); - } - - /* handle forget button */ - if (self->ui_details->add_forget) - { - const gchar *password = NULL; - - priv->button_forget = GTK_WIDGET (gtk_builder_get_object (priv->gui, "button_forget")); - priv->entry_password = GTK_WIDGET (gtk_builder_get_object (priv->gui, "entry_password")); - - password = empathy_account_settings_get_string (priv->settings, "password"); - gtk_widget_set_sensitive (priv->button_forget, !EMP_STR_EMPTY (password)); - - g_signal_connect (priv->button_forget, "clicked", - G_CALLBACK (account_widget_forget_clicked_cb), - self); - g_signal_connect (priv->entry_password, "changed", - G_CALLBACK (account_widget_password_changed_cb), - self); - } - - /* handle apply button */ - priv->apply_button = gtk_button_new_from_stock (GTK_STOCK_APPLY); - gtk_box_pack_end (GTK_BOX (self->ui_details->widget), priv->apply_button, FALSE, FALSE, 3); - - g_signal_connect (priv->apply_button, "clicked", - G_CALLBACK (account_widget_apply_clicked_cb), - self); - gtk_widget_show (priv->apply_button); + EmpathyAccountWidget *self = EMPATHY_ACCOUNT_WIDGET (obj); + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + char *uiname, *filename; + + uiname = g_strconcat ("empathy-account-widget-", priv->protocol, + ".ui", NULL); + filename = empathy_file_lookup (uiname, "libempathy-gtk"); + + if (!tp_strdiff (priv->protocol, "local-xmpp")) + account_widget_build_salut (self, filename); + else if (!tp_strdiff (priv->protocol, "msn")) + account_widget_build_msn (self, filename); + else if (!tp_strdiff (priv->protocol, "jabber")) + account_widget_build_jabber (self, filename); + else if (!tp_strdiff (priv->protocol, "icq")) + account_widget_build_icq (self, filename); + else if (!tp_strdiff (priv->protocol, "aim")) + account_widget_build_aim (self, filename); + else if (!tp_strdiff (priv->protocol, "yahoo")) + account_widget_build_yahoo (self, filename); + else if (!tp_strdiff (priv->protocol, "groupwise")) + account_widget_build_groupwise (self, filename); + else if (!tp_strdiff (priv->protocol, "irc")) + empathy_account_widget_irc_build (self, filename); + else if (!tp_strdiff (priv->protocol, "sip")) + empathy_account_widget_sip_build (self, filename); + else + account_widget_build_generic (self, filename); + + g_free (uiname); + g_free (filename); + + /* handle default focus */ + if (self->ui_details->default_focus != NULL) + { + GObject *default_focus_entry; + + default_focus_entry = gtk_builder_get_object + (priv->gui, self->ui_details->default_focus); + g_signal_connect (default_focus_entry, "realize", + G_CALLBACK (gtk_widget_grab_focus), + NULL); + } + + /* handle forget button */ + if (self->ui_details->add_forget) + { + const gchar *password = NULL; + + priv->button_forget = GTK_WIDGET (gtk_builder_get_object (priv->gui, "button_forget")); + priv->entry_password = GTK_WIDGET (gtk_builder_get_object (priv->gui, "entry_password")); + + password = empathy_account_settings_get_string (priv->settings, "password"); + gtk_widget_set_sensitive (priv->button_forget, !EMP_STR_EMPTY (password)); + + g_signal_connect (priv->button_forget, "clicked", + G_CALLBACK (account_widget_forget_clicked_cb), + self); + g_signal_connect (priv->entry_password, "changed", + G_CALLBACK (account_widget_password_changed_cb), + self); + } + + /* handle apply button */ + priv->apply_button = gtk_button_new_from_stock (GTK_STOCK_APPLY); + gtk_box_pack_end (GTK_BOX (self->ui_details->widget), priv->apply_button, FALSE, FALSE, 3); + + g_signal_connect (priv->apply_button, "clicked", + G_CALLBACK (account_widget_apply_clicked_cb), + self); + gtk_widget_show (priv->apply_button); } static void empathy_account_widget_class_init (EmpathyAccountWidgetClass *klass) { - GObjectClass *oclass = G_OBJECT_CLASS (klass); - GParamSpec *param_spec; + GObjectClass *oclass = G_OBJECT_CLASS (klass); + GParamSpec *param_spec; - oclass->get_property = do_get_property; - oclass->set_property = do_set_property; - oclass->constructed = do_constructed; + oclass->get_property = do_get_property; + oclass->set_property = do_set_property; + oclass->constructed = do_constructed; - param_spec = g_param_spec_string ("protocol", + param_spec = g_param_spec_string ("protocol", "protocol", "The protocol of the account", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY); g_object_class_install_property (oclass, PROP_PROTOCOL, param_spec); - param_spec = g_param_spec_object ("settings", + param_spec = g_param_spec_object ("settings", "settings", "The settings of the account", EMPATHY_TYPE_ACCOUNT_SETTINGS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY); g_object_class_install_property (oclass, PROP_SETTINGS, param_spec); - g_type_class_add_private (klass, sizeof (EmpathyAccountWidgetPriv)); + g_type_class_add_private (klass, sizeof (EmpathyAccountWidgetPriv)); } static void empathy_account_widget_init (EmpathyAccountWidget *self) { - EmpathyAccountWidgetPriv *priv = - G_TYPE_INSTANCE_GET_PRIVATE ((self), EMPATHY_TYPE_ACCOUNT_WIDGET, - EmpathyAccountWidgetPriv); + EmpathyAccountWidgetPriv *priv = + G_TYPE_INSTANCE_GET_PRIVATE ((self), EMPATHY_TYPE_ACCOUNT_WIDGET, + EmpathyAccountWidgetPriv); - self->priv = priv; - self->ui_details = g_slice_new0 (EmpathyAccountWidgetUIDetails); + self->priv = priv; + self->ui_details = g_slice_new0 (EmpathyAccountWidgetUIDetails); } void empathy_account_widget_handle_params (EmpathyAccountWidget *self, - const gchar *first_widget, - ...) + const gchar *first_widget, + ...) { - va_list args; + va_list args; - va_start (args, first_widget); - account_widget_handle_params_valist (self, first_widget, args); - va_end (args); + va_start (args, first_widget); + account_widget_handle_params_valist (self, first_widget, args); + va_end (args); } GtkWidget * empathy_account_widget_new_for_protocol (const char *protocol, - EmpathyAccountSettings *settings) + EmpathyAccountSettings *settings) { - EmpathyAccountWidget *self; - EmpathyAccountWidgetPriv *priv; + EmpathyAccountWidget *self; + EmpathyAccountWidgetPriv *priv; - g_return_val_if_fail (EMPATHY_IS_ACCOUNT_SETTINGS (settings), NULL); - g_return_val_if_fail (settings != NULL, NULL); + g_return_val_if_fail (EMPATHY_IS_ACCOUNT_SETTINGS (settings), NULL); + g_return_val_if_fail (settings != NULL, NULL); - self = g_object_new - (EMPATHY_TYPE_ACCOUNT_WIDGET, "protocol", protocol, - "settings", settings, NULL); - priv = GET_PRIV (self); + self = g_object_new + (EMPATHY_TYPE_ACCOUNT_WIDGET, "protocol", protocol, + "settings", settings, NULL); + priv = GET_PRIV (self); - return self->ui_details->widget; -} \ No newline at end of file + return self->ui_details->widget; +} -- cgit v1.2.3