#define DEBUG_FLAG EMPATHY_DEBUG_ACCOUNT
#include <libempathy/empathy-debug.h>
-G_DEFINE_TYPE (EmpathyAccountWidget, empathy_account_widget, G_TYPE_OBJECT)
+G_DEFINE_TYPE (EmpathyAccountWidget, empathy_account_widget, GTK_TYPE_BOX)
typedef enum
{
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);
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);
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",
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)
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,
{
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,
self->priv->remember_password_widget = GTK_WIDGET (
gtk_builder_get_object (self->ui_details->gui, "remember_password"));
}
+
+ return box;
}
static void
return NO_SERVICE;
}
-static void
+static GtkWidget *
account_widget_build_jabber (EmpathyAccountWidget *self,
const char *filename)
{
GtkWidget *label_example;
GtkWidget *expander_advanced;
GtkWidget *entry_id;
+ GtkWidget *box;
Service service;
service = account_widget_get_service (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,
{
/* 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,
{
/* 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);
/* 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,
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);
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,
{
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);
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,
{
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);
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,
{
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,
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,
{
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,
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
{
const TpConnectionManagerProtocol *protocol;
GtkWidget *radiobutton_register;
- GtkWidget *vbox = self->ui_details->widget;
if (!self->priv->creating_account)
return;
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);
}
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 },
WIDGET (sofiasip, sip),
};
const gchar *protocol, *cm_name;
+ GtkWidget *box;
account = empathy_account_settings_get_account (self->priv->settings);
filename = empathy_file_lookup (widgets[i].file,
"libempathy-gtk");
- widgets[i].func (self, filename);
+ box = widgets[i].func (self, filename);
g_free (filename);
break;
{
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)
{
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",
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);
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 *
* That's kinda ugly; cf bgo #640417.
*
* */
- EmpathyAccountWidget *setting_widget_object;
+ EmpathyAccountWidget *setting_widget;
gboolean connecting_show;
guint connecting_id;
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)
{
GtkTreeIter iter;
gboolean creating;
- g_object_get (priv->setting_widget_object,
+ g_object_get (priv->setting_widget,
"creating-account", &creating, NULL);
if (!creating)
{
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)
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));
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);
}
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);
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
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);
}
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 (
{
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);
}
}
{
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);
}
}
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: