~ubuntu-branches/ubuntu/precise/folks/precise

« back to all changes in this revision

Viewing changes to backends/libsocialweb/lib/swf-persona-store.c

  • Committer: Bazaar Package Importer
  • Author(s): Ken VanDine
  • Date: 2011-06-10 11:28:11 UTC
  • mfrom: (1.2.11 upstream) (4.2.1 experimental)
  • Revision ID: james.westby@ubuntu.com-20110610112811-whyeodbo9mjezxfp
Tags: 0.5.2-1ubuntu1
* Merge with Debian experimental, remaining Ubuntu changes:
  - debian/control:
    + Add Vcs-Bzr link

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* swf-persona-store.c generated by valac 0.12.0, the Vala compiler
 
2
 * generated from swf-persona-store.vala, do not modify */
 
3
 
 
4
/*
 
5
 * Copyright (C) 2010 Collabora Ltd.
 
6
 *
 
7
 * This library is free software: you can redistribute it and/or modify
 
8
 * it under the terms of the GNU Lesser General Public License as published by
 
9
 * the Free Software Foundation, either version 2.1 of the License, or
 
10
 * (at your option) any later version.
 
11
 *
 
12
 * This library is distributed in the hope that it will be useful,
 
13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
15
 * GNU Lesser General Public License for more details.
 
16
 *
 
17
 * You should have received a copy of the GNU Lesser General Public License
 
18
 * along with this library.  If not, see <http://www.gnu.org/licenses/>.
 
19
 *
 
20
 * Authors:
 
21
 *       Travis Reitter <travis.reitter@collabora.co.uk>
 
22
 *       Philip Withnall <philip.withnall@collabora.co.uk>
 
23
 *       Marco Barisione <marco.barisione@collabora.co.uk>
 
24
 */
 
25
 
 
26
#include <glib.h>
 
27
#include <glib-object.h>
 
28
#include <folks/folks.h>
 
29
#include <gee.h>
 
30
#include <stdlib.h>
 
31
#include <string.h>
 
32
#include <libsocialweb-client/libsocialweb-client-hack-for-vala.h>
 
33
#include <gio/gio.h>
 
34
 
 
35
 
 
36
#define SWF_TYPE_PERSONA_STORE (swf_persona_store_get_type ())
 
37
#define SWF_PERSONA_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWF_TYPE_PERSONA_STORE, SwfPersonaStore))
 
38
#define SWF_PERSONA_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SWF_TYPE_PERSONA_STORE, SwfPersonaStoreClass))
 
39
#define SWF_IS_PERSONA_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWF_TYPE_PERSONA_STORE))
 
40
#define SWF_IS_PERSONA_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SWF_TYPE_PERSONA_STORE))
 
41
#define SWF_PERSONA_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SWF_TYPE_PERSONA_STORE, SwfPersonaStoreClass))
 
42
 
 
43
typedef struct _SwfPersonaStore SwfPersonaStore;
 
44
typedef struct _SwfPersonaStoreClass SwfPersonaStoreClass;
 
45
typedef struct _SwfPersonaStorePrivate SwfPersonaStorePrivate;
 
46
 
 
47
#define SWF_TYPE_PERSONA (swf_persona_get_type ())
 
48
#define SWF_PERSONA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWF_TYPE_PERSONA, SwfPersona))
 
49
#define SWF_PERSONA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SWF_TYPE_PERSONA, SwfPersonaClass))
 
50
#define SWF_IS_PERSONA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWF_TYPE_PERSONA))
 
51
#define SWF_IS_PERSONA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SWF_TYPE_PERSONA))
 
52
#define SWF_PERSONA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SWF_TYPE_PERSONA, SwfPersonaClass))
 
53
 
 
54
typedef struct _SwfPersona SwfPersona;
 
55
typedef struct _SwfPersonaClass SwfPersonaClass;
 
56
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
 
57
#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
 
58
typedef struct _SwfPersonaStoreAddPersonaFromDetailsData SwfPersonaStoreAddPersonaFromDetailsData;
 
59
typedef struct _SwfPersonaStoreRemovePersonaData SwfPersonaStoreRemovePersonaData;
 
60
typedef struct _SwfPersonaStorePrepareData SwfPersonaStorePrepareData;
 
61
#define _g_free0(var) (var = (g_free (var), NULL))
 
62
 
 
63
struct _SwfPersonaStore {
 
64
        FolksPersonaStore parent_instance;
 
65
        SwfPersonaStorePrivate * priv;
 
66
};
 
67
 
 
68
struct _SwfPersonaStoreClass {
 
69
        FolksPersonaStoreClass parent_class;
 
70
};
 
71
 
 
72
struct _SwfPersonaStorePrivate {
 
73
        GeeHashMap* _personas;
 
74
        GeeMap* _personas_ro;
 
75
        gboolean _is_prepared;
 
76
        GStaticRecMutex __lock__is_prepared;
 
77
        SwClientService* _service;
 
78
        SwClientContactView* _contact_view;
 
79
};
 
80
 
 
81
struct _SwfPersonaStoreAddPersonaFromDetailsData {
 
82
        int _state_;
 
83
        GObject* _source_object_;
 
84
        GAsyncResult* _res_;
 
85
        GSimpleAsyncResult* _async_result;
 
86
        SwfPersonaStore* self;
 
87
        GHashTable* details;
 
88
        FolksPersona* result;
 
89
        GError* _tmp0_;
 
90
        GError * _inner_error_;
 
91
};
 
92
 
 
93
struct _SwfPersonaStoreRemovePersonaData {
 
94
        int _state_;
 
95
        GObject* _source_object_;
 
96
        GAsyncResult* _res_;
 
97
        GSimpleAsyncResult* _async_result;
 
98
        SwfPersonaStore* self;
 
99
        FolksPersona* persona;
 
100
        GError* _tmp0_;
 
101
        GError * _inner_error_;
 
102
};
 
