73
73
SyncdaemonMetadata *metadata,
74
74
gpointer user_data);
75
static void ubuntuone_nautilus_end_dbus_call (DBusGProxy * proxy,
76
DBusGProxyCall * call_id,
78
static void ubuntuone_nautilus_got_shared (DBusGProxy * proxy,
79
DBusGProxyCall * call_id,
81
static void ubuntuone_nautilus_status_changed (DBusGProxy * proxy,
75
static void ubuntuone_nautilus_status_changed (SyncdaemonDaemon *daemon,
76
SyncdaemonStatusInfo *status_info,
83
77
gpointer user_data);
84
static void ubuntuone_nautilus_upload_started (DBusGProxy * proxy,
78
static void ubuntuone_nautilus_upload_started (SyncdaemonDaemon *daemon,
86
80
gpointer user_data);
87
static void ubuntuone_nautilus_upload_finished (DBusGProxy * proxy,
88
gchar * path, GHashTable * info,
90
static void ubuntuone_nautilus_download_started (DBusGProxy * proxy,
93
static void ubuntuone_nautilus_download_finished (DBusGProxy * proxy,
94
gchar * path, GHashTable * info,
81
static void ubuntuone_nautilus_upload_finished (SyncdaemonDaemon *daemon,
83
SyncdaemonTransferInfo * info,
85
static void ubuntuone_nautilus_download_started (SyncdaemonDaemon *daemon,
88
static void ubuntuone_nautilus_download_finished (SyncdaemonDaemon *daemon,
90
SyncdaemonTransferInfo * info,
95
91
gpointer user_data);
96
static void ubuntuone_nautilus_udf_created (DBusGProxy * proxy,
99
static void ubuntuone_nautilus_udf_deleted (DBusGProxy * proxy,
102
static void ubuntuone_nautilus_udf_error (DBusGProxy * proxy,
92
static void ubuntuone_nautilus_udf_created (SyncdaemonDaemon *daemon,
94
SyncdaemonFolderInfo *folder_info,
96
static void ubuntuone_nautilus_udf_deleted (SyncdaemonDaemon *daemon,
98
SyncdaemonFolderInfo *folder_info,
106
100
static void ubuntuone_nautilus_file_published (SyncdaemonDaemon *daemon,
107
101
GHashTable * hash,
108
102
gpointer user_data);
109
103
static void ubuntuone_nautilus_got_public_files (SyncdaemonDaemon *daemon,
110
104
GPtrArray * files,
111
105
gpointer user_data);
112
static void ubuntuone_nautilus_share_created (DBusGProxy * proxy,
115
static void ubuntuone_nautilus_sharing_error (DBusGProxy * proxy,
106
static void ubuntuone_nautilus_share_created (SyncdaemonDaemon *daemon,
118
109
gpointer user_data);
120
111
static GObjectClass * parent_class = NULL;
776
745
uon->managed = g_strdup (syncdaemon_daemon_get_root_dir (uon->syncdaemon));
777
746
if (uon->managed != NULL)
778
747
uon->gotroot = TRUE;
779
dbus_g_proxy_begin_call (uon->u1_shares, "get_shared",
780
ubuntuone_nautilus_got_shared, uon,
781
NULL, G_TYPE_INVALID);
749
interface = SYNCDAEMON_SHARES_INTERFACE (syncdaemon_daemon_get_shares_interface (uon->syncdaemon));
751
syncdaemon_shares_interface_get_shared (interface);
784
/* Marshaller for UploadFinished and DownloadFinished signals */
785
dbus_g_object_register_marshaller (ubuntuone_nautilus_marshal_VOID__STRING_OBJECT,
788
dbus_g_type_get_map ("GHashTable",
793
/* Marshaller for ShareCreateError signal */
794
dbus_g_object_register_marshaller (ubuntuone_nautilus_marshal_VOID__OBJECT_STRING,
796
dbus_g_type_get_map ("GHashTable",
802
dbus_g_proxy_add_signal (uon->u1_status, "StatusChanged",
803
dbus_g_type_get_map ("GHashTable",
807
dbus_g_proxy_connect_signal (uon->u1_status, "StatusChanged",
808
G_CALLBACK(ubuntuone_nautilus_status_changed),
811
dbus_g_proxy_add_signal (uon->u1_status, "UploadStarted",
814
dbus_g_proxy_connect_signal (uon->u1_status, "UploadStarted",
815
G_CALLBACK (ubuntuone_nautilus_upload_started),
817
dbus_g_proxy_add_signal (uon->u1_status, "UploadFinished",
819
dbus_g_type_get_map ("GHashTable",
823
dbus_g_proxy_connect_signal (uon->u1_status, "UploadFinished",
824
G_CALLBACK (ubuntuone_nautilus_upload_finished),
826
dbus_g_proxy_add_signal (uon->u1_status, "DownloadStarted",
829
dbus_g_proxy_connect_signal (uon->u1_status, "DownloadStarted",
830
G_CALLBACK (ubuntuone_nautilus_download_started),
832
dbus_g_proxy_add_signal (uon->u1_status, "DownloadFinished",
834
dbus_g_type_get_map ("GHashTable",
838
dbus_g_proxy_connect_signal (uon->u1_status, "DownloadFinished",
839
G_CALLBACK (ubuntuone_nautilus_download_finished),
841
dbus_g_proxy_add_signal (uon->u1_shares, "ShareCreated",
842
dbus_g_type_get_map ("GHashTable",
846
dbus_g_proxy_connect_signal (uon->u1_shares, "ShareCreated",
847
G_CALLBACK (ubuntuone_nautilus_share_created),
849
dbus_g_proxy_add_signal (uon->u1_shares, "ShareCreateError",
850
dbus_g_type_get_map ("GHashTable",
855
dbus_g_proxy_connect_signal (uon->u1_shares, "ShareCreateError",
856
G_CALLBACK (ubuntuone_nautilus_sharing_error),
859
dbus_g_proxy_add_signal (uon->u1_folders, "FolderCreated",
860
dbus_g_type_get_map ("GHashTable",
864
dbus_g_proxy_connect_signal (uon->u1_folders, "FolderCreated",
865
G_CALLBACK (ubuntuone_nautilus_udf_created),
867
dbus_g_proxy_add_signal (uon->u1_folders, "FolderSubscribed",
868
dbus_g_type_get_map ("GHashTable",
872
dbus_g_proxy_connect_signal (uon->u1_folders, "FolderSubscribed",
873
G_CALLBACK (ubuntuone_nautilus_udf_created),
875
dbus_g_proxy_add_signal (uon->u1_folders, "FolderCreateError",
876
dbus_g_type_get_map ("GHashTable",
881
dbus_g_proxy_connect_signal (uon->u1_folders, "FolderCreateError",
882
G_CALLBACK (ubuntuone_nautilus_udf_error),
884
dbus_g_proxy_add_signal (uon->u1_folders, "FolderSubscribeError",
885
dbus_g_type_get_map ("GHashTable",
890
dbus_g_proxy_connect_signal (uon->u1_folders, "FolderSubscribeError",
891
G_CALLBACK (ubuntuone_nautilus_udf_error),
894
dbus_g_proxy_add_signal (uon->u1_folders, "FolderDeleted",
895
dbus_g_type_get_map ("GHashTable",
899
dbus_g_proxy_connect_signal (uon->u1_folders, "FolderDeleted",
900
G_CALLBACK (ubuntuone_nautilus_udf_deleted),
902
dbus_g_proxy_add_signal (uon->u1_folders, "FolderUnSubscribed",
903
dbus_g_type_get_map ("GHashTable",
907
dbus_g_proxy_connect_signal (uon->u1_folders, "FolderUnSubscribed",
908
G_CALLBACK (ubuntuone_nautilus_udf_deleted),
910
dbus_g_proxy_add_signal (uon->u1_folders, "FolderDeleteError",
911
dbus_g_type_get_map ("GHashTable",
916
dbus_g_proxy_connect_signal (uon->u1_folders, "FolderDeleteError",
917
G_CALLBACK (ubuntuone_nautilus_udf_error),
919
dbus_g_proxy_add_signal (uon->u1_folders, "FolderUnSubscribeError",
920
dbus_g_type_get_map ("GHashTable",
925
dbus_g_proxy_connect_signal (uon->u1_folders, "FolderUnSubscribeError",
926
G_CALLBACK (ubuntuone_nautilus_udf_error),
755
g_signal_connect (G_OBJECT (uon->syncdaemon), "status_changed",
756
G_CALLBACK (ubuntuone_nautilus_status_changed), uon);
757
g_signal_connect (G_OBJECT (uon->syncdaemon), "upload_started",
758
G_CALLBACK (ubuntuone_nautilus_upload_started), uon);
759
g_signal_connect (G_OBJECT (uon->syncdaemon), "upload_finished",
760
G_CALLBACK (ubuntuone_nautilus_upload_finished), uon);
761
g_signal_connect (G_OBJECT (uon->syncdaemon), "download_started",
762
G_CALLBACK (ubuntuone_nautilus_download_started), uon);
763
g_signal_connect (G_OBJECT (uon->syncdaemon), "download_finished",
764
G_CALLBACK (ubuntuone_nautilus_download_finished), uon);
766
g_signal_connect (G_OBJECT (uon->syncdaemon), "share_created",
767
G_CALLBACK (ubuntuone_nautilus_share_created), uon);
769
g_signal_connect (G_OBJECT (uon->syncdaemon), "folder_created",
770
G_CALLBACK (ubuntuone_nautilus_udf_created), uon);
771
g_signal_connect (G_OBJECT (uon->syncdaemon), "folder_subscribed",
772
G_CALLBACK (ubuntuone_nautilus_udf_created), uon);
773
g_signal_connect (G_OBJECT (uon->syncdaemon), "folder_deleted",
774
G_CALLBACK (ubuntuone_nautilus_udf_deleted), uon);
775
g_signal_connect (G_OBJECT (uon->syncdaemon), "folder_unsubscribed",
776
G_CALLBACK (ubuntuone_nautilus_udf_deleted), uon);
930
778
/* Connect to public files-related signals */
931
779
g_signal_connect (G_OBJECT (uon->syncdaemon), "file_published",
1084
920
ubuntuone_nautilus_reset_emblem (uon, new_path);
1087
static void ubuntuone_nautilus_end_dbus_call (DBusGProxy * proxy,
1088
DBusGProxyCall * call_id,
1089
gpointer user_data) {
1090
g_return_if_fail (proxy != NULL);
1092
dbus_g_proxy_end_call (proxy, call_id, NULL, G_TYPE_INVALID);
1095
static void ubuntuone_nautilus_got_udfs(DBusGProxy * proxy,
1096
DBusGProxyCall * call_id,
1097
gpointer user_data) {
1098
UbuntuOneNautilus * uon;
1100
GError * error = NULL;
1102
g_return_if_fail (proxy != NULL);
1104
if (!dbus_g_proxy_end_call (proxy, call_id, &error,
1105
dbus_g_type_get_collection ("GSList",
1112
g_warning ("ERROR: %s", error->message);
1116
uon = UBUNTUONE_NAUTILUS (user_data);
1117
for (l = data; l != NULL && l->data != NULL; l = l->next) {
1118
GHashTable * hash = l->data;
1119
ubuntuone_nautilus_udf_created (proxy, hash, user_data);
1121
g_slist_free (data);
1123
uon->gotudfs = TRUE;
1126
static void ubuntuone_nautilus_got_shared (DBusGProxy * proxy,
1127
DBusGProxyCall * call_id,
1128
gpointer user_data) {
1129
UbuntuOneNautilus * uon;
1131
GError * error = NULL;
1133
g_return_if_fail (proxy != NULL);
1135
if (!dbus_g_proxy_end_call (proxy, call_id, &error,
1136
dbus_g_type_get_collection ("GSList",
1143
g_warning ("ERROR: %s", error->message);
1147
uon = UBUNTUONE_NAUTILUS (user_data);
1148
for (l = data; l != NULL && l->data != NULL; l = l->next) {
1149
GHashTable * hash = l->data;
1150
ubuntuone_nautilus_share_created (proxy, hash, user_data);
1152
g_slist_free (data);
1155
static void ubuntuone_nautilus_status_changed (DBusGProxy * proxy,
923
static void ubuntuone_nautilus_status_changed (SyncdaemonDaemon *daemon,
924
SyncdaemonStatusInfo *status_info,
1157
925
gpointer user_data) {
1158
926
UbuntuOneNautilus * uon = UBUNTUONE_NAUTILUS (user_data);
927
const gchar * status;
1160
928
gboolean is_online;
1162
is_online = g_strcmp0(g_hash_table_lookup (hash, "is_online"), "True") == 0;
1163
status = g_hash_table_lookup (hash, "name");
930
is_online = syncdaemon_status_info_get_online (status_info);
931
status = syncdaemon_status_info_get_name (status_info);
1165
933
/* Get the root when we get a status change signal, if we haven't yet */
1166
934
if (!uon->gotroot) {
1242
1025
ubuntuone_nautilus_reset_emblem (uon, path);
1245
static void ubuntuone_nautilus_udf_created (DBusGProxy * proxy,
1028
static void ubuntuone_nautilus_udf_created (SyncdaemonDaemon *daemon,
1030
SyncdaemonFolderInfo *folder_info,
1247
1031
gpointer user_data) {
1248
1032
UbuntuOneNautilus * uon = UBUNTUONE_NAUTILUS (user_data);
1249
gchar * path, * id, * subbed;
1033
const gchar * path, * id;
1250
1034
gboolean subscribed;
1252
path = g_hash_table_lookup (hash, "path");
1253
id = g_hash_table_lookup (hash, "volume_id");
1254
subbed = g_hash_table_lookup (hash, "subscribed");
1255
subscribed = (subbed != NULL && strlen (subbed) != 0);
1256
if (!g_hash_table_lookup (uon->udfs, path)) {
1258
g_hash_table_replace (uon->udfs, g_strdup (path), g_strdup (id));
1259
ubuntuone_nautilus_reset_emblem (uon, path);
1264
static void ubuntuone_nautilus_udf_deleted (DBusGProxy * proxy,
1266
gpointer user_data) {
1267
UbuntuOneNautilus * uon = UBUNTUONE_NAUTILUS (user_data);
1270
path = g_hash_table_lookup (hash, "path");
1272
g_hash_table_remove (uon->udfs, path);
1036
path = syncdaemon_folder_info_get_path (folder_info);
1037
id = syncdaemon_folder_info_get_volume_id (folder_info);
1038
subscribed = syncdaemon_folder_info_get_subscribed (folder_info);
1040
if (!g_hash_table_lookup (uon->udfs, path)) {
1042
g_hash_table_replace (uon->udfs, g_strdup (path), g_strdup (id));
1273
1043
ubuntuone_nautilus_reset_emblem (uon, path);
1277
static void ubuntuone_nautilus_udf_error (DBusGProxy * proxy,
1280
gpointer user_data) {
1049
static void ubuntuone_nautilus_udf_deleted (SyncdaemonDaemon *daemon,
1051
SyncdaemonFolderInfo *folder_info,
1052
gpointer user_data) {
1281
1053
UbuntuOneNautilus * uon = UBUNTUONE_NAUTILUS (user_data);
1282
gchar * path, * id, * subbed;
1283
gboolean subscribed;
1285
path = g_hash_table_lookup (hash, "path");
1286
id = g_hash_table_lookup (hash, "volume_id");
1287
subbed = g_hash_table_lookup (hash, "subscribed");
1288
subscribed = (subbed != NULL && strlen (subbed) != 0);
1290
if (id != NULL && subscribed)
1291
ubuntuone_nautilus_udf_created (proxy, hash, user_data);
1293
ubuntuone_nautilus_udf_deleted (proxy, hash, user_data);
1056
path = syncdaemon_folder_info_get_path (folder_info);
1057
if (path != NULL && success) {
1058
g_hash_table_remove (uon->udfs, path);
1059
ubuntuone_nautilus_reset_emblem (uon, path);
1296
1063
static void ubuntuone_nautilus_file_published (SyncdaemonDaemon *daemon,
1328
1095
g_strdup (g_hash_table_lookup (files->pdata[i], "public_url")));
1331
static void ubuntuone_nautilus_share_created (DBusGProxy * proxy,
1098
static void ubuntuone_nautilus_share_created (SyncdaemonDaemon *daemon,
1332
1100
GHashTable * hash,
1333
1101
gpointer user_data) {
1334
1102
UbuntuOneNautilus * uon = UBUNTUONE_NAUTILUS (user_data);
1337
1105
path = g_hash_table_lookup (hash, "path");
1338
id = g_hash_table_lookup (hash, "volume_id");
1108
id = g_hash_table_lookup (hash, "volume_id");
1340
if (!g_hash_table_lookup (uon->shares, path)) {
1341
g_hash_table_insert (uon->shares, g_strdup (path), g_strdup (id));
1342
ubuntuone_nautilus_reset_emblem (uon, path);
1110
if (!g_hash_table_lookup (uon->shares, path)) {
1111
g_hash_table_insert (uon->shares, g_strdup (path), g_strdup (id));
1112
ubuntuone_nautilus_reset_emblem (uon, path);
1115
ubuntuone_show_error_dialog (uon, _("Error creating share."),
1116
_("There was an error sharing the folder '%s'"),
1346
static void ubuntuone_nautilus_sharing_error (DBusGProxy * proxy,
1349
gpointer user_data) {
1350
UbuntuOneNautilus * uon = UBUNTUONE_NAUTILUS (user_data);
1351
gchar * path, * message;
1354
path = g_hash_table_lookup (hash, "path");
1356
dialog = gtk_message_dialog_new (GTK_WINDOW (uon->cb_data->parent),
1357
GTK_DIALOG_DESTROY_WITH_PARENT,
1360
_("Error creating share."));
1361
message = g_strdup_printf (_("There was an error sharing the folder '%s':\n%s"),
1364
gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
1367
g_signal_connect_swapped (G_OBJECT (dialog), "response",
1368
G_CALLBACK (gtk_widget_destroy), dialog);
1369
gtk_widget_show (dialog);
1372
1121
/* Required Nautilus module handling methods */
1373
1122
void nautilus_module_initialize (GTypeModule * module) {
1374
1123
#ifdef ENABLE_NLS