[Frugalware-git] fun: fun-dbus: implemented fun_dbus_perform_service() for GET_PACKAGE_VERSION and GET_PACKAGE_DESCRIPTION

Priyank priyank at frugalware.org
Tue Nov 20 14:22:06 CET 2007


Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=fun.git;a=commitdiff;h=7452a9b2ab982f91eddb4dd7747dfb571e033425

commit 7452a9b2ab982f91eddb4dd7747dfb571e033425
Author: Priyank <priyank at frugalware.org>
Date:   Mon Nov 19 01:13:56 2007 +0530

fun-dbus: implemented fun_dbus_perform_service() for GET_PACKAGE_VERSION and GET_PACKAGE_DESCRIPTION
fun-ui: populate the updates list and details when updates are available

diff --git a/src/fun-dbus.c b/src/fun-dbus.c
index d1670f9..a97484d 100644
--- a/src/fun-dbus.c
+++ b/src/fun-dbus.c
@@ -103,7 +103,62 @@ fun_dbus_perform_service (guint service, gchar *ip_arg, gchar **op_arg)
dbus_message_unref (message);
break;
}
-
+		case GET_PACKAGE_VERSION:
+		{
+			dbus_error_init (&error);
+			message = dbus_message_new_method_call ("org.frugalware.FWUpdateNotifier",
+								"/org/frugalware/FWUpdateNotifier",
+								"org.frugalware.FWUpdateNotifier",
+								"GetPackageVersion");
+			dbus_message_append_args (message, DBUS_TYPE_STRING, &ip_arg);
+			reply = dbus_connection_send_with_reply_and_block (fun_conn, message, reply_timeout, &error);
+			if (dbus_error_is_set(&error))
+			{
+				fprintf (stderr, "ERROR: %s\n", error.message);
+				dbus_error_free (&error);
+				return FALSE;
+			}
+			if (!dbus_message_get_args (reply, &error,
+						DBUS_TYPE_STRING, op_arg,
+						DBUS_TYPE_INVALID))
+			{
+				fprintf (stderr, "ERROR: %s\n", error.message);
+				dbus_error_free (&error);
+				return FALSE;
+			}
+
+			dbus_message_unref (reply);
+			dbus_message_unref (message);
+			break;
+		}
+		case GET_PACKAGE_DESCRIPTION:
+		{
+			dbus_error_init (&error);
+			message = dbus_message_new_method_call ("org.frugalware.FWUpdateNotifier",
+								"/org/frugalware/FWUpdateNotifier",
+								"org.frugalware.FWUpdateNotifier",
+								"GetPackageDescription");
+			dbus_message_append_args (message, DBUS_TYPE_STRING, &ip_arg);
+			reply = dbus_connection_send_with_reply_and_block (fun_conn, message, reply_timeout, &error);
+			if (dbus_error_is_set(&error))
+			{
+				fprintf (stderr, "ERROR: %s\n", error.message);
+				dbus_error_free (&error);
+				return FALSE;
+			}
+			if (!dbus_message_get_args (reply, &error,
+						DBUS_TYPE_STRING, op_arg,
+						DBUS_TYPE_INVALID))
+			{
+				fprintf (stderr, "ERROR: %s\n", error.message);
+				dbus_error_free (&error);
+				return FALSE;
+			}
+
+			dbus_message_unref (reply);
+			dbus_message_unref (message);
+			break;
+		}
default: break;
}

diff --git a/src/fun-ui.c b/src/fun-ui.c
index 8dd4ed6..858f161 100644
--- a/src/fun-ui.c
+++ b/src/fun-ui.c
@@ -574,7 +574,28 @@ fun_about_show (void)
static void
fun_populate_updates_tvw (gchar *plist)
{
-	g_print ("updates are: %s \n", plist);
+	char 			*pkg = NULL;
+	GtkListStore	*store = NULL;
+	GtkTreeIter		iter;
+	GList			*l = NULL;
+
+	/* convert the updates string to a GList */
+	GList	*pack_list = NULL;
+	pkg = strtok (plist, " ");
+	pack_list = g_list_append (pack_list, (gpointer)g_strdup(pkg));
+	while ((pkg=strtok(NULL, " "))!=NULL) pack_list = g_list_append (pack_list, (gpointer)g_strdup(pkg));
+
+	/* populate the updates treeview store */
+	store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW(fun_updates_tvw)));
+	for (l = g_list_first (pack_list); l; l = g_list_next (l))
+	{
+		gchar *ver = NULL;
+		gchar *desc = NULL;
+		fun_dbus_perform_service (GET_PACKAGE_VERSION, l->data, &ver);
+		gtk_list_store_append (store, &iter);
+		fun_dbus_perform_service (GET_PACKAGE_DESCRIPTION, l->data, &desc);
+		gtk_list_store_set (store, &iter, 0, NULL, 1, l->data, 2, ver, 3, desc, -1);
+	}
}

static void


More information about the Frugalware-git mailing list