diff options
author | Bastien Nocera <hadess@hadess.net> | 2010-01-07 17:49:23 +0000 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2010-01-07 17:51:24 +0000 |
commit | 308e1c6f32168c031a59a90b400aba1033c0de15 (patch) | |
tree | 7b0b041c566f60f0748df22801502d06874ab56b | |
parent | 65058aab3f986f9048c5f045945fe3a3034da056 (diff) | |
download | gnome-bluetooth-308e1c6f32168c031a59a90b400aba1033c0de15.tar.gz |
Remove hard-coded use of nautilus
And hope the user has a file manager installed anyway.
https://bugzilla.redhat.com/show_bug.cgi?id=553083
-rw-r--r-- | applet/main.c | 41 |
1 files changed, 31 insertions, 10 deletions
diff --git a/applet/main.c b/applet/main.c index 9bee2b0a..cb17ebe4 100644 --- a/applet/main.c +++ b/applet/main.c @@ -100,9 +100,33 @@ select_device_changed(BluetoothChooser *sel, GTK_RESPONSE_ACCEPT, address != NULL); } +static void +mount_finish_cb (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + GError *error = NULL; + char *uri; + + if (g_file_mount_enclosing_volume_finish (G_FILE (source_object), + res, &error) == FALSE) { + g_printerr ("Failed to mount OBEX volume: %s", error->message); + g_error_free (error); + return; + } + + uri = g_file_get_uri (G_FILE (source_object)); + if (gtk_show_uri (NULL, uri, GDK_CURRENT_TIME, &error) == FALSE) { + g_printerr ("Failed to open %s: %s", uri, error->message); + g_error_free (error); + } + g_free (uri); +} + void browse_callback(GObject *widget, gpointer user_data) { - char *address, *cmd; + GFile *file; + char *address, *uri; address = g_strdup (g_object_get_data (widget, "address")); if (address == NULL) { @@ -146,14 +170,14 @@ void browse_callback(GObject *widget, gpointer user_data) return; } - cmd = g_strdup_printf("%s --no-default-window \"obex://[%s]\"", - "nautilus", address); + uri = g_strdup_printf ("obex://[%s]/", address); g_free (address); - if (!g_spawn_command_line_async(cmd, NULL)) - g_printerr("Couldn't execute command: %s\n", cmd); + file = g_file_new_for_uri (uri); + g_free (uri); - g_free (cmd); + g_file_mount_enclosing_volume (file, G_MOUNT_MOUNT_NONE, NULL, NULL, mount_finish_cb, NULL); + g_object_unref (file); } void sendto_callback(GObject *widget, gpointer user_data) @@ -380,10 +404,7 @@ update_menu_items (void) if (enabled == FALSE) return; - object = gtk_builder_get_object (xml, "browse-device"); - gtk_action_set_sensitive (GTK_ACTION (object), - program_available ("nautilus")); - + gtk_action_set_sensitive (GTK_ACTION (object), TRUE); } static void |