103
 
 
104
struct _SwfPersonaStorePrepareData {
 
105
        int _state_;
 
106
        GObject* _source_object_;
 
107
        GAsyncResult* _res_;
 
108
        GSimpleAsyncResult* _async_result;
 
109
        SwfPersonaStore* self;
 
110
        GError * _inner_error_;
 
111
};
 
112
 
 
113
 
 
114
static gpointer swf_persona_store_parent_class = NULL;
 
115
 
 
116
GType swf_persona_store_get_type (void) G_GNUC_CONST;
 
117
GType swf_persona_get_type (void) G_GNUC_CONST;
 
118
#define SWF_PERSONA_STORE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), SWF_TYPE_PERSONA_STORE, SwfPersonaStorePrivate))
 
119
enum  {
 
120
        SWF_PERSONA_STORE_DUMMY_PROPERTY,
 
121
        SWF_PERSONA_STORE_TYPE_ID,
 
122
        SWF_PERSONA_STORE_CAN_ADD_PERSONAS,
 
123
        SWF_PERSONA_STORE_CAN_ALIAS_PERSONAS,
 
124
        SWF_PERSONA_STORE_CAN_GROUP_PERSONAS,
 
125
        SWF_PERSONA_STORE_CAN_REMOVE_PERSONAS,
 
126
        SWF_PERSONA_STORE_IS_PREPARED,
 
127
        SWF_PERSONA_STORE_PERSONAS
 
128
};
 
129
static void swf_persona_store_contacts_added_cb (SwfPersonaStore* self, GList* contacts);
 
130
static void _swf_persona_store_contacts_added_cb_sw_client_contact_view_contacts_added (SwClientContactView* _sender, GList* contact_view, gpointer self);
 
131
static void swf_persona_store_contacts_changed_cb (SwfPersonaStore* self, GList* contacts);
 
132
static void _swf_persona_store_contacts_changed_cb_sw_client_contact_view_contacts_changed (SwClientContactView* _sender, GList* contact_view, gpointer self);
 
133
static void swf_persona_store_contacts_removed_cb (SwfPersonaStore* self, GList* contacts);
 
134
static void _swf_persona_store_contacts_removed_cb_sw_client_contact_view_contacts_removed (SwClientContactView* _sender, GList* contact_view, gpointer self);
 
135
SwfPersonaStore* swf_persona_store_new (SwClientService* service);
 
136
SwfPersonaStore* swf_persona_store_construct (GType object_type, SwClientService* service);
 
137
static void swf_persona_store_real_add_persona_from_details_data_free (gpointer _data);
 
138
static void swf_persona_store_real_add_persona_from_details (FolksPersonaStore* base, GHashTable* details, GAsyncReadyCallback _callback_, gpointer _user_data_);
 
139
static gboolean swf_persona_store_real_add_persona_from_details_co (SwfPersonaStoreAddPersonaFromDetailsData* data);
 
140
static void swf_persona_store_real_remove_persona_data_free (gpointer _data);
 
141
static void swf_persona_store_real_remove_persona (FolksPersonaStore* base, FolksPersona* persona, GAsyncReadyCallback _callback_, gpointer _user_data_);
 
142
static gboolean swf_persona_store_real_remove_persona_co (SwfPersonaStoreRemovePersonaData* data);
 
143
static void swf_persona_store_real_prepare_data_free (gpointer _data);
 
144
static void swf_persona_store_real_prepare (FolksPersonaStore* base, GAsyncReadyCallback _callback_, gpointer _user_data_);
 
145
static gboolean swf_persona_store_real_prepare_co (SwfPersonaStorePrepareData* data);
 
146
static void _lambda0_ (SwClientService* service, gchar** caps, int caps_length1, GError* _error_, SwfPersonaStore* self);
 
147
static void _lambda1_ (SwClientService* query, SwClientContactView* contact_view, SwfPersonaStore* self);
 
148
static void __lambda1__sw_client_service_contacts_query_open_view_callback (SwClientService* query, SwClientContactView* contact_view, gpointer self);
 
149
static void __lambda0__sw_client_service_get_capabilities_callback (SwClientService* service, gchar** caps, GError* _error_, gpointer self);
 
150
SwfPersona* swf_persona_new (SwfPersonaStore* store, SwContact* contact);
 
151
SwfPersona* swf_persona_construct (GType object_type, SwfPersonaStore* store, SwContact* contact);
 
152
gchar* _swf_persona_build_iid (const gchar* store_id, const gchar* lsw_id);
 
153
gchar* swf_persona_get_contact_id (SwContact* contact);
 
154
void swf_persona_update (SwfPersona* self, SwContact* contact);
 
155
static void swf_persona_store_finalize (GObject* obj);
 
156
static void _vala_swf_persona_store_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
 
157
 
 
158
 
 
159
static void _swf_persona_store_contacts_added_cb_sw_client_contact_view_contacts_added (SwClientContactView* _sender, GList* contact_view, gpointer self) {
 
160
        swf_persona_store_contacts_added_cb (self, contact_view);
 
161
}
 
162
 
 
163
 
 
164
static void _swf_persona_store_contacts_changed_cb_sw_client_contact_view_contacts_changed (SwClientContactView* _sender, GList* contact_view, gpointer self) {
 
165
        swf_persona_store_contacts_changed_cb (self, contact_view);
 
166
}
 
167
 
 
168
 
 
169
static void _swf_persona_store_contacts_removed_cb_sw_client_contact_view_contacts_removed (SwClientContactView* _sender, GList* contact_view, gpointer self) {
 
170
        swf_persona_store_contacts_removed_cb (self, contact_view);
 
171
}
 
172
 
 
173
 
 
174
/**
 
175
   * Create a new PersonaStore.
 
176
   *
 
177
   * Create a new persona store to store the {@link Persona}s for the contacts
 
178
   * provided by the `service`.
 
179
   */
 
180
static gpointer _g_object_ref0 (gpointer self) {
 
181
        return self ? g_object_ref (self) : NULL;
 
182
}
 
