]> git.0d.be Git - empathy.git/blob - libempathy/empathy-contact-list.c
Do not export symbols outside the empathy_ namespace.
[empathy.git] / libempathy / empathy-contact-list.c
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 /*
3  * Copyright (C) 2007 Collabora Ltd.
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18  *
19  * Authors: Xavier Claessens <xclaesse@gmail.com>
20  */
21
22 #include "config.h"
23
24 #include "empathy-contact-list.h"
25 #include "empathy-marshal.h"
26
27 static void contact_list_base_init (gpointer klass);
28
29 GType
30 empathy_contact_list_get_type (void)
31 {
32         static GType type = 0;
33
34         if (!type) {
35                 static const GTypeInfo type_info = {
36                         sizeof (EmpathyContactListIface),
37                         contact_list_base_init,
38                         NULL,
39                 };
40
41                 type = g_type_register_static (G_TYPE_INTERFACE,
42                                                "EmpathyContactList",
43                                                &type_info, 0);
44
45                 g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
46         }
47
48         return type;
49 }
50
51 static void
52 contact_list_base_init (gpointer klass)
53 {
54         static gboolean initialized = FALSE;
55
56         if (!initialized) {
57                 g_signal_new ("members-changed",
58                               G_TYPE_FROM_CLASS (klass),
59                               G_SIGNAL_RUN_LAST,
60                               0,
61                               NULL, NULL,
62                               _empathy_marshal_VOID__OBJECT_OBJECT_UINT_STRING_BOOLEAN,
63                               G_TYPE_NONE,
64                               5, EMPATHY_TYPE_CONTACT, EMPATHY_TYPE_CONTACT,
65                               G_TYPE_UINT, G_TYPE_STRING, G_TYPE_BOOLEAN);
66
67                 g_signal_new ("pendings-changed",
68                               G_TYPE_FROM_CLASS (klass),
69                               G_SIGNAL_RUN_LAST,
70                               0,
71                               NULL, NULL,
72                               _empathy_marshal_VOID__OBJECT_OBJECT_UINT_STRING_BOOLEAN,
73                               G_TYPE_NONE,
74                               5, EMPATHY_TYPE_CONTACT, EMPATHY_TYPE_CONTACT,
75                               G_TYPE_UINT, G_TYPE_STRING, G_TYPE_BOOLEAN);
76
77                 g_signal_new ("groups-changed",
78                               G_TYPE_FROM_CLASS (klass),
79                               G_SIGNAL_RUN_LAST,
80                               0,
81                               NULL, NULL,
82                               _empathy_marshal_VOID__OBJECT_STRING_BOOLEAN,
83                               G_TYPE_NONE,
84                               3, EMPATHY_TYPE_CONTACT, G_TYPE_STRING, G_TYPE_BOOLEAN);
85
86                 initialized = TRUE;
87         }
88 }
89
90 void
91 empathy_contact_list_add (EmpathyContactList *list,
92                           EmpathyContact     *contact,
93                           const gchar        *message)
94 {
95         g_return_if_fail (EMPATHY_IS_CONTACT_LIST (list));
96         g_return_if_fail (EMPATHY_IS_CONTACT (contact));
97
98         if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->add) {
99                 EMPATHY_CONTACT_LIST_GET_IFACE (list)->add (list, contact, message);
100         }
101 }
102
103 void
104 empathy_contact_list_remove (EmpathyContactList *list,
105                              EmpathyContact     *contact,
106                              const gchar        *message)
107 {
108         g_return_if_fail (EMPATHY_IS_CONTACT_LIST (list));
109         g_return_if_fail (EMPATHY_IS_CONTACT (contact));
110
111         if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove) {
112                 EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove (list, contact, message);
113         }
114 }
115
116 GList *
117 empathy_contact_list_get_members (EmpathyContactList *list)
118 {
119         g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST (list), NULL);
120
121         if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_members) {
122                 return EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_members (list);
123         }
124
125         return NULL;
126 }
127
128 GList *
129 empathy_contact_list_get_pendings (EmpathyContactList *list)
130 {
131         g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST (list), NULL);
132
133         if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_pendings) {
134                 return EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_pendings (list);
135         }
136
137         return NULL;
138 }
139
140 GList *
141 empathy_contact_list_get_all_groups (EmpathyContactList *list)
142 {
143         g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST (list), NULL);
144
145         if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_all_groups) {
146                 return EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_all_groups (list);
147         }
148
149         return NULL;
150 }
151
152 GList *
153 empathy_contact_list_get_groups (EmpathyContactList *list,
154                                  EmpathyContact     *contact)
155 {
156         g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST (list), NULL);
157         g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
158
159         if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_groups) {
160                 return EMPATHY_CONTACT_LIST_GET_IFACE (list)->get_groups (list, contact);
161         }
162
163         return NULL;
164 }
165
166 void
167 empathy_contact_list_add_to_group (EmpathyContactList *list,
168                                    EmpathyContact     *contact,
169                                    const gchar        *group)
170 {
171         g_return_if_fail (EMPATHY_IS_CONTACT_LIST (list));
172         g_return_if_fail (EMPATHY_IS_CONTACT (contact));
173         g_return_if_fail (group != NULL);
174
175         if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->add_to_group) {
176                 EMPATHY_CONTACT_LIST_GET_IFACE (list)->add_to_group (list, contact, group);
177         }
178 }
179
180 void
181 empathy_contact_list_remove_from_group (EmpathyContactList *list,
182                                         EmpathyContact     *contact,
183                                         const gchar        *group)
184 {
185         g_return_if_fail (EMPATHY_IS_CONTACT_LIST (list));
186         g_return_if_fail (EMPATHY_IS_CONTACT (contact));
187         g_return_if_fail (group != NULL);
188
189         if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove_from_group) {
190                 EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove_from_group (list, contact, group);
191         }
192 }
193
194 void
195 empathy_contact_list_rename_group (EmpathyContactList *list,
196                                    const gchar        *old_group,
197                                    const gchar        *new_group)
198 {
199         g_return_if_fail (EMPATHY_IS_CONTACT_LIST (list));
200         g_return_if_fail (old_group != NULL);
201         g_return_if_fail (new_group != NULL);
202
203         if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->rename_group) {
204                 EMPATHY_CONTACT_LIST_GET_IFACE (list)->rename_group (list, old_group, new_group);
205         }
206 }
207
208 void
209 empathy_contact_list_remove_group (EmpathyContactList *list,
210                                    const gchar *group)
211 {
212         g_return_if_fail (EMPATHY_IS_CONTACT_LIST (list));
213         g_return_if_fail (group != NULL);
214
215         if (EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove_group) {
216                 EMPATHY_CONTACT_LIST_GET_IFACE (list)->remove_group (list, group);
217         }
218 }
219