Merge lp:~dobey/ubuntuone-client/emblem-tweaking into lp:ubuntuone-client

Proposed by dobey
Status: Merged
Approved by: Elliot Murphy
Approved revision: 245
Merged at revision: not available
Proposed branch: lp:~dobey/ubuntuone-client/emblem-tweaking
Merge into: lp:ubuntuone-client
Diff against target: 159 lines
1 file modified
nautilus/ubuntuone-nautilus.c (+81/-3)
To merge this branch: bzr merge lp:~dobey/ubuntuone-client/emblem-tweaking
Reviewer Review Type Date Requested Status
Elliot Murphy (community) Approve
Review via email: mp+13145@code.launchpad.net

Commit message

Get the shares list when we load up the location bar
Get the metadata for files and add them to a list of updated/needs updating
Add emblems for updated and needs updating (default to updated)

To post a comment you must log in.
Revision history for this message
Elliot Murphy (statik) wrote :

looks good and builds fine.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'nautilus/ubuntuone-nautilus.c'
--- nautilus/ubuntuone-nautilus.c 2009-09-29 20:51:14 +0000
+++ nautilus/ubuntuone-nautilus.c 2009-10-09 22:21:14 +0000
@@ -73,6 +73,9 @@
73 GHashTable * uploads;73 GHashTable * uploads;
74 GHashTable * downloads;74 GHashTable * downloads;
75 GHashTable * shares;75 GHashTable * shares;
76 /* Lists of sync/unsync'd files */
77 GHashTable * updated;
78 GHashTable * needsupdating;
7679
77 /* Extra data we need to free on finalization */80 /* Extra data we need to free on finalization */
78 ShareCBData * share_cb_data;81 ShareCBData * share_cb_data;
@@ -88,6 +91,9 @@
88static void ubuntuone_nautilus_register_type (GTypeModule * module);91static void ubuntuone_nautilus_register_type (GTypeModule * module);
8992
90/* DBus signal and async method call handlers */93/* DBus signal and async method call handlers */
94static void ubuntuone_nautilus_update_meta (DBusGProxy * proxy,
95 DBusGProxyCall * call_id,
96 gpointer user_data);
91static void ubuntuone_nautilus_state_toggled (DBusGProxy * proxy,97static void ubuntuone_nautilus_state_toggled (DBusGProxy * proxy,
92 DBusGProxyCall * call_id,98 DBusGProxyCall * call_id,
93 gpointer user_data);99 gpointer user_data);
@@ -161,15 +167,28 @@
161 path = g_filename_from_uri (nautilus_file_info_get_uri (file), NULL, NULL);167 path = g_filename_from_uri (nautilus_file_info_get_uri (file), NULL, NULL);
162168
163 if (path) {169 if (path) {
164 if (g_hash_table_lookup (uon->uploads, path))170 if (!g_hash_table_lookup (uon->updated, path) &&
165 nautilus_file_info_add_emblem (file, "ubuntuone-updating");171 !g_hash_table_lookup (uon->needsupdating, path)) {
172 /* Add the synchronized emblem anyway, and update later */
173 nautilus_file_info_add_emblem (file, "ubuntuone-synchronized");
174 dbus_g_proxy_begin_call (uon->u1_fs, "get_metadata",
175 ubuntuone_nautilus_update_meta, uon,
176 NULL, G_TYPE_STRING, path, G_TYPE_INVALID);
177 goto updating_meta;
178 }
166179
167 if (g_hash_table_lookup (uon->downloads, path))180 if (g_hash_table_lookup (uon->uploads, path) ||
181 g_hash_table_lookup (uon->downloads, path))
168 nautilus_file_info_add_emblem (file, "ubuntuone-updating");182 nautilus_file_info_add_emblem (file, "ubuntuone-updating");
183 else if (g_hash_table_lookup (uon->updated, path))
184 nautilus_file_info_add_emblem (file, "ubuntuone-synchronized");
185 else if (g_hash_table_lookup (uon->needsupdating, path))
186 nautilus_file_info_add_emblem (file, "ubuntuone-unsynchronized");
169187
170 if (g_hash_table_lookup (uon->shares, path))188 if (g_hash_table_lookup (uon->shares, path))
171 nautilus_file_info_add_emblem (file, "shared");189 nautilus_file_info_add_emblem (file, "shared");
172190
191 updating_meta:
173 g_free (path);192 g_free (path);
174 }193 }
175194
@@ -255,6 +274,11 @@
255 if (!path || !ubuntuone_is_storagefs (uon, path))274 if (!path || !ubuntuone_is_storagefs (uon, path))
256 goto location_done;275 goto location_done;
257276
277 /* Update the list of shared folders - ok to call dbus now */
278 dbus_g_proxy_begin_call (uon->u1_shares, "get_shared",
279 ubuntuone_nautilus_got_shared, uon,
280 NULL, G_TYPE_INVALID);
281
258 hbox = gtk_hbox_new (FALSE, 6);282 hbox = gtk_hbox_new (FALSE, 6);
259 labeltext = g_strdup_printf ("<b>Ubuntu One</b> %s", _("File Sharing"));283 labeltext = g_strdup_printf ("<b>Ubuntu One</b> %s", _("File Sharing"));
260 label = gtk_label_new (labeltext);284 label = gtk_label_new (labeltext);
@@ -537,6 +561,8 @@
537 uon->uploads = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);561 uon->uploads = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
538 uon->downloads = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);562 uon->downloads = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
539 uon->shares = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);563 uon->shares = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
564 uon->updated = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
565 uon->needsupdating = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
540566
541 /* Magic bag of holding +10:567 /* Magic bag of holding +10:
542 * We store some button widgets in a hash table here, so that we can568 * We store some button widgets in a hash table here, so that we can
@@ -674,6 +700,12 @@
674 g_hash_table_destroy (uon->shares);700 g_hash_table_destroy (uon->shares);
675 uon->shares = NULL;701 uon->shares = NULL;
676702
703 g_hash_table_destroy (uon->updated);
704 uon->updated = NULL;
705
706 g_hash_table_destroy (uon->needsupdating);
707 uon->needsupdating = NULL;
708
677 g_hash_table_destroy (uon->buttons);709 g_hash_table_destroy (uon->buttons);
678 uon->buttons = NULL;710 uon->buttons = NULL;
679}711}
@@ -737,6 +769,40 @@
737769
738770
739/* DBus signal handlers and async method call handlers */771/* DBus signal handlers and async method call handlers */
772static void ubuntuone_nautilus_update_meta (DBusGProxy * proxy,
773 DBusGProxyCall * call_id,
774 gpointer user_data) {
775 UbuntuOneNautilus * uon;
776 GHashTable * metadata;
777 GError * error = NULL;
778 gchar * local, * server, * path, * new_path;
779
780 g_return_if_fail (proxy != NULL);
781
782 if (!dbus_g_proxy_end_call (proxy, call_id, &error,
783 dbus_g_type_get_map ("GHashTable",
784 G_TYPE_STRING,
785 G_TYPE_STRING),
786 &metadata,
787 G_TYPE_INVALID)) {
788 g_warning ("ERROR: %s", error->message);
789 return;
790 }
791
792 uon = UBUNTUONE_NAUTILUS (user_data);
793
794 path = g_hash_table_lookup (metadata, "path");
795 local = g_hash_table_lookup (metadata, "local_hash");
796 server = g_hash_table_lookup (metadata, "server_hash");
797
798 new_path = g_strdup (path);
799 if (local && server && strcmp (local, server) == 0)
800 g_hash_table_replace (uon->updated, new_path, new_path);
801 else
802 g_hash_table_replace (uon->needsupdating, new_path, new_path);
803 utime (path, NULL);
804}
805
740static void ubuntuone_nautilus_state_toggled (DBusGProxy * proxy,806static void ubuntuone_nautilus_state_toggled (DBusGProxy * proxy,
741 DBusGProxyCall * call_id,807 DBusGProxyCall * call_id,
742 gpointer user_data) {808 gpointer user_data) {
@@ -848,8 +914,14 @@
848 gchar * path, GHashTable * info,914 gchar * path, GHashTable * info,
849 gpointer user_data) {915 gpointer user_data) {
850 UbuntuOneNautilus * uon = UBUNTUONE_NAUTILUS (user_data);916 UbuntuOneNautilus * uon = UBUNTUONE_NAUTILUS (user_data);
917 gchar * new_path;
851918
852 g_hash_table_remove (uon->uploads, path);919 g_hash_table_remove (uon->uploads, path);
920 g_hash_table_remove (uon->needsupdating, path);
921
922 new_path = g_strdup (path);
923 g_hash_table_replace (uon->updated, new_path, new_path);
924
853 utime (path, NULL);925 utime (path, NULL);
854}926}
855927
@@ -870,8 +942,14 @@
870 GHashTable * info,942 GHashTable * info,
871 gpointer user_data) {943 gpointer user_data) {
872 UbuntuOneNautilus * uon = UBUNTUONE_NAUTILUS (user_data);944 UbuntuOneNautilus * uon = UBUNTUONE_NAUTILUS (user_data);
945 gchar * new_path;
873946
874 g_hash_table_remove (uon->downloads, path);947 g_hash_table_remove (uon->downloads, path);
948 g_hash_table_remove (uon->needsupdating, path);
949
950 new_path = g_strdup (path);
951 g_hash_table_replace (uon->updated, new_path, new_path);
952
875 utime (path, NULL);953 utime (path, NULL);
876}954}
877955

Subscribers

People subscribed via source and target branches