183
 
 
184
 
 
185
SwfPersonaStore* swf_persona_store_construct (GType object_type, SwClientService* service) {
 
186
        SwfPersonaStore * self = NULL;
 
187
        const gchar* _tmp0_ = NULL;
 
188
        const gchar* _tmp1_ = NULL;
 
189
        SwClientService* _tmp2_;
 
190
        GeeHashMap* _tmp3_ = NULL;
 
191
        GeeMap* _tmp4_ = NULL;
 
192
        g_return_val_if_fail (service != NULL, NULL);
 
193
        _tmp0_ = sw_client_service_get_display_name (service);
 
194
        _tmp1_ = sw_client_service_get_name (service);
 
195
        self = (SwfPersonaStore*) g_object_new (object_type, "display-name", _tmp0_, "id", _tmp1_, NULL);
 
196
        folks_persona_store_set_trust_level ((FolksPersonaStore*) self, FOLKS_PERSONA_STORE_TRUST_PARTIAL);
 
197
        _tmp2_ = _g_object_ref0 (service);
 
198
        _g_object_unref0 (self->priv->_service);
 
199
        self->priv->_service = _tmp2_;
 
200
        _tmp3_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, SWF_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL);
 
201
        _g_object_unref0 (self->priv->_personas);
 
202
        self->priv->_personas = _tmp3_;
 
203
        _tmp4_ = gee_abstract_map_get_read_only_view ((GeeAbstractMap*) self->priv->_personas);
 
204
        _g_object_unref0 (self->priv->_personas_ro);
 
205
        self->priv->_personas_ro = _tmp4_;
 
206
        return self;
 
207
}
 
208
 
 
209
 
 
210
SwfPersonaStore* swf_persona_store_new (SwClientService* service) {
 
211
        return swf_persona_store_construct (SWF_TYPE_PERSONA_STORE, service);
 
212
}
 
213
 
 
214
 
 
215
static void swf_persona_store_real_add_persona_from_details_data_free (gpointer _data) {
 
216
        SwfPersonaStoreAddPersonaFromDetailsData* data;
 
217
        data = _data;
 
218
        _g_hash_table_unref0 (data->details);
 
219
        _g_object_unref0 (data->result);
 
220
        _g_object_unref0 (data->self);
 
221
        g_slice_free (SwfPersonaStoreAddPersonaFromDetailsData, data);
 
222
}
 
223
 
 
224
 
 
225
static gpointer _g_hash_table_ref0 (gpointer self) {
 
226
        return self ? g_hash_table_ref (self) : NULL;
 
227
}
 
228
 
 
229
 
 
230
static void swf_persona_store_real_add_persona_from_details (FolksPersonaStore* base, GHashTable* details, GAsyncReadyCallback _callback_, gpointer _user_data_) {
 
231
        SwfPersonaStore * self;
 
232
        SwfPersonaStoreAddPersonaFromDetailsData* _data_;
 
233
        self = (SwfPersonaStore*) base;
 
234
        _data_ = g_slice_new0 (SwfPersonaStoreAddPersonaFromDetailsData);
 
235
        _data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, swf_persona_store_real_add_persona_from_details);
 
236
        g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, swf_persona_store_real_add_persona_from_details_data_free);
 
237
        _data_->self = _g_object_ref0 (self);
 
238
        _data_->details = _g_hash_table_ref0 (details);
 
239
        swf_persona_store_real_add_persona_from_details_co (_data_);
 
240
}
 
241
 
 
242
 
 
243
static FolksPersona* swf_persona_store_real_add_persona_from_details_finish (FolksPersonaStore* base, GAsyncResult* _res_, GError** error) {
 
244
        FolksPersona* result;
 
245
        SwfPersonaStoreAddPersonaFromDetailsData* _data_;
 
246
        if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (_res_), error)) {
 
247
                return NULL;
 
248
        }
 
249
        _data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
 
250
        result = _data_->result;
 
251
        _data_->result = NULL;
 
252
        return result;
 
253
}
 
254
 
 
255
 
 
256
/**
 
257
   * Add a new {@link Persona} to the PersonaStore.
 
258
   *
 
259
   * See {@link Folks.PersonaStore.add_persona_from_details}.
 
260
   */
 
261
static gboolean swf_persona_store_real_add_persona_from_details_co (SwfPersonaStoreAddPersonaFromDetailsData* data) {
 
262
        switch (data->_state_) {
 
263
                case 0:
 
264
                goto _state_0;
 
265
                default:
 
266
                g_assert_not_reached ();
 
267
        }
 
268
        _state_0:
 
269
        data->_tmp0_ = NULL;
 
270
        data->_tmp0_ = g_error_new_literal (FOLKS_PERSONA_STORE_ERROR, FOLKS_PERSONA_STORE_ERROR_READ_ONLY, "Personas cannot be added to this store.");
 
271
        data->_inner_error_ = data->_tmp0_;
 
272
        if (data->_inner_error_->domain == FOLKS_PERSONA_STORE_ERROR) {
 
273
                g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_);
 
274
                g_error_free (data->_inner_error_);
 
275
                if (data->_state_ == 0) {
 
276
                        g_simple_async_result_complete_in_idle (data->_async_result);
 
277
                } else {
 
278
                        g_simple_async_result_complete (data->_async_result);
 
279
                }
 
280
                g_object_unref (data->_async_result);
 
281
                return FALSE;
 
282
        } else {
 
283
                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, data->_inner_error_->message, g_quark_to_string (data->_inner_error_->domain), data->_inner_error_->code);
 
284
                g_clear_error (&data->_inner_error_);
 
285
                return FALSE;
 
286
        }
 
287
        if (data->_state_ == 0) {
 
288
                g_simple_async_result_complete_in_idle (data->_async_result);
 
289
        } else {
 
290
                g_simple_async_result_complete (data->_async_result);
 
291
        }
 
292
        g_object_unref (data->_async_result);
 
