53
folder_created_cb (DBusGProxy *proxy, GHashTable *folder_info, gpointer user_data)
55
SyncdaemonDaemon *daemon = NULL;
56
SyncdaemonFoldersInterface *interface = SYNCDAEMON_FOLDERS_INTERFACE (user_data);
58
g_object_get (G_OBJECT (interface), "daemon", &daemon, NULL);
60
g_signal_emit_by_name (daemon, "folder_created", folder_info);
64
folder_deleted_cb (DBusGProxy *proxy, GHashTable *folder_info, gpointer user_data)
66
SyncdaemonDaemon *daemon = NULL;
67
SyncdaemonFoldersInterface *interface = SYNCDAEMON_FOLDERS_INTERFACE (user_data);
69
g_object_get (G_OBJECT (interface), "daemon", &daemon, NULL);
71
g_signal_emit_by_name (daemon, "folder_deleted", folder_info);
75
folder_subscribed_cb (DBusGProxy *proxy, GHashTable *folder_info, gpointer user_data)
77
SyncdaemonDaemon *daemon = NULL;
78
SyncdaemonFoldersInterface *interface = SYNCDAEMON_FOLDERS_INTERFACE (user_data);
80
g_object_get (G_OBJECT (interface), "daemon", &daemon, NULL);
82
g_signal_emit_by_name (daemon, "folder_subscribed", folder_info);
86
folder_unsubscribed_cb (DBusGProxy *proxy, GHashTable *folder_info, gpointer user_data)
88
SyncdaemonDaemon *daemon = NULL;
89
SyncdaemonFoldersInterface *interface = SYNCDAEMON_FOLDERS_INTERFACE (user_data);
91
g_object_get (G_OBJECT (interface), "daemon", &daemon, NULL);
93
g_signal_emit_by_name (daemon, "folder_unsubscribed", folder_info);
97
udf_error_cb (DBusGProxy *proxy, GHashTable *folder_info, gchar *error, gpointer user_data)
99
SyncdaemonDaemon *daemon = NULL;
100
SyncdaemonFoldersInterface *interface = SYNCDAEMON_FOLDERS_INTERFACE (user_data);
102
g_object_get (G_OBJECT (interface), "daemon", &daemon, NULL);
104
g_signal_emit_by_name (daemon, "error", error, folder_info);
57
folder_created_cb (DBusGProxy *proxy, GHashTable *hash, gpointer user_data)
59
SyncdaemonFolderInfo *folder_info;
60
SyncdaemonDaemon *daemon = NULL;
61
SyncdaemonFoldersInterface *interface = SYNCDAEMON_FOLDERS_INTERFACE (user_data);
63
folder_info = syncdaemon_folder_info_new_from_hash_table (hash);
65
g_object_get (G_OBJECT (interface), "daemon", &daemon, NULL);
67
/* Update our cache of folders */
68
if (interface->priv->folders != NULL) {
69
g_hash_table_insert (interface->priv->folders,
70
g_strdup (syncdaemon_folder_info_get_path (folder_info)),
74
g_signal_emit_by_name (daemon, "folder_created", TRUE, folder_info);
77
g_signal_emit_by_name (daemon, "folder_created", TRUE, folder_info);
78
g_object_unref (G_OBJECT (folder_info));
83
folder_create_error_cb (DBusGProxy *proxy, GHashTable *hash, gchar *error, gpointer user_data)
85
SyncdaemonDaemon *daemon = NULL;
86
SyncdaemonFoldersInterface *interface = SYNCDAEMON_FOLDERS_INTERFACE (user_data);
88
/* Notify listeners */
89
g_object_get (G_OBJECT (interface), "daemon", &daemon, NULL);
91
SyncdaemonFolderInfo *folder_info;
93
folder_info = syncdaemon_folder_info_new_from_hash_table (hash);
94
g_signal_emit_by_name (daemon, "folder_created", FALSE, folder_info);
95
g_object_unref (G_OBJECT (folder_info));
100
folder_deleted_cb (DBusGProxy *proxy, GHashTable *hash, gpointer user_data)
102
SyncdaemonFolderInfo *folder_info;
103
SyncdaemonDaemon *daemon = NULL;
104
SyncdaemonFoldersInterface *interface = SYNCDAEMON_FOLDERS_INTERFACE (user_data);
106
folder_info = syncdaemon_folder_info_new_from_hash_table (hash);
108
/* Notify listeners */
109
g_object_get (G_OBJECT (interface), "daemon", &daemon, NULL);
111
g_signal_emit_by_name (daemon, "folder_deleted", TRUE, folder_info);
113
/* Update our cache of folders */
114
if (interface->priv->folders != NULL)
115
g_hash_table_remove (interface->priv->folders,
116
syncdaemon_folder_info_get_path (folder_info));
118
g_object_unref (G_OBJECT (folder_info));
122
folder_delete_error_cb (DBusGProxy *proxy, GHashTable *hash, gchar *error, gpointer user_data)
124
SyncdaemonFolderInfo *folder_info;
125
SyncdaemonDaemon *daemon = NULL;
126
SyncdaemonFoldersInterface *interface = SYNCDAEMON_FOLDERS_INTERFACE (user_data);
128
folder_info = syncdaemon_folder_info_new_from_hash_table (hash);
130
/* Notify listeners */
131
g_object_get (G_OBJECT (interface), "daemon", &daemon, NULL);
133
g_signal_emit_by_name (daemon, "folder_deleted", FALSE, folder_info);
135
g_object_unref (G_OBJECT (folder_info));
139
folder_subscribed_cb (DBusGProxy *proxy, GHashTable *hash, gpointer user_data)
141
SyncdaemonFolderInfo *folder_info;
142
SyncdaemonDaemon *daemon = NULL;
143
SyncdaemonFoldersInterface *interface = SYNCDAEMON_FOLDERS_INTERFACE (user_data);
145
folder_info = syncdaemon_folder_info_new_from_hash_table (hash);
147
g_object_get (G_OBJECT (interface), "daemon", &daemon, NULL);
149
g_signal_emit_by_name (daemon, "folder_subscribed", TRUE, folder_info);
151
if (interface->priv->folders != NULL) {
152
g_hash_table_insert (interface->priv->folders,
153
g_strdup (syncdaemon_folder_info_get_path (folder_info)),
156
g_object_unref (G_OBJECT (folder_info));
160
folder_subscribe_error_cb (DBusGProxy *proxy, GHashTable *hash, gchar *error, gpointer user_data)
162
SyncdaemonFolderInfo *folder_info;
163
SyncdaemonDaemon *daemon = NULL;
164
SyncdaemonFoldersInterface *interface = SYNCDAEMON_FOLDERS_INTERFACE (user_data);
166
folder_info = syncdaemon_folder_info_new_from_hash_table (hash);
168
g_object_get (G_OBJECT (interface), "daemon", &daemon, NULL);
170
g_signal_emit_by_name (daemon, "folder_subscribed", FALSE, folder_info);
172
g_object_unref (G_OBJECT (folder_info));
176
folder_unsubscribed_cb (DBusGProxy *proxy, GHashTable *hash, gpointer user_data)
178
SyncdaemonFolderInfo *folder_info;
179
SyncdaemonDaemon *daemon = NULL;
180
SyncdaemonFoldersInterface *interface = SYNCDAEMON_FOLDERS_INTERFACE (user_data);
182
folder_info = syncdaemon_folder_info_new_from_hash_table (hash);
184
g_object_get (G_OBJECT (interface), "daemon", &daemon, NULL);
186
g_signal_emit_by_name (daemon, "folder_unsubscribed", TRUE, folder_info);
188
if (interface->priv->folders != NULL) {
189
g_hash_table_insert (interface->priv->folders,
190
g_strdup (syncdaemon_folder_info_get_path (folder_info)),
193
g_object_unref (G_OBJECT (folder_info));
197
folder_unsubscribe_error_cb (DBusGProxy *proxy, GHashTable *hash, gchar *error, gpointer user_data)
199
SyncdaemonFolderInfo *folder_info;
200
SyncdaemonDaemon *daemon = NULL;
201
SyncdaemonFoldersInterface *interface = SYNCDAEMON_FOLDERS_INTERFACE (user_data);
203
folder_info = syncdaemon_folder_info_new_from_hash_table (hash);
205
g_object_get (G_OBJECT (interface), "daemon", &daemon, NULL);
207
g_signal_emit_by_name (daemon, "folder_unsubscribed", FALSE, folder_info);
209
g_object_unref (G_OBJECT (folder_info));
231
336
* syncdaemon_folders_interface_get_folders:
338
* Return value: A GSList of #SyncdaemonFolderInfo containing all the folders being
339
* synchronized by the user. When no longer needed, the list should be freed
340
* by calling g_slist_free.
234
343
syncdaemon_folders_interface_get_folders (SyncdaemonFoldersInterface *interface)
236
GSList *folders = NULL;
345
GSList *returned_folders = NULL;
237
346
GError *error = NULL;
239
348
g_return_val_if_fail (SYNCDAEMON_IS_FOLDERS_INTERFACE (interface), NULL);
241
if (!dbus_g_proxy_call (DBUS_G_PROXY (interface->priv->proxy), "get_folders", &error,
243
dbus_g_type_get_collection ("GSList",
247
G_TYPE_STRING)), &folders,
249
g_warning ("Error calling get_folders: %s", error->message);
250
g_error_free (error);
350
if (interface->priv->folders != NULL) {
353
SyncdaemonFolderInfo *folder_info;
355
/* If we already got the folders list, no need for an extra DBus call */
356
g_hash_table_iter_init (&iter, interface->priv->folders);
357
while (g_hash_table_iter_next (&iter, (gpointer *) &path, (gpointer *) &folder_info))
358
returned_folders = g_slist_append (returned_folders, folder_info);
362
if (dbus_g_proxy_call (DBUS_G_PROXY (interface->priv->proxy), "get_folders", &error,
364
dbus_g_type_get_collection ("GSList",
368
G_TYPE_STRING)), &list,
372
/* Add the folders to our live-updating list */
373
interface->priv->folders = g_hash_table_new_full (g_str_hash, g_str_equal,
374
g_free, g_object_unref);
375
for (l = list; l != NULL; l = l->next) {
376
SyncdaemonFolderInfo *folder_info;
378
folder_info = syncdaemon_folder_info_new_from_hash_table (l->data);
379
g_hash_table_insert (interface->priv->folders,
380
g_strdup (g_hash_table_lookup (l->data, "path")),
383
returned_folders = g_slist_append (returned_folders, folder_info);
387
g_slist_foreach (list, (GFunc) g_hash_table_destroy, NULL);
390
g_warning ("Error calling get_folders: %s", error->message);
391
g_error_free (error);
395
return returned_folders;
257
399
* syncdaemon_folders_interface_get_info:
401
* Return value: A #SyncdaemonFolderInfo object containing all the information
402
* for the node. When no longer needed, it should be freed by calling
405
SyncdaemonFolderInfo *
260
406
syncdaemon_folders_interface_get_info (SyncdaemonFoldersInterface *interface, const gchar *path)
262
GHashTable *info = NULL;
408
SyncdaemonFolderInfo *folder_info = NULL;
263
409
GError *error = NULL;
265
411
g_return_val_if_fail (SYNCDAEMON_IS_FOLDERS_INTERFACE (interface), NULL);
266
412
g_return_val_if_fail (path != NULL, NULL);
268
if (!dbus_g_proxy_call (DBUS_G_PROXY (interface->priv->proxy), "get_info", &error,
271
dbus_g_type_get_map ("GHashTable",
273
G_TYPE_STRING), &info,
275
g_warning ("Error calling get_info: %s", error->message);
276
g_error_free (error);
414
if (interface->priv->folders != NULL) {
415
folder_info = g_hash_table_lookup (interface->priv->folders, path);
416
if (folder_info != NULL)
417
folder_info = g_object_ref (G_OBJECT (folder_info));
423
if (dbus_g_proxy_call (DBUS_G_PROXY (interface->priv->proxy), "get_info", &error,
426
dbus_g_type_get_map ("GHashTable",
428
G_TYPE_STRING), &hash,
430
folder_info = syncdaemon_folder_info_new_from_hash_table (hash);
432
g_warning ("Error calling get_info: %s", error->message);
433
g_error_free (error);