--- bluez-gnome-1.8/common/marshal.list 2008-08-25 00:14:24.000000000 +0300 +++ bluez-gnome-1.8/common/marshal.list 2008-11-14 14:28:22.000000000 +0200 @@ -3,3 +3,4 @@ VOID:STRING,STRING VOID:STRING,STRING,UINT64 VOID:UINT64 +VOID:STRING,STRING,STRING --- bluez-gnome-1.8/sendto/main.c 2008-10-04 22:32:56.000000000 +0300 +++ bluez-gnome-1.8/sendto/main.c 2008-11-14 14:52:38.000000000 +0200 @@ -64,6 +64,8 @@ static gint64 first_update = 0; static gint64 last_update = 0; +static DBusGProxy *session_proxy = NULL; + static gchar *filename_to_path(const gchar *filename) { GFile *file; @@ -354,7 +356,16 @@ static void error_occurred(DBusGProxy *proxy, const gchar *name, const gchar *message, gpointer user_data) { - transfer_completed(proxy, user_data); + gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress), + _("Error Occurred")); + + gchar *text = g_strdup_printf("%s", + message); + gtk_label_set_markup(GTK_LABEL(label_status), text); + g_free(text); + + gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), + GTK_RESPONSE_CLOSE, TRUE); } static void session_connected(DBusGProxy *proxy, gpointer user_data) @@ -363,7 +374,7 @@ first_update = get_system_time(); - send_file(proxy); + send_file(session_proxy); } #define OPENOBEX_CONNECTION_FAILED "org.openobex.Error.ConnectionAttemptFailed" @@ -407,60 +418,44 @@ if (dbus_g_proxy_end_call(proxy, call, &error, DBUS_TYPE_G_OBJECT_PATH, &path, G_TYPE_INVALID) == FALSE) { - gchar *text, *message; + gchar *message; message = get_error_message(error); - text = g_strdup_printf("%s", - message); - gtk_label_set_markup(GTK_LABEL(label_status), text); - g_free(text); + error_occurred(proxy,NULL,message,NULL); g_free(message); - gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), - GTK_RESPONSE_CLOSE, TRUE); return; } - - proxy = dbus_g_proxy_new_for_name(conn, "org.openobex", + session_proxy = dbus_g_proxy_new_for_name(conn, "org.openobex", path, "org.openobex.Session"); - dbus_g_proxy_add_signal(proxy, "Connected", G_TYPE_INVALID); - - dbus_g_proxy_connect_signal(proxy, "Connected", - G_CALLBACK(session_connected), NULL, NULL); - - dbus_g_proxy_add_signal(proxy, "ErrorOccurred", - G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID); - - dbus_g_proxy_connect_signal(proxy, "ErrorOccurred", - G_CALLBACK(error_occurred), NULL, NULL); - - dbus_g_proxy_add_signal(proxy, "Cancelled", G_TYPE_INVALID); + dbus_g_proxy_add_signal(session_proxy, "Cancelled", + G_TYPE_INVALID); - dbus_g_proxy_connect_signal(proxy, "Cancelled", + dbus_g_proxy_connect_signal(session_proxy, "Cancelled", G_CALLBACK(transfer_cancelled), NULL, NULL); - dbus_g_proxy_add_signal(proxy, "TransferStarted", G_TYPE_STRING, - G_TYPE_STRING, G_TYPE_UINT64, G_TYPE_INVALID); + dbus_g_proxy_add_signal(session_proxy, "TransferStarted", + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT64, + G_TYPE_INVALID); - dbus_g_proxy_connect_signal(proxy, "TransferStarted", + dbus_g_proxy_connect_signal(session_proxy, "TransferStarted", G_CALLBACK(transfer_started), NULL, NULL); - dbus_g_proxy_add_signal(proxy, "TransferProgress", + dbus_g_proxy_add_signal(session_proxy, "TransferProgress", G_TYPE_UINT64, G_TYPE_INVALID); - dbus_g_proxy_connect_signal(proxy, "TransferProgress", + dbus_g_proxy_connect_signal(session_proxy, "TransferProgress", G_CALLBACK(transfer_progress), NULL, NULL); - dbus_g_proxy_add_signal(proxy, "TransferCompleted", G_TYPE_INVALID); + dbus_g_proxy_add_signal(session_proxy, "TransferCompleted", + G_TYPE_INVALID); - dbus_g_proxy_connect_signal(proxy, "TransferCompleted", + dbus_g_proxy_connect_signal(session_proxy, "TransferCompleted", G_CALLBACK(transfer_completed), NULL, NULL); - dbus_g_proxy_call(proxy, "Connect", NULL, G_TYPE_INVALID, - G_TYPE_INVALID); } static gchar *get_name(DBusGProxy *device) @@ -767,6 +762,10 @@ dbus_g_object_register_marshaller(marshal_VOID__UINT64, G_TYPE_NONE, G_TYPE_UINT64, G_TYPE_INVALID); + dbus_g_object_register_marshaller(marshal_VOID__STRING_STRING_STRING, + G_TYPE_NONE, DBUS_TYPE_G_OBJECT_PATH, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID); + device_name = get_device_name(option_device); if (device_name == NULL) device_name = g_strdup(option_device); @@ -787,9 +786,23 @@ dbus_g_proxy_connect_signal(proxy, "NameOwnerChanged", G_CALLBACK(name_owner_changed), NULL, NULL); + dbus_g_proxy_add_signal(proxy, "SessionConnected", + DBUS_TYPE_G_OBJECT_PATH, G_TYPE_INVALID); + + dbus_g_proxy_connect_signal(proxy, "SessionConnected", + G_CALLBACK(session_connected), NULL, NULL); + + dbus_g_proxy_add_signal(proxy, "SessionConnectError", + DBUS_TYPE_G_OBJECT_PATH, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_INVALID); + + dbus_g_proxy_connect_signal(proxy, "SessionConnectError", + G_CALLBACK(error_occurred), NULL, NULL); + dbus_g_proxy_begin_call(proxy, "CreateBluetoothSession", create_notify, NULL, NULL, G_TYPE_STRING, option_device, + G_TYPE_STRING, "00:00:00:00:00:00", G_TYPE_STRING, "opp", G_TYPE_INVALID); } else { GHashTable *hash = NULL;