293
        return FALSE;
 
294
}
 
295
 
 
296
 
 
297
static void swf_persona_store_real_remove_persona_data_free (gpointer _data) {
 
298
        SwfPersonaStoreRemovePersonaData* data;
 
299
        data = _data;
 
300
        _g_object_unref0 (data->persona);
 
301
        _g_object_unref0 (data->self);
 
302
        g_slice_free (SwfPersonaStoreRemovePersonaData, data);
 
303
}
 
304
 
 
305
 
 
306
static void swf_persona_store_real_remove_persona (FolksPersonaStore* base, FolksPersona* persona, GAsyncReadyCallback _callback_, gpointer _user_data_) {
 
307
        SwfPersonaStore * self;
 
308
        SwfPersonaStoreRemovePersonaData* _data_;
 
309
        self = (SwfPersonaStore*) base;
 
310
        _data_ = g_slice_new0 (SwfPersonaStoreRemovePersonaData);
 
311
        _data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, swf_persona_store_real_remove_persona);
 
312
        g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, swf_persona_store_real_remove_persona_data_free);
 
313
        _data_->self = _g_object_ref0 (self);
 
314
        _data_->persona = _g_object_ref0 (persona);
 
315
        swf_persona_store_real_remove_persona_co (_data_);
 
316
}
 
317
 
 
318
 
 
319
static void swf_persona_store_real_remove_persona_finish (FolksPersonaStore* base, GAsyncResult* _res_, GError** error) {
 
320
        SwfPersonaStoreRemovePersonaData* _data_;
 
321
        if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (_res_), error)) {
 
322
                return;
 
323
        }
 
324
        _data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
 
325
}
 
326
 
 
327
 
 
328
/**
 
329
   * Remove a {@link Persona} from the PersonaStore.
 
330
   *
 
331
   * See {@link Folks.PersonaStore.remove_persona}.
 
332
   */
 
333
static gboolean swf_persona_store_real_remove_persona_co (SwfPersonaStoreRemovePersonaData* data) {
 
334
        switch (data->_state_) {
 
335
                case 0:
 
336
                goto _state_0;
 
337
                default:
 
338
                g_assert_not_reached ();
 
339
        }
 
340
        _state_0:
 
341
        data->_tmp0_ = NULL;
 
342
        data->_tmp0_ = g_error_new_literal (FOLKS_PERSONA_STORE_ERROR, FOLKS_PERSONA_STORE_ERROR_READ_ONLY, "Personas cannot be removed from this store.");
 
343
        data->_inner_error_ = data->_tmp0_;
 
344
        if (data->_inner_error_->domain == FOLKS_PERSONA_STORE_ERROR) {
 
345
                g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_);
 
346
                g_error_free (data->_inner_error_);
 
347
                if (data->_state_ == 0) {
 
348
                        g_simple_async_result_complete_in_idle (data->_async_result);
 
349
                } else {
 
350
                        g_simple_async_result_complete (data->_async_result);
 
351
                }
 
352
                g_object_unref (data->_async_result);
 
353
                return FALSE;
 
354
        } else {
 
355
                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, data->_inner_error_->message, g_quark_to_string (data->_inner_error_->domain), data->_inner_error_->code);
 
356
                g_clear_error (&data->_inner_error_);
 
357
                return FALSE;
 
358
        }
 
359
        if (data->_state_ == 0) {
 
360
                g_simple_async_result_complete_in_idle (data->_async_result);
 
361
        } else {
 
362
                g_simple_async_result_complete (data->_async_result);
 
363
        }
 
364
        g_object_unref (data->_async_result);
 
365
        return FALSE;
 
366
}
 
367
 
 
368
 
 
369
static void swf_persona_store_real_prepare_data_free (gpointer _data) {
 
370
        SwfPersonaStorePrepareData* data;
 
371
        data = _data;
 
372
        _g_object_unref0 (data->self);
 
373
        g_slice_free (SwfPersonaStorePrepareData, data);
 
374
}
 
375
 
 
376
 
 
377
static void swf_persona_store_real_prepare (FolksPersonaStore* base, GAsyncReadyCallback _callback_, gpointer _user_data_) {
 
378
        SwfPersonaStore * self;
 
379
        SwfPersonaStorePrepareData* _data_;
 
380
        self = (SwfPersonaStore*) base;
 
381
        _data_ = g_slice_new0 (SwfPersonaStorePrepareData);
 
382
        _data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, swf_persona_store_real_prepare);
 
383
        g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, swf_persona_store_real_prepare_data_free);
 
384
        _data_->self = _g_object_ref0 (self);
 
385
        swf_persona_store_real_prepare_co (_data_);
 
386
}
 
387
 
 
388
 
 
389
static void swf_persona_store_real_prepare_finish (FolksPersonaStore* base, GAsyncResult* _res_, GError** error) {
 
390
        SwfPersonaStorePrepareData* _data_;
 
391
        _data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
 
392
}
 
393
 
 
394
 
 
395
/**
 
396
   * Prepare the PersonaStore for use.
 
397
   *
 
398
   * See {@link Folks.PersonaStore.prepare}.
 
399
   */
 
400
static void _lambda1_ (SwClientService* query, SwClientContactView* contact_view, SwfPersonaStore* self) {
 
401
        SwClientContactView* _tmp0_;
 
402
        g_return_if_fail (query != NULL);
 
403
        if (contact_view == NULL) {
 
404
                return;
 
405
        }
 
406
        g_signal_connect_object (contact_view, "contacts-added", (GCallback) _swf_persona_store_contacts_added_cb_sw_client_contact_view_contacts_added, self, 0);
 
407
        g_signal_connect_object (contact_view, "contacts-changed", (GCallback) _swf_persona_store_contacts_changed_cb_sw_client_contact_view_contacts_changed, self, 0);
 
408
        g_signal_connect_object (contact_view, "contacts-removed", (GCallback) _swf_persona_store_contacts_removed_cb_sw_client_contact_view_contacts_removed, self, 0);
 
409
        _tmp0_ = _g_object_ref0 (contact_view);
 
410
        _g_object_unref0 (self->priv->_contact_view);
 
411
        self->priv->_contact_view = _tmp0_;
 
412
        self->priv->_is_prepared = TRUE;
 
413
        g_object_notify ((GObject*) self, "is-prepared");
 
414
        sw_client_contact_view_start (self->priv->_contact_view);
 
415
}
 
