]> git.0d.be Git - empathy.git/blob - libempathy-gtk/empathy-roster-view.c
1baefe22bf7cdbc5fa733cce7aa29ad63a17dd9c
[empathy.git] / libempathy-gtk / empathy-roster-view.c
1
2 #include "config.h"
3
4 #include "empathy-roster-view.h"
5
6 G_DEFINE_TYPE (EmpathyRosterView, empathy_roster_view, EGG_TYPE_LIST_BOX)
7
8 enum
9 {
10   PROP_MANAGER = 1,
11   N_PROPS
12 };
13
14 /*
15 enum
16 {
17   LAST_SIGNAL
18 };
19
20 static guint signals[LAST_SIGNAL];
21 */
22
23 struct _EmpathyRosterViewPriv
24 {
25   EmpathyIndividualManager *manager;
26 };
27
28 static void
29 empathy_roster_view_get_property (GObject *object,
30     guint property_id,
31     GValue *value,
32     GParamSpec *pspec)
33 {
34   EmpathyRosterView *self = EMPATHY_ROSTER_VIEW (object);
35
36   switch (property_id)
37     {
38       case PROP_MANAGER:
39         g_value_set_object (value, self->priv->manager);
40         break;
41       default:
42         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
43         break;
44     }
45 }
46
47 static void
48 empathy_roster_view_set_property (GObject *object,
49     guint property_id,
50     const GValue *value,
51     GParamSpec *pspec)
52 {
53   EmpathyRosterView *self = EMPATHY_ROSTER_VIEW (object);
54
55   switch (property_id)
56     {
57       case PROP_MANAGER:
58         g_assert (self->priv->manager == NULL); /* construct only */
59         self->priv->manager = g_value_dup_object (value);
60         break;
61       default:
62         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
63         break;
64     }
65 }
66
67 static void
68 empathy_roster_view_constructed (GObject *object)
69 {
70   EmpathyRosterView *self = EMPATHY_ROSTER_VIEW (object);
71   void (*chain_up) (GObject *) =
72       ((GObjectClass *) empathy_roster_view_parent_class)->constructed;
73
74   if (chain_up != NULL)
75     chain_up (object);
76
77   g_assert (EMPATHY_IS_INDIVIDUAL_MANAGER (self->priv->manager));
78 }
79
80 static void
81 empathy_roster_view_dispose (GObject *object)
82 {
83   EmpathyRosterView *self = EMPATHY_ROSTER_VIEW (object);
84   void (*chain_up) (GObject *) =
85       ((GObjectClass *) empathy_roster_view_parent_class)->dispose;
86
87   g_clear_object (&self->priv->manager);
88
89   if (chain_up != NULL)
90     chain_up (object);
91 }
92
93 static void
94 empathy_roster_view_finalize (GObject *object)
95 {
96   //EmpathyRosterView *self = EMPATHY_ROSTER_VIEW (object);
97   void (*chain_up) (GObject *) =
98       ((GObjectClass *) empathy_roster_view_parent_class)->finalize;
99
100   if (chain_up != NULL)
101     chain_up (object);
102 }
103
104 static void
105 empathy_roster_view_class_init (
106     EmpathyRosterViewClass *klass)
107 {
108   GObjectClass *oclass = G_OBJECT_CLASS (klass);
109   GParamSpec *spec;
110
111   oclass->get_property = empathy_roster_view_get_property;
112   oclass->set_property = empathy_roster_view_set_property;
113   oclass->constructed = empathy_roster_view_constructed;
114   oclass->dispose = empathy_roster_view_dispose;
115   oclass->finalize = empathy_roster_view_finalize;
116
117   spec = g_param_spec_object ("manager", "Manager",
118       "EmpathyIndividualManager",
119       EMPATHY_TYPE_INDIVIDUAL_MANAGER,
120       G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
121   g_object_class_install_property (oclass, PROP_MANAGER, spec);
122
123   g_type_class_add_private (klass, sizeof (EmpathyRosterViewPriv));
124 }
125
126 static void
127 empathy_roster_view_init (EmpathyRosterView *self)
128 {
129   self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
130       EMPATHY_TYPE_ROSTER_VIEW, EmpathyRosterViewPriv);
131 }
132
133 GtkWidget *
134 empathy_roster_view_new (EmpathyIndividualManager *manager)
135 {
136   g_return_val_if_fail (EMPATHY_IS_INDIVIDUAL_MANAGER (manager), NULL);
137
138   return g_object_new (EMPATHY_TYPE_ROSTER_VIEW,
139       "manager", manager,
140       NULL);
141 }
142
143 EmpathyIndividualManager *
144 empathy_roster_view_get_manager (EmpathyRosterView *self)
145 {
146   return self->priv->manager;
147 }