[gnome-bluetooth] Remove obex-data-server support from sendto
- From: Bastien Nocera <hadess src gnome org>
- To: svn-commits-list gnome org
- Subject: [gnome-bluetooth] Remove obex-data-server support from sendto
- Date: Wed, 10 Jun 2009 19:44:42 -0400 (EDT)
commit c9f101214707eb9b178ebdb139f7dc72bcce744a
Author: Bastien Nocera <hadess hadess net>
Date: Wed Jun 10 21:55:16 2009 +0100
Remove obex-data-server support from sendto
We only use obexd now.
---
README | 2 +-
sendto/main.c | 353 +++++++++++----------------------------------------------
2 files changed, 70 insertions(+), 285 deletions(-)
diff --git a/README b/README
index a1fe094..61aedd0 100644
--- a/README
+++ b/README
@@ -22,7 +22,7 @@ Requirements
- GLib (with GIO), GTK+, GConf, dbus-glib, libhal
- libunique and libnotify
- BlueZ 4.36 is absolutely required
-- obexd or obex-data-server is required for bluetooth-sendto to work
+- obexd is required for bluetooth-sendto to work
Copyright
---------
diff --git a/sendto/main.c b/sendto/main.c
index 1b376be..901eccf 100644
--- a/sendto/main.c
+++ b/sendto/main.c
@@ -64,8 +64,6 @@ static int file_index = 0;
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;
@@ -232,179 +230,6 @@ static void create_window(void)
gtk_widget_show_all(dialog);
}
-static void finish_sending(DBusGProxy *proxy)
-{
- gtk_label_set_markup(GTK_LABEL(label_status), NULL);
- gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), 1.0);
-
- dbus_g_proxy_call(proxy, "Disconnect", NULL, G_TYPE_INVALID,
- G_TYPE_INVALID);
-
- gtk_widget_destroy(dialog);
-
- gtk_main_quit();
-}
-
-static void send_file(DBusGProxy *proxy)
-{
- gchar *filename = option_files[file_index];
- GError *error = NULL;
- gchar *basename, *text, *markup;
-
- if (file_index > file_count - 1) {
- finish_sending(proxy);
- return;
- }
-
- if (filename[0] == '\0') {
- file_index++;
- send_file(proxy);
- return;
- }
-
- text = g_path_get_dirname(filename);
- gtk_label_set_markup(GTK_LABEL(label_from), text);
- g_free(text);
-
- basename = g_path_get_basename(filename);
- text = g_strdup_printf(_("Sending %s"), basename);
- g_free(basename);
- markup = g_markup_printf_escaped("<i>%s</i>", text);
- gtk_label_set_markup(GTK_LABEL(label_status), markup);
- g_free(markup);
- g_free(text);
-
- text = g_strdup_printf(_("Sending file %d of %d"),
- file_index + 1, file_count);
- gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress), text);
- g_free(text);
-
- dbus_g_proxy_call(proxy, "SendFile", &error,
- G_TYPE_STRING, filename, G_TYPE_INVALID,
- G_TYPE_INVALID);
-
- if (error != NULL) {
- g_printerr("Sending of file %s failed: %s\n", filename,
- error->message);
- g_error_free(error);
- gtk_main_quit();
- }
-}
-
-static void transfer_started(DBusGProxy *proxy, gchar *a, gchar *b,
- guint64 size, gpointer user_data)
-{
- current_size = size;
-
- last_update = get_system_time();
-}
-
-static void transfer_progress(DBusGProxy *proxy,
- guint64 bytes, gpointer user_data)
-{
- gint64 current_time;
- gint elapsed_time;
- gint remaining_time;
- gint transfer_rate;
- guint64 current_sent;
- gdouble fraction;
- gchar *time, *rate, *file, *text;
-
- current_sent = total_sent + bytes;
- if (total_size == 0)
- fraction = 0.0;
- else
- fraction = (gdouble) current_sent / (gdouble) total_size;
- gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), fraction);
-
- current_time = get_system_time();
- elapsed_time = (current_time - first_update) / 1000000;
-
- if (current_time < last_update + 1000000)
- return;
-
- last_update = current_time;
-
- if (elapsed_time == 0)
- return;
-
- transfer_rate = current_sent / elapsed_time;
-
- if (transfer_rate == 0)
- return;
-
- remaining_time = (total_size - current_sent) / transfer_rate;
-
- time = format_time(remaining_time);
-
- if (transfer_rate >= 3000)
- rate = g_strdup_printf(_("%d KB/s"), transfer_rate / 1000);
- else
- rate = g_strdup_printf(_("%d B/s"), transfer_rate);
-
- file = g_strdup_printf(_("Sending file %d of %d"),
- file_index + 1, file_count);
- text = g_strdup_printf("%s (%s, %s)", file, rate, time);
- g_free(file);
- g_free(rate);
- g_free(time);
- gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress), text);
- g_free(text);
-}
-
-static void transfer_completed(DBusGProxy *proxy, gpointer user_data)
-{
- total_sent += current_size;
-
- file_index++;
-
- send_file(proxy);
-}
-
-static void transfer_cancelled(DBusGProxy *proxy, gpointer user_data)
-{
- transfer_completed(proxy, user_data);
-}
-
-static void error_occurred(DBusGProxy *proxy, const gchar *name,
- const gchar *message, gpointer user_data)
-{
- g_return_if_fail (proxy == session_proxy);
-
- gtk_label_set_markup(GTK_LABEL(label_status), message);
-
- gtk_widget_show (image_status);
- gtk_button_set_label (GTK_BUTTON (button), GTK_STOCK_CLOSE);
- gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog),
- GTK_RESPONSE_CANCEL, TRUE);
-}
-
-static void session_connect_error (DBusGProxy *proxy, const char *session_obj, const char *error_name,
- const char *error_message, gpointer user_data)
-{
- if (strcmp (session_obj, dbus_g_proxy_get_path (session_proxy)) != 0)
- return;
-
- gtk_label_set_markup(GTK_LABEL(label_status), error_message);
-
- gtk_widget_show (image_status);
- gtk_button_set_label (GTK_BUTTON (button), GTK_STOCK_CLOSE);
- gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog),
- GTK_RESPONSE_CANCEL, TRUE);
-}
-
-static void session_connected(DBusGProxy *proxy, const char *session_obj, gpointer user_data)
-{
- if (strcmp (session_obj, dbus_g_proxy_get_path (session_proxy)) != 0)
- return;
-
- gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress), NULL);
-
- first_update = get_system_time();
-
- send_file(session_proxy);
-}
-
#define OPENOBEX_CONNECTION_FAILED "org.openobex.Error.ConnectionAttemptFailed"
static gchar *get_error_message(GError *error)
@@ -437,56 +262,6 @@ done:
return message;
}
-static void create_notify(DBusGProxy *proxy,
- DBusGProxyCall *call, void *user_data)
-{
- GError *error = NULL;
- const gchar *path = NULL;
-
- if (dbus_g_proxy_end_call(proxy, call, &error,
- DBUS_TYPE_G_OBJECT_PATH, &path,
- G_TYPE_INVALID) == FALSE) {
- gchar *message;
-
- message = get_error_message(error);
- error_occurred(proxy, NULL, message, NULL);
- g_free(message);
-
- return;
- }
-
- session_proxy = dbus_g_proxy_new_for_name(conn, "org.openobex",
- path, "org.openobex.Session");
-
- dbus_g_proxy_add_signal(session_proxy, "ErrorOccurred",
- G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
-
- dbus_g_proxy_connect_signal(session_proxy, "ErrorOccurred",
- G_CALLBACK(error_occurred), NULL, NULL);
-
- dbus_g_proxy_add_signal(session_proxy, "Cancelled", G_TYPE_INVALID);
-
- dbus_g_proxy_connect_signal(session_proxy, "Cancelled",
- G_CALLBACK(transfer_cancelled), NULL, NULL);
-
- 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(session_proxy, "TransferStarted",
- G_CALLBACK(transfer_started), NULL, NULL);
-
- dbus_g_proxy_add_signal(session_proxy, "TransferProgress",
- G_TYPE_UINT64, G_TYPE_INVALID);
-
- dbus_g_proxy_connect_signal(session_proxy, "TransferProgress",
- G_CALLBACK(transfer_progress), NULL, NULL);
-
- dbus_g_proxy_add_signal(session_proxy, "TransferCompleted", G_TYPE_INVALID);
-
- dbus_g_proxy_connect_signal(session_proxy, "TransferCompleted",
- G_CALLBACK(transfer_completed), NULL, NULL);
-}
-
static gchar *get_name(DBusGProxy *device)
{
GHashTable *hash;
@@ -620,8 +395,56 @@ static gboolean progress_callback(DBusGMethodInvocation *context,
DBusGProxy *transfer, guint64 transferred,
gpointer user_data)
{
- transfer_progress(NULL, transferred, NULL);
+ gint64 current_time;
+ gint elapsed_time;
+ gint remaining_time;
+ gint transfer_rate;
+ guint64 current_sent;
+ gdouble fraction;
+ gchar *time, *rate, *file, *text;
+
+ current_sent = total_sent + transferred;
+ if (total_size == 0)
+ fraction = 0.0;
+ else
+ fraction = (gdouble) current_sent / (gdouble) total_size;
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), fraction);
+
+ current_time = get_system_time();
+ elapsed_time = (current_time - first_update) / 1000000;
+
+ if (current_time < last_update + 1000000)
+ goto done;
+
+ last_update = current_time;
+
+ if (elapsed_time == 0)
+ goto done;
+
+ transfer_rate = current_sent / elapsed_time;
+
+ if (transfer_rate == 0)
+ goto done;
+ remaining_time = (total_size - current_sent) / transfer_rate;
+
+ time = format_time(remaining_time);
+
+ if (transfer_rate >= 3000)
+ rate = g_strdup_printf(_("%d KB/s"), transfer_rate / 1000);
+ else
+ rate = g_strdup_printf(_("%d B/s"), transfer_rate);
+
+ file = g_strdup_printf(_("Sending file %d of %d"),
+ file_index + 1, file_count);
+ text = g_strdup_printf("%s (%s, %s)", file, rate, time);
+ g_free(file);
+ g_free(rate);
+ g_free(time);
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress), text);
+ g_free(text);
+
+done:
dbus_g_method_return(context);
return TRUE;
@@ -686,13 +509,6 @@ static void value_free(GValue *value)
g_free(value);
}
-static void name_owner_changed(DBusGProxy *proxy, const char *name,
- const char *prev, const char *new, gpointer user_data)
-{
- if (g_str_equal(name, "org.openobex") == TRUE && *new == '\0')
- gtk_main_quit();
-}
-
static void
select_device_changed(BluetoothChooser *sel,
char *address,
@@ -798,6 +614,9 @@ static GOptionEntry options[] = {
int main(int argc, char *argv[])
{
DBusGProxy *proxy;
+ GHashTable *hash = NULL;
+ GValue *value;
+ ObexAgent *agent;
GError *error = NULL;
int i;
@@ -904,66 +723,32 @@ int main(int argc, char *argv[])
create_window();
- proxy = dbus_g_proxy_new_for_name_owner(conn, "org.openobex.client",
- "/", "org.openobex.Client", NULL);
-
- if (proxy == NULL) {
- proxy = dbus_g_proxy_new_for_name(conn, "org.openobex",
- "/org/openobex", "org.openobex.Manager");
-
- dbus_g_proxy_add_signal(proxy, "NameOwnerChanged",
- G_TYPE_STRING, G_TYPE_STRING,
- G_TYPE_STRING, G_TYPE_INVALID);
+ proxy = dbus_g_proxy_new_for_name(conn, "org.openobex.client",
+ "/", "org.openobex.Client");
- dbus_g_proxy_connect_signal(proxy, "NameOwnerChanged",
- G_CALLBACK(name_owner_changed), NULL, NULL);
+ agent = obex_agent_new();
- dbus_g_proxy_add_signal(proxy, "SessionConnected", DBUS_TYPE_G_OBJECT_PATH, G_TYPE_INVALID);
+ obex_agent_set_release_func(agent, release_callback, NULL);
+ obex_agent_set_request_func(agent, request_callback, NULL);
+ obex_agent_set_progress_func(agent, progress_callback, NULL);
+ obex_agent_set_complete_func(agent, complete_callback, NULL);
- dbus_g_proxy_connect_signal(proxy, "SessionConnected",
- G_CALLBACK(session_connected), NULL, NULL);
+ obex_agent_setup(agent, AGENT_PATH);
- 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(session_connect_error), 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;
- GValue *value;
- ObexAgent *agent;
+ hash = g_hash_table_new_full(g_str_hash, g_str_equal,
+ g_free, (GDestroyNotify) value_free);
- agent = obex_agent_new();
+ value = g_new0(GValue, 1);
+ g_value_init(value, G_TYPE_STRING);
+ g_value_set_string(value, option_device);
+ g_hash_table_insert(hash, g_strdup("Destination"), value);
- obex_agent_set_release_func(agent, release_callback, NULL);
- obex_agent_set_request_func(agent, request_callback, NULL);
- obex_agent_set_progress_func(agent, progress_callback, NULL);
- obex_agent_set_complete_func(agent, complete_callback, NULL);
-
- obex_agent_setup(agent, AGENT_PATH);
-
- hash = g_hash_table_new_full(g_str_hash, g_str_equal,
- g_free, (GDestroyNotify) value_free);
-
- value = g_new0(GValue, 1);
- g_value_init(value, G_TYPE_STRING);
- g_value_set_string(value, option_device);
- g_hash_table_insert(hash, g_strdup("Destination"), value);
-
- dbus_g_proxy_begin_call(proxy, "SendFiles",
+ dbus_g_proxy_begin_call(proxy, "SendFiles",
send_notify, NULL, NULL,
- dbus_g_type_get_map("GHashTable",
- G_TYPE_STRING, G_TYPE_VALUE), hash,
+ dbus_g_type_get_map("GHashTable", G_TYPE_STRING, G_TYPE_VALUE), hash,
G_TYPE_STRV, option_files,
DBUS_TYPE_G_OBJECT_PATH, AGENT_PATH,
- G_TYPE_INVALID);
- }
+ G_TYPE_INVALID);
gtk_main();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]