Index: applet/Makefile.am =================================================================== RCS file: /cvsroot/bluez/gnome/applet/Makefile.am,v retrieving revision 1.19 diff -u -p -r1.19 Makefile.am --- applet/Makefile.am 22 Jul 2007 16:06:05 -0000 1.19 +++ applet/Makefile.am 25 Jul 2007 15:49:12 -0000 @@ -4,7 +4,8 @@ bin_PROGRAMS = bluetooth-applet bluetooth_applet_SOURCES = main.c bluetooth_applet_LDADD = @NOTIFY_LIBS@ @GCONF_LIBS@ \ - @GTK_LIBS@ @HAL_LIBS@ @DBUS_LIBS@ + @GTK_LIBS@ @HAL_LIBS@ @DBUS_LIBS@ \ + $(top_builddir)/common/libcommon.a nodist_bluetooth_applet_SOURCES = \ $(top_builddir)/common/passkey-agent-glue.h \ Index: applet/main.c =================================================================== RCS file: /cvsroot/bluez/gnome/applet/main.c,v retrieving revision 1.70 diff -u -p -r1.70 main.c --- applet/main.c 25 Jul 2007 14:03:50 -0000 1.70 +++ applet/main.c 25 Jul 2007 15:49:13 -0000 @@ -48,6 +48,8 @@ #include #endif +#include "bluetooth-device-selection.h" + #define PASSKEY_AGENT_PATH "/org/bluez/passkey" #define AUTH_AGENT_PATH "/org/bluez/auth" @@ -1486,8 +1525,50 @@ static void settings_callback(GObject *w g_printerr("Couldn't execute command: %s\n", command); } +static void selected_device_changed(BluetoothDeviceSelection *sel, gchar *address, gpointer user_data) +{ + GtkDialog *dialog = user_data; + + gtk_dialog_set_response_sensitive(dialog, GTK_RESPONSE_ACCEPT, address != NULL); +} + static void browse_callback(GObject *widget, gpointer user_data) { + GtkWidget *dialog, *selector; + char *address, *command; + + dialog = gtk_dialog_new_with_buttons(_("Browse devices"), + NULL, + GTK_DIALOG_NO_SEPARATOR, + GTK_STOCK_CANCEL, + GTK_RESPONSE_REJECT, + GTK_STOCK_CONNECT, + GTK_RESPONSE_ACCEPT, + NULL); + gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT, FALSE); + gtk_window_set_default_size(GTK_WINDOW(dialog), 400, 300); + + /* Add the selector widget */ + selector = bluetooth_device_selection_new(_("Select device to browse.")); + gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), selector); + gtk_widget_show(selector); + g_signal_connect(selector, "selected-device-changed", + G_CALLBACK(selected_device_changed), dialog); + + if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_ACCEPT) { + gtk_widget_destroy(dialog); + return; + } + + g_object_get(selector, "device-selected", &address, NULL); + gtk_widget_destroy(dialog); + + command = g_strdup_printf("nautilus --no-default-window \"obex://[%s]\"", address); + g_free(address); + + if (!g_spawn_command_line_async(command, NULL)) + g_printerr(_("Couldn't execute command: %s\n"), command); + g_free(command); } #if 0