416
 
 
417
 
 
418
static void __lambda1__sw_client_service_contacts_query_open_view_callback (SwClientService* query, SwClientContactView* contact_view, gpointer self) {
 
419
        _lambda1_ (query, contact_view, self);
 
420
}
 
421
 
 
422
 
 
423
static void _lambda0_ (SwClientService* service, gchar** caps, int caps_length1, GError* _error_, SwfPersonaStore* self) {
 
424
        gboolean _tmp0_;
 
425
        gboolean has_contacts;
 
426
        GHashTable* _tmp1_ = NULL;
 
427
        GHashTable* parameters;
 
428
        g_return_if_fail (service != NULL);
 
429
        if (caps == NULL) {
 
430
                return;
 
431
        }
 
432
        _tmp0_ = sw_client_service_has_cap (caps, "has-contacts-query-iface");
 
433
        has_contacts = _tmp0_;
 
434
        if (!has_contacts) {
 
435
                return;
 
436
        }
 
437
        _tmp1_ = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, NULL);
 
438
        parameters = _tmp1_;
 
439
        sw_client_service_contacts_query_open_view (self->priv->_service, "people", parameters, __lambda1__sw_client_service_contacts_query_open_view_callback, self);
 
440
        _g_hash_table_unref0 (parameters);
 
441
}
 
442
 
 
443
 
 
444
static void __lambda0__sw_client_service_get_capabilities_callback (SwClientService* service, gchar** caps, GError* _error_, gpointer self) {
 
445
        _lambda0_ (service, caps, -1, _error_, self);
 
446
}
 
447
 
 
448
 
 
449
static gboolean swf_persona_store_real_prepare_co (SwfPersonaStorePrepareData* data) {
 
450
        switch (data->_state_) {
 
451
                case 0:
 
452
                goto _state_0;
 
453
                default:
 
454
                g_assert_not_reached ();
 
455
        }
 
456
        _state_0:
 
457
        {
 
458
                g_static_rec_mutex_lock (&data->self->priv->__lock__is_prepared);
 
459
                if (!data->self->priv->_is_prepared) {
 
460
                        sw_client_service_get_static_capabilities (data->self->priv->_service, __lambda0__sw_client_service_get_capabilities_callback, data->self);
 
461
                }
 
462
                __finally2:
 
463
                g_static_rec_mutex_unlock (&data->self->priv->__lock__is_prepared);
 
464
                if (data->_inner_error_ != NULL) {
 
465
                        g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, data->_inner_error_->message, g_quark_to_string (data->_inner_error_->domain), data->_inner_error_->code);
 
466
                        g_clear_error (&data->_inner_error_);
 
467
                        return FALSE;
 
468
                }
 
469
        }
 
470
        if (data->_state_ == 0) {
 
471
                g_simple_async_result_complete_in_idle (data->_async_result);
 
472
        } else {
 
473
                g_simple_async_result_complete (data->_async_result);
 
474
        }
 
475
        g_object_unref (data->_async_result);
 
476
        return FALSE;
 
477
}
 
