The widget doesn't have to prepare EmpathyConnectionManagers itself any more
and so can populate its treeview right away. By doing so it will request a
more decent size and so the dialog will actually display the accounts which
can be imported without forcing user to resize it.
https://bugzilla.gnome.org/show_bug.cgi?id=670201
gtk_widget_show (w);
/* NOTE: this is hardcoded as we support pidgin only */
gtk_widget_show (w);
/* NOTE: this is hardcoded as we support pidgin only */
- iw = empathy_import_widget_new (EMPATHY_IMPORT_APPLICATION_PIDGIN);
+ iw = empathy_import_widget_new (EMPATHY_IMPORT_APPLICATION_PIDGIN,
+ priv->connection_mgrs);
import = empathy_import_widget_get_widget (iw);
gtk_container_add (GTK_CONTAINER (w), import);
gtk_widget_show (import);
import = empathy_import_widget_get_widget (iw);
gtk_container_add (GTK_CONTAINER (w), import);
gtk_widget_show (import);
static GtkWidget *
display_import_dialog (EmpathyAccountsDialog *dialog)
{
static GtkWidget *
display_import_dialog (EmpathyAccountsDialog *dialog)
{
+ EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog);
GtkWidget *import_dialog;
import_dialog = empathy_import_dialog_new (GTK_WINDOW (dialog),
GtkWidget *import_dialog;
import_dialog = empathy_import_dialog_new (GTK_WINDOW (dialog),
gtk_widget_show (import_dialog);
return import_dialog;
gtk_widget_show (import_dialog);
return import_dialog;
+ PROP_SHOW_WARNING,
+ PROP_CMS,
EmpathyImportWidget *iw;
gboolean show_warning;
EmpathyImportWidget *iw;
gboolean show_warning;
+ EmpathyConnectionManagers *cms;
} EmpathyImportDialogPriv;
G_DEFINE_TYPE (EmpathyImportDialog, empathy_import_dialog, GTK_TYPE_DIALOG)
} EmpathyImportDialogPriv;
G_DEFINE_TYPE (EmpathyImportDialog, empathy_import_dialog, GTK_TYPE_DIALOG)
area = gtk_dialog_get_content_area (GTK_DIALOG (self));
area = gtk_dialog_get_content_area (GTK_DIALOG (self));
- iw = empathy_import_widget_new (EMPATHY_IMPORT_APPLICATION_ALL);
+ iw = empathy_import_widget_new (EMPATHY_IMPORT_APPLICATION_ALL, priv->cms);
widget = empathy_import_widget_get_widget (iw);
gtk_box_pack_start (GTK_BOX (area), widget, FALSE, FALSE, 0);
gtk_widget_show (widget);
widget = empathy_import_widget_get_widget (iw);
gtk_box_pack_start (GTK_BOX (area), widget, FALSE, FALSE, 0);
gtk_widget_show (widget);
case PROP_SHOW_WARNING:
g_value_set_boolean (value, priv->show_warning);
break;
case PROP_SHOW_WARNING:
g_value_set_boolean (value, priv->show_warning);
break;
+ case PROP_CMS:
+ g_value_set_object (value, priv->cms);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
case PROP_SHOW_WARNING:
priv->show_warning = g_value_get_boolean (value);
break;
case PROP_SHOW_WARNING:
priv->show_warning = g_value_get_boolean (value);
break;
+ case PROP_CMS:
+ priv->cms = g_value_dup_object (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
gtk_window_set_title (GTK_WINDOW (self), _("Import Accounts"));
gtk_window_set_modal (GTK_WINDOW (self), TRUE);
}
gtk_window_set_title (GTK_WINDOW (self), _("Import Accounts"));
gtk_window_set_modal (GTK_WINDOW (self), TRUE);
}
+static void
+do_dispose (GObject *obj)
+{
+ EmpathyImportDialogPriv *priv = GET_PRIV (obj);
+
+ g_clear_object (&priv->cms);
+
+ G_OBJECT_CLASS (empathy_import_dialog_parent_class)->dispose (obj);
+}
static void
empathy_import_dialog_class_init (EmpathyImportDialogClass *klass)
static void
empathy_import_dialog_class_init (EmpathyImportDialogClass *klass)
oclass->constructed = do_constructed;
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->dispose = do_dispose;
gtkclass->response = impl_signal_response;
gtkclass->response = impl_signal_response;
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY);
g_object_class_install_property (oclass, PROP_SHOW_WARNING, param_spec);
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY);
g_object_class_install_property (oclass, PROP_SHOW_WARNING, param_spec);
+ param_spec = g_param_spec_object ("cms",
+ "EmpathyConnectionManagers", "EmpathyConnectionManager",
+ EMPATHY_TYPE_CONNECTION_MANAGERS,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY);
+ g_object_class_install_property (oclass, PROP_CMS, param_spec);
+
g_type_class_add_private (klass, sizeof (EmpathyImportDialogPriv));
}
GtkWidget *
empathy_import_dialog_new (GtkWindow *parent,
g_type_class_add_private (klass, sizeof (EmpathyImportDialogPriv));
}
GtkWidget *
empathy_import_dialog_new (GtkWindow *parent,
+ gboolean warning,
+ EmpathyConnectionManagers *cms)
- return g_object_new (EMPATHY_TYPE_IMPORT_DIALOG, "parent-window",
- parent, "show-warning", warning, NULL);
+ g_return_val_if_fail (EMPATHY_IS_CONNECTION_MANAGERS (cms), NULL);
+
+ return g_object_new (EMPATHY_TYPE_IMPORT_DIALOG,
+ "parent-window", parent,
+ "show-warning", warning,
+ "cms", cms,
+ NULL);
#ifndef __EMPATHY_IMPORT_DIALOG_H__
#define __EMPATHY_IMPORT_DIALOG_H__
#ifndef __EMPATHY_IMPORT_DIALOG_H__
#define __EMPATHY_IMPORT_DIALOG_H__
+#include <libempathy/empathy-connection-managers.h>
+
G_BEGIN_DECLS
#define EMPATHY_TYPE_IMPORT_DIALOG empathy_import_dialog_get_type()
G_BEGIN_DECLS
#define EMPATHY_TYPE_IMPORT_DIALOG empathy_import_dialog_get_type()
GType empathy_import_dialog_get_type (void);
GtkWidget* empathy_import_dialog_new (GtkWindow *parent_window,
GType empathy_import_dialog_get_type (void);
GtkWidget* empathy_import_dialog_new (GtkWindow *parent_window,
- gboolean show_warning);
+ gboolean show_warning,
+ EmpathyConnectionManagers *cms);
- PROP_APPLICATION_ID = 1
+ PROP_APPLICATION_ID = 1,
+ PROP_CMS
import_widget_add_accounts_to_model (self);
}
import_widget_add_accounts_to_model (self);
}
-static void
-import_widget_cms_prepare_cb (GObject *source,
- GAsyncResult *result,
- gpointer user_data)
-{
- EmpathyImportWidget *self = user_data;
-
- if (!empathy_connection_managers_prepare_finish (
- EMPATHY_CONNECTION_MANAGERS (source), result, NULL))
- return;
-
- import_widget_set_up_account_list (self);
-}
-
static void
import_widget_destroy_cb (GtkWidget *w,
EmpathyImportWidget *self)
static void
import_widget_destroy_cb (GtkWidget *w,
EmpathyImportWidget *self)
case PROP_APPLICATION_ID:
g_value_set_int (value, priv->app_id);
break;
case PROP_APPLICATION_ID:
g_value_set_int (value, priv->app_id);
break;
+ case PROP_CMS:
+ g_value_set_object (value, priv->cms);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
case PROP_APPLICATION_ID:
priv->app_id = g_value_get_int (value);
break;
case PROP_APPLICATION_ID:
priv->app_id = g_value_get_int (value);
break;
+ case PROP_CMS:
+ priv->cms = g_value_dup_object (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
g_signal_connect (priv->vbox, "destroy",
G_CALLBACK (import_widget_destroy_cb), self);
g_signal_connect (priv->vbox, "destroy",
G_CALLBACK (import_widget_destroy_cb), self);
- empathy_connection_managers_prepare_async (priv->cms,
- import_widget_cms_prepare_cb, self);
+ import_widget_set_up_account_list (self);
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY);
g_object_class_install_property (oclass, PROP_APPLICATION_ID, param_spec);
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY);
g_object_class_install_property (oclass, PROP_APPLICATION_ID, param_spec);
+ param_spec = g_param_spec_object ("cms",
+ "EmpathyConnectionManagers", "EmpathyConnectionManager",
+ EMPATHY_TYPE_CONNECTION_MANAGERS,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY);
+ g_object_class_install_property (oclass, PROP_CMS, param_spec);
+
g_type_class_add_private (klass, sizeof (EmpathyImportWidgetPriv));
}
g_type_class_add_private (klass, sizeof (EmpathyImportWidgetPriv));
}
EmpathyImportWidgetPriv);
self->priv = priv;
EmpathyImportWidgetPriv);
self->priv = priv;
-
- priv->cms = empathy_connection_managers_dup_singleton ();
-empathy_import_widget_new (EmpathyImportApplication id)
+empathy_import_widget_new (EmpathyImportApplication id,
+ EmpathyConnectionManagers *cms)
- return g_object_new (EMPATHY_TYPE_IMPORT_WIDGET, "application-id", id, NULL);
+ g_return_val_if_fail (EMPATHY_IS_CONNECTION_MANAGERS (cms), NULL);
+
+ return g_object_new (EMPATHY_TYPE_IMPORT_WIDGET,
+ "application-id", id,
+ "cms", cms,
+ NULL);
+#include <libempathy/empathy-connection-managers.h>
+
#include "empathy-import-utils.h"
G_BEGIN_DECLS
#include "empathy-import-utils.h"
G_BEGIN_DECLS
GType empathy_import_widget_get_type (void);
GType empathy_import_widget_get_type (void);
-EmpathyImportWidget* empathy_import_widget_new (EmpathyImportApplication id);
+EmpathyImportWidget* empathy_import_widget_new (EmpathyImportApplication id,
+ EmpathyConnectionManagers *cms);
GtkWidget * empathy_import_widget_get_widget (EmpathyImportWidget *self);
GtkWidget * empathy_import_widget_get_widget (EmpathyImportWidget *self);