diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2009-05-15 13:41:55 -0700 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-05-15 13:41:55 -0700 |
commit | c323572621298786d2ed8860a357fa0c72fc4431 (patch) | |
tree | 1a350c2088f2c0478fa7a1d1cb2e1ae6b209a287 | |
parent | 5b3a8deb20b49ef3d727c0b04cbf32ced6278082 (diff) | |
download | connman-gnome-c323572621298786d2ed8860a357fa0c72fc4431.tar.gz |
Retrieve service details for move operation
-rw-r--r-- | common/test-client.c | 81 |
1 files changed, 61 insertions, 20 deletions
diff --git a/common/test-client.c b/common/test-client.c index fd15649..3f837ba 100644 --- a/common/test-client.c +++ b/common/test-client.c @@ -30,6 +30,14 @@ static ConnmanClient *client; +enum { + CONNMAN_SERVICE_MOVE = 0x1138, +}; + +static const GtkTargetEntry row_targets[] = { + { "CONNMAN_SERVICE_MOVE", GTK_TARGET_SAME_WIDGET, CONNMAN_SERVICE_MOVE }, +}; + static const gchar *type2str(guint type) { switch (type) { @@ -184,7 +192,7 @@ static void method_call(DBusGProxy *proxy, const char *method, const char *path) if (proxy == NULL) return; - g_print("%s %s <== %s\n", method, path, dbus_g_proxy_get_path(proxy)); + g_print("%s %s <== %s\n", method, dbus_g_proxy_get_path(proxy), path); if (path == NULL) { if (dbus_g_proxy_begin_call(proxy, method, method_callback, @@ -204,11 +212,42 @@ static void method_call(DBusGProxy *proxy, const char *method, const char *path) } } +static DBusGProxy *get_proxy(GtkTreeSelection *selection) +{ + GtkTreeModel *model; + GtkTreeIter iter; + DBusGProxy *proxy = NULL; + + if (gtk_tree_selection_get_selected(selection, &model, &iter) == FALSE) + return NULL; + + gtk_tree_model_get(model, &iter, CONNMAN_COLUMN_PROXY, &proxy, -1); + + return proxy; +} + static void drag_data_get(GtkWidget *widget, GdkDragContext *context, GtkSelectionData *data, guint info, guint time, gpointer user_data) { + GtkTreeSelection *selection = user_data; + GtkTreeModel *model; + GtkTreeIter iter; + GtkTreePath *path; + g_print("drag-data-get\n"); + + if (info != CONNMAN_SERVICE_MOVE) + return; + + if (gtk_tree_selection_get_selected(selection, &model, &iter) == FALSE) + return; + + path = gtk_tree_model_get_path(model, &iter); + if (path == NULL) + return; + + data->data = (guchar *) gtk_tree_path_to_string(path); } static void drag_data_received(GtkWidget *widget, GdkDragContext *context, @@ -218,7 +257,8 @@ static void drag_data_received(GtkWidget *widget, GdkDragContext *context, GtkTreeModel *model = user_data; GtkTreePath *path; GtkTreeIter iter; - DBusGProxy *proxy = NULL; + DBusGProxy *source, *proxy = NULL; + gboolean success = FALSE; g_print("drag-data-received %d,%d\n", x, y); @@ -231,10 +271,28 @@ static void drag_data_received(GtkWidget *widget, GdkDragContext *context, gtk_tree_model_get(model, &iter, CONNMAN_COLUMN_PROXY, &proxy, -1); - method_call(proxy, "MoveBefore", dbus_g_proxy_get_path(proxy)); + if (data == NULL || data->length == 0) + goto done; + + if (info != CONNMAN_SERVICE_MOVE) + goto done; + + if (gtk_tree_model_get_iter_from_string(model, &iter, + (gchar *) data->data) == FALSE) + goto done; + + gtk_tree_model_get(model, &iter, CONNMAN_COLUMN_PROXY, &source, -1); + + method_call(source, "MoveBefore", dbus_g_proxy_get_path(proxy)); + + g_object_unref(proxy); + + success = TRUE; done: gtk_tree_path_free(path); + + gtk_drag_finish(context, success, FALSE, time); } static gboolean drag_drop(GtkWidget *widget, GdkDragContext *context, @@ -245,20 +303,6 @@ static gboolean drag_drop(GtkWidget *widget, GdkDragContext *context, return FALSE; } -static DBusGProxy *get_proxy(GtkTreeSelection *selection) -{ - GtkTreeModel *model; - GtkTreeIter iter; - DBusGProxy *proxy = NULL; - - if (gtk_tree_selection_get_selected(selection, &model, &iter) == FALSE) - return NULL; - - gtk_tree_model_get(model, &iter, CONNMAN_COLUMN_PROXY, &proxy, -1); - - return proxy; -} - static void connect_callback(GtkWidget *widget, gpointer user_data) { DBusGProxy *proxy = get_proxy(user_data); @@ -362,9 +406,6 @@ static void select_callback(GtkTreeSelection *selection, gpointer user_data) GtkTreeModel *model; GtkTreeIter iter; gboolean selected, favorite = FALSE; - const GtkTargetEntry row_targets[] = { - { "resorting", GTK_TARGET_SAME_WIDGET, 0 } - }; selected = gtk_tree_selection_get_selected(selection, &model, &iter); if (selected == TRUE) |