478
 
 
479
 
 
480
static void swf_persona_store_contacts_added_cb (SwfPersonaStore* self, GList* contacts) {
 
481
        GeeHashSet* _tmp0_ = NULL;
 
482
        GeeHashSet* added_personas;
 
483
        gint _tmp3_;
 
484
        g_return_if_fail (self != NULL);
 
485
        _tmp0_ = gee_hash_set_new (SWF_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
 
486
        added_personas = _tmp0_;
 
487
        {
 
488
                GList* contact_collection;
 
489
                GList* contact_it;
 
490
                contact_collection = contacts;
 
491
                for (contact_it = contact_collection; contact_it != NULL; contact_it = contact_it->next) {
 
492
                        SwContact* contact;
 
493
                        contact = (SwContact*) contact_it->data;
 
494
                        {
 
495
                                SwfPersona* _tmp1_ = NULL;
 
496
                                SwfPersona* persona;
 
497
                                const gchar* _tmp2_ = NULL;
 
498
                                _tmp1_ = swf_persona_new (self, contact);
 
499
                                persona = _tmp1_;
 
500
                                _tmp2_ = folks_persona_get_iid ((FolksPersona*) persona);
 
501
                                gee_abstract_map_set ((GeeAbstractMap*) self->priv->_personas, _tmp2_, persona);
 
502
                                gee_abstract_collection_add ((GeeAbstractCollection*) added_personas, persona);
 
503
                                _g_object_unref0 (persona);
 
504
                        }
 
505
                }
 
506
        }
 
507
        _tmp3_ = gee_collection_get_size ((GeeCollection*) added_personas);
 
508
        if (_tmp3_ > 0) {
 
509
                _folks_persona_store_emit_personas_changed ((FolksPersonaStore*) self, (GeeSet*) added_personas, NULL, NULL, NULL, FOLKS_GROUP_DETAILS_CHANGE_REASON_NONE);
 
510
        }
 
511
        _g_object_unref0 (added_personas);
 
512
}
 
513
 
 
514
 
 
515
static void swf_persona_store_contacts_changed_cb (SwfPersonaStore* self, GList* contacts) {
 
516
        g_return_if_fail (self != NULL);
 
517
        {
 
518
                GList* contact_collection;
 
519
                GList* contact_it;
 
520
                contact_collection = contacts;
 
521
                for (contact_it = contact_collection; contact_it != NULL; contact_it = contact_it->next) {
 
522
                        SwContact* contact;
 
523
                        contact = (SwContact*) contact_it->data;
 
524
                        {
 
525
                                const gchar* _tmp0_ = NULL;
 
526
                                gchar* _tmp1_ = NULL;
 
527
                                gchar* _tmp2_;
 
528
                                gchar* _tmp3_ = NULL;
 
529
                                gchar* _tmp4_;
 
530
                                gchar* iid;
 
531
                                gpointer _tmp5_ = NULL;
 
532
                                SwfPersona* persona;
 
533
                                _tmp0_ = sw_client_service_get_name (self->priv->_service);
 
534
                                if (g_strcmp0 (_tmp0_, contact->service) != 0) {
 
535
                                        continue;
 
536
                                }
 
537
                                _tmp1_ = swf_persona_get_contact_id (contact);
 
538
                                _tmp2_ = _tmp1_;
 
539
                                _tmp3_ = _swf_persona_build_iid (contact->service, _tmp2_);
 
540
                                _tmp4_ = _tmp3_;
 
541
                                _g_free0 (_tmp2_);
 
542
                                iid = _tmp4_;
 
543
                                _tmp5_ = gee_abstract_map_get ((GeeAbstractMap*) self->priv->_personas, iid);
 
544
                                persona = (SwfPersona*) _tmp5_;
 
545
                                if (persona != NULL) {
 
546
                                        swf_persona_update (persona, contact);
 
547
                                }
 
548
                                _g_object_unref0 (persona);
 
549
                                _g_free0 (iid);
 
550
                        }
 
551
                }
 
552
        }
 
553
}
 
554
 
 
555
 
 
556
static void swf_persona_store_contacts_removed_cb (SwfPersonaStore* self, GList* contacts) {
 
557
        GeeHashSet* _tmp0_ = NULL;
 
558
        GeeHashSet* removed_personas;
 
559
        gint _tmp8_;
 
560
        g_return_if_fail (self != NULL);
 
561
        _tmp0_ = gee_hash_set_new (SWF_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
 
562
        removed_personas = _tmp0_;
 
563
        {
 
564
                GList* contact_collection;
 
565
                GList* contact_it;
 
566
                contact_collection = contacts;
 
567
                for (contact_it = contact_collection; contact_it != NULL; contact_it = contact_it->next) {
 
568
                        SwContact* contact;
 
569
                        contact = (SwContact*) contact_it->data;
 
570
                        {
 
571
                                const gchar* _tmp1_ = NULL;
 
572
                                gchar* _tmp2_ = NULL;
 
573
                                gchar* _tmp3_;
 
574
                                gchar* _tmp4_ = NULL;
 
575
                                gchar* _tmp5_;
 
576
                                gchar* iid;
 
577
                                gpointer _tmp6_ = NULL;
 
578
                                SwfPersona* persona;
 
579
                                _tmp1_ = sw_client_service_get_name (self->priv->_service);
 
580
                                if (g_strcmp0 (_tmp1_, contact->service) != 0) {
 
581
                                        continue;
 
582
                                }
 
583
                                _tmp2_ = swf_persona_get_contact_id (contact);
 
584
                                _tmp3_ = _tmp2_;
 
585
                                _tmp4_ = _swf_persona_build_iid (contact->service, _tmp3_);
 
586
                                _tmp5_ = _tmp4_;
 
587
                                _g_free0 (_tmp3_);
 
588
                                iid = _tmp5_;
 
589
                                _tmp6_ = gee_abstract_map_get ((GeeAbstractMap*) self->priv->_personas, iid);
 
590
                                persona = (SwfPersona*) _tmp6_;
 
591
                                if (persona != NULL) {
 
592
                                        const gchar* _tmp7_ = NULL;
 
593
                                        gee_abstract_collection_add ((GeeAbstractCollection*) removed_personas, persona);
 
594
                                        _tmp7_ = folks_persona_get_iid ((FolksPersona*) persona);
 
595
                                        gee_abstract_map_unset ((GeeAbstractMap*) self->priv->_personas, _tmp7_, NULL);
 
596
                                }
 
597
                                _g_object_unref0 (persona);
 
598
                                _g_free0 (iid);
 
599
                        }
 
600
                }
 
601
        }
 
602
        _tmp8_ = gee_collection_get_size ((GeeCollection*) removed_personas);
 
603
        if (_tmp8_ > 0) {
 
604
                _folks_persona_store_emit_personas_changed ((FolksPersonaStore*) self, NULL, (GeeSet*) removed_personas, NULL, NULL, FOLKS_GROUP_DETAILS_CHANGE_REASON_NONE);
 
605
        }
 
606
        _g_object_unref0 (removed_personas);
 
607
}
 
608
 
 
609
 
 
610
static const gchar* swf_persona_store_real_get_type_id (FolksPersonaStore* base) {
 
611
        const gchar* result;
 
612
        SwfPersonaStore* self;
 
613
        self = (SwfPersonaStore*) base;
 
614
        result = BACKEND_NAME;
 
615
        return result;
 
616
}
 
617
 
 
618
 
 
619
static FolksMaybeBool swf_persona_store_real_get_can_add_personas (FolksPersonaStore* base) {
 
620
        FolksMaybeBool result;
 
621
        SwfPersonaStore* self;
 
622
        self = (SwfPersonaStore*) base;
 
623
        result = FOLKS_MAYBE_BOOL_FALSE;
 
624
        return result;
 
625
}
 
626
 
 
627
 
 
628
static FolksMaybeBool swf_persona_store_real_get_can_alias_personas (FolksPersonaStore* base) {
 
629
        FolksMaybeBool result;
 
630
        SwfPersonaStore* self;
 
631
        self = (SwfPersonaStore*) base;
 
632
        result = FOLKS_MAYBE_BOOL_FALSE;
 
633
        return result;
 
634
}
 
635
 
 
636
 
 
637
static FolksMaybeBool swf_persona_store_real_get_can_group_personas (FolksPersonaStore* base) {
 
638
        FolksMaybeBool result;
 
639
        SwfPersonaStore* self;
 
640
        self = (SwfPersonaStore*) base;
 
641
        result = FOLKS_MAYBE_BOOL_FALSE;
 
642
        return result;
 
643
}
 
644
 
 
645
 
 
646
static FolksMaybeBool swf_persona_store_real_get_can_remove_personas (FolksPersonaStore* base) {
 
647
        FolksMaybeBool result;
 
648
        SwfPersonaStore* self;
 
649
        self = (SwfPersonaStore*) base;
 
650
        result = FOLKS_MAYBE_BOOL_FALSE;
 
651
        return result;
 
652
}
 
653
 
 
654
 
 
655
static gboolean swf_persona_store_real_get_is_prepared (FolksPersonaStore* base) {
 
656
        gboolean result;
 
657
        SwfPersonaStore* self;
 
658
        self = (SwfPersonaStore*) base;
 
659
        result = self->priv->_is_prepared;
 
660
        return result;
 
661
}
 
662
 
 
663
 
 
664
static GeeMap* swf_persona_store_real_get_personas (FolksPersonaStore* base) {
 
665
        GeeMap* result;
 
666
        SwfPersonaStore* self;
 
667
        self = (SwfPersonaStore*) base;
 
668
        result = self->priv->_personas_ro;
 
669
        return result;
 
670
}
 
671
 
 
672
 
 
673
static void swf_persona_store_class_init (SwfPersonaStoreClass * klass) {
 
674
        swf_persona_store_parent_class = g_type_class_peek_parent (klass);
 
675
        g_type_class_add_private (klass, sizeof (SwfPersonaStorePrivate));
 
676
        FOLKS_PERSONA_STORE_CLASS (klass)->add_persona_from_details = swf_persona_store_real_add_persona_from_details;
 
677
        FOLKS_PERSONA_STORE_CLASS (klass)->add_persona_from_details_finish = swf_persona_store_real_add_persona_from_details_finish;
 
678
        FOLKS_PERSONA_STORE_CLASS (klass)->remove_persona = swf_persona_store_real_remove_persona;
 
679
        FOLKS_PERSONA_STORE_CLASS (klass)->remove_persona_finish = swf_persona_store_real_remove_persona_finish;
 
680
        FOLKS_PERSONA_STORE_CLASS (klass)->prepare = swf_persona_store_real_prepare;
 
681
        FOLKS_PERSONA_STORE_CLASS (klass)->prepare_finish = swf_persona_store_real_prepare_finish;
 
682
        FOLKS_PERSONA_STORE_CLASS (klass)->get_type_id = swf_persona_store_real_get_type_id;
 
683
        FOLKS_PERSONA_STORE_CLASS (klass)->get_can_add_personas = swf_persona_store_real_get_can_add_personas;
 
684
        FOLKS_PERSONA_STORE_CLASS (klass)->get_can_alias_personas = swf_persona_store_real_get_can_alias_personas;
 
685
        FOLKS_PERSONA_STORE_CLASS (klass)->get_can_group_personas = swf_persona_store_real_get_can_group_personas;
 
686
        FOLKS_PERSONA_STORE_CLASS (klass)->get_can_remove_personas = swf_persona_store_real_get_can_remove_personas;
 
687
        FOLKS_PERSONA_STORE_CLASS (klass)->get_is_prepared = swf_persona_store_real_get_is_prepared;
 
688
        FOLKS_PERSONA_STORE_CLASS (klass)->get_personas = swf_persona_store_real_get_personas;
 
689
        G_OBJECT_CLASS (klass)->get_property = _vala_swf_persona_store_get_property;
 
690
        G_OBJECT_CLASS (klass)->finalize = swf_persona_store_finalize;
 
691
        /**
 
692
           * The type of persona store this is.
 
693
           *
 
694
           * See {@link Folks.PersonaStore.type_id}.
 
695
           */
 
696
        g_object_class_override_property (G_OBJECT_CLASS (klass), SWF_PERSONA_STORE_TYPE_ID, "type-id");
 
697
        /**
 
698
           * Whether this PersonaStore can add {@link Folks.Persona}s.
 
699
           *
 
700
           * See {@link Folks.PersonaStore.can_add_personas}.
 
701
           *
 
702
           * @since 0.5.0
 
703
           */
 
704
        g_object_class_override_property (G_OBJECT_CLASS (klass), SWF_PERSONA_STORE_CAN_ADD_PERSONAS, "can-add-personas");
 
705
        /**
 
706
           * Whether this PersonaStore can set the alias of {@link Folks.Persona}s.
 
707
           *
 
708
           * See {@link Folks.PersonaStore.can_alias_personas}.
 
709
           *
 
710
           * @since 0.5.0
 
711
           */
 
712
        g_object_class_override_property (G_OBJECT_CLASS (klass), SWF_PERSONA_STORE_CAN_ALIAS_PERSONAS, "can-alias-personas");
 
713
        /**
 
714
           * Whether this PersonaStore can set the groups of {@link Folks.Persona}s.
 
715
           *
 
716
           * See {@link Folks.PersonaStore.can_group_personas}.
 
717
           *
 
718
           * @since 0.5.0
 
719
           */
 
720
        g_object_class_override_property (G_OBJECT_CLASS (klass), SWF_PERSONA_STORE_CAN_GROUP_PERSONAS, "can-group-personas");
 
721
        /**
 
722
           * Whether this PersonaStore can remove {@link Folks.Persona}s.
 
723
           *
 
724
           * See {@link Folks.PersonaStore.can_remove_personas}.
 
725
           *
 
726
           * @since 0.5.0
 
727
           */
 
728
        g_object_class_override_property (G_OBJECT_CLASS (klass), SWF_PERSONA_STORE_CAN_REMOVE_PERSONAS, "can-remove-personas");
 
729
        /**
 
730
           * Whether this PersonaStore has been prepared.
 
731
           *
 
732
           * See {@link Folks.PersonaStore.is_prepared}.
 
733
           *
 
734
           * @since 0.5.0
 
735
           */
 
736
        g_object_class_override_property (G_OBJECT_CLASS (klass), SWF_PERSONA_STORE_IS_PREPARED, "is-prepared");
 
737
        /**
 
738
           * The {@link Persona}s exposed by this PersonaStore.
 
739
           *
 
740
           * See {@link Folks.PersonaStore.personas}.
 
741
           */
 
742
        g_object_class_override_property (G_OBJECT_CLASS (klass), SWF_PERSONA_STORE_PERSONAS, "personas");
 
743
}
 
744
 
 
745
 
 
746
static void swf_persona_store_instance_init (SwfPersonaStore * self) {
 
747
        self->priv = SWF_PERSONA_STORE_GET_PRIVATE (self);
 
748
        g_static_rec_mutex_init (&self->priv->__lock__is_prepared);
 
749
        self->priv->_is_prepared = FALSE;
 
750
}
 
751
 
 
752
 
 
753
static void swf_persona_store_finalize (GObject* obj) {
 
754
        SwfPersonaStore * self;
 
755
        self = SWF_PERSONA_STORE (obj);
 
756
        if (self->priv->_contact_view != NULL) {
 
757
                guint _tmp0_;
 
758
                guint _tmp1_;
 
759
                guint _tmp2_;
 
760
                g_signal_parse_name ("contacts-added", SW_TYPE_CLIENT_CONTACT_VIEW, &_tmp0_, NULL, FALSE);
 
761
                g_signal_handlers_disconnect_matched (self->priv->_contact_view, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp0_, 0, NULL, (GCallback) _swf_persona_store_contacts_added_cb_sw_client_contact_view_contacts_added, self);
 
762
                g_signal_parse_name ("contacts-changed", SW_TYPE_CLIENT_CONTACT_VIEW, &_tmp1_, NULL, FALSE);
 
763
                g_signal_handlers_disconnect_matched (self->priv->_contact_view, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _swf_persona_store_contacts_changed_cb_sw_client_contact_view_contacts_changed, self);
 
764
                g_signal_parse_name ("contacts-removed", SW_TYPE_CLIENT_CONTACT_VIEW, &_tmp2_, NULL, FALSE);
 
765
                g_signal_handlers_disconnect_matched (self->priv->_contact_view, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp2_, 0, NULL, (GCallback) _swf_persona_store_contacts_removed_cb_sw_client_contact_view_contacts_removed, self);
 
766
        }
 
767
        _g_object_unref0 (self->priv->_personas);
 
768
        _g_object_unref0 (self->priv->_personas_ro);
 
769
        g_static_rec_mutex_free (&self->priv->__lock__is_prepared);
 
770
        _g_object_unref0 (self->priv->_service);
 
771
        _g_object_unref0 (self->priv->_contact_view);
 
772
        G_OBJECT_CLASS (swf_persona_store_parent_class)->finalize (obj);
 
773
}
 
774
 
 
775
 
 
776
/**
 
777
 * A persona store which is associated with a single libsocialweb service.
 
778
 * It will create {@link Persona}s for each of the contacts known to that
 
779
 * service.
 
780
 */
 
781
GType swf_persona_store_get_type (void) {
 
782
        static volatile gsize swf_persona_store_type_id__volatile = 0;
 
783
        if (g_once_init_enter (&swf_persona_store_type_id__volatile)) {
 
784
                static const GTypeInfo g_define_type_info = { sizeof (SwfPersonaStoreClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) swf_persona_store_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SwfPersonaStore), 0, (GInstanceInitFunc) swf_persona_store_instance_init, NULL };
 
785
                GType swf_persona_store_type_id;
 
786
                swf_persona_store_type_id = g_type_register_static (FOLKS_TYPE_PERSONA_STORE, "SwfPersonaStore", &g_define_type_info, 0);
 
787
                g_once_init_leave (&swf_persona_store_type_id__volatile, swf_persona_store_type_id);
 
788
        }
 
789
        return swf_persona_store_type_id__volatile;
 
790
}
 
791
 
 
792
 
 
793
static void _vala_swf_persona_store_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
 
794
        SwfPersonaStore * self;
 
795
        self = SWF_PERSONA_STORE (object);
 
796
        switch (property_id) {
 
797
                case SWF_PERSONA_STORE_TYPE_ID:
 
798
                g_value_set_string (value, folks_persona_store_get_type_id ((FolksPersonaStore*) self));
 
799
                break;
 
800
                case SWF_PERSONA_STORE_CAN_ADD_PERSONAS:
 
801
                g_value_set_enum (value, folks_persona_store_get_can_add_personas ((FolksPersonaStore*) self));
 
802
                break;
 
803
                case SWF_PERSONA_STORE_CAN_ALIAS_PERSONAS:
 
804
                g_value_set_enum (value, folks_persona_store_get_can_alias_personas ((FolksPersonaStore*) self));
 
805
                break;
 
806
                case SWF_PERSONA_STORE_CAN_GROUP_PERSONAS:
 
807
                g_value_set_enum (value, folks_persona_store_get_can_group_personas ((FolksPersonaStore*) self));
 
808
                break;
 
809
                case SWF_PERSONA_STORE_CAN_REMOVE_PERSONAS:
 
810
                g_value_set_enum (value, folks_persona_store_get_can_remove_personas ((FolksPersonaStore*) self));
 
811
                break;
 
812
                case SWF_PERSONA_STORE_IS_PREPARED:
 
813
                g_value_set_boolean (value, folks_persona_store_get_is_prepared ((FolksPersonaStore*) self));
 
814
                break;
 
815
                case SWF_PERSONA_STORE_PERSONAS:
 
816
                g_value_set_object (value, folks_persona_store_get_personas ((FolksPersonaStore*) self));
 
817
                break;
 
818
                default:
 
819
                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
 
820
                break;
 
821
        }
 
822
}
 
823
 
 
824
 
 
825