From 2a6cc7b7710e6be6416365320a3417f360583af3 Mon Sep 17 00:00:00 2001 From: Laurent Contzen Date: Wed, 4 Jul 2012 10:54:13 +0200 Subject: empathy-roster-model-manager: Pass an EmpathyIndividualManager to EmpathyRosterModelManager https://bugzilla.gnome.org/show_bug.cgi?id=680302 --- libempathy-gtk/empathy-roster-model-manager.c | 36 +++++++++++++++++++++------ libempathy-gtk/empathy-roster-model-manager.h | 4 ++- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/libempathy-gtk/empathy-roster-model-manager.c b/libempathy-gtk/empathy-roster-model-manager.c index 824013b86..c9b2620f8 100644 --- a/libempathy-gtk/empathy-roster-model-manager.c +++ b/libempathy-gtk/empathy-roster-model-manager.c @@ -36,7 +36,7 @@ G_DEFINE_TYPE_WITH_CODE (EmpathyRosterModelManager, enum { - PROP_FIRST_PROP = 1, + PROP_MANAGER = 1, N_PROPS }; @@ -51,7 +51,7 @@ static guint signals[LAST_SIGNAL]; struct _EmpathyRosterModelManagerPriv { - gpointer badger; + EmpathyIndividualManager *manager; }; static void @@ -60,10 +60,13 @@ empathy_roster_model_manager_get_property (GObject *object, GValue *value, GParamSpec *pspec) { - //EmpathyRosterModelManager *self = EMPATHY_ROSTER_MODEL_MANAGER (object); + EmpathyRosterModelManager *self = EMPATHY_ROSTER_MODEL_MANAGER (object); switch (property_id) { + case PROP_MANAGER: + g_value_set_object (value, self->priv->manager); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; @@ -76,10 +79,14 @@ empathy_roster_model_manager_set_property (GObject *object, const GValue *value, GParamSpec *pspec) { - //EmpathyRosterModelManager *self = EMPATHY_ROSTER_MODEL_MANAGER (object); + EmpathyRosterModelManager *self = EMPATHY_ROSTER_MODEL_MANAGER (object); switch (property_id) { + case PROP_MANAGER: + g_assert (self->priv->manager == NULL); /* construct only */ + self->priv->manager = g_value_dup_object (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; @@ -89,21 +96,25 @@ empathy_roster_model_manager_set_property (GObject *object, static void empathy_roster_model_manager_constructed (GObject *object) { - //EmpathyRosterModelManager *self = EMPATHY_ROSTER_MODEL_MANAGER (object); + EmpathyRosterModelManager *self = EMPATHY_ROSTER_MODEL_MANAGER (object); void (*chain_up) (GObject *) = ((GObjectClass *) empathy_roster_model_manager_parent_class)->constructed; if (chain_up != NULL) chain_up (object); + + g_assert (EMPATHY_IS_INDIVIDUAL_MANAGER (self->priv->manager)); } static void empathy_roster_model_manager_dispose (GObject *object) { - //EmpathyRosterModelManager *self = EMPATHY_ROSTER_MODEL_MANAGER (object); + EmpathyRosterModelManager *self = EMPATHY_ROSTER_MODEL_MANAGER (object); void (*chain_up) (GObject *) = ((GObjectClass *) empathy_roster_model_manager_parent_class)->dispose; + g_clear_object (&self->priv->manager); + if (chain_up != NULL) chain_up (object); } @@ -124,7 +135,7 @@ empathy_roster_model_manager_class_init ( EmpathyRosterModelManagerClass *klass) { GObjectClass *oclass = G_OBJECT_CLASS (klass); - //GParamSpec *spec; + GParamSpec *spec; oclass->get_property = empathy_roster_model_manager_get_property; oclass->set_property = empathy_roster_model_manager_set_property; @@ -132,6 +143,12 @@ empathy_roster_model_manager_class_init ( oclass->dispose = empathy_roster_model_manager_dispose; oclass->finalize = empathy_roster_model_manager_finalize; + spec = g_param_spec_object ("manager", "Manager", + "EmpathyIndividualManager", + EMPATHY_TYPE_INDIVIDUAL_MANAGER, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (oclass, PROP_MANAGER, spec); + g_type_class_add_private (klass, sizeof (EmpathyRosterModelManagerPriv)); } @@ -143,9 +160,12 @@ empathy_roster_model_manager_init (EmpathyRosterModelManager *self) } EmpathyRosterModelManager * -empathy_roster_model_manager_new (void) +empathy_roster_model_manager_new (EmpathyIndividualManager *manager) { + g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_MANAGER (manager), NULL); + return g_object_new (EMPATHY_TYPE_ROSTER_MODEL_MANAGER, + "manager", manager, NULL); } diff --git a/libempathy-gtk/empathy-roster-model-manager.h b/libempathy-gtk/empathy-roster-model-manager.h index 79474945c..8e1d25c43 100644 --- a/libempathy-gtk/empathy-roster-model-manager.h +++ b/libempathy-gtk/empathy-roster-model-manager.h @@ -23,6 +23,8 @@ #include +#include + G_BEGIN_DECLS typedef struct _EmpathyRosterModelManager EmpathyRosterModelManager; @@ -66,7 +68,7 @@ GType empathy_roster_model_manager_get_type (void); EMPATHY_TYPE_ROSTER_MODEL_MANAGER, \ EmpathyRosterModelManagerClass)) -EmpathyRosterModelManager * empathy_roster_model_manager_new (void); +EmpathyRosterModelManager * empathy_roster_model_manager_new (EmpathyIndividualManager *manager); G_END_DECLS -- cgit v1.2.3