aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2009-05-15 13:41:55 -0700
committerMarcel Holtmann <marcel@holtmann.org>2009-05-15 13:41:55 -0700
commitc323572621298786d2ed8860a357fa0c72fc4431 (patch)
tree1a350c2088f2c0478fa7a1d1cb2e1ae6b209a287
parent5b3a8deb20b49ef3d727c0b04cbf32ced6278082 (diff)
downloadconnman-gnome-c323572621298786d2ed8860a357fa0c72fc4431.tar.gz
Retrieve service details for move operation
-rw-r--r--common/test-client.c81
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)