[gnome-packagekit] Use the simulate methods available in PackageKit 0.5.2 if available



commit e80cf82f6432e0b9f41a986190fbd4816491b5cd
Author: Richard Hughes <richard hughsie com>
Date:   Mon Aug 24 12:23:26 2009 +0100

    Use the simulate methods available in PackageKit 0.5.2 if available

 src/gpk-application.c   |   54 ++++++++++++++++++++++++++++++++++++++++++++--
 src/gpk-dbus-task.c     |    8 +++++++
 src/gpk-update-viewer.c |   16 +++++++++++++-
 3 files changed, 74 insertions(+), 4 deletions(-)
---
diff --git a/src/gpk-application.c b/src/gpk-application.c
index c351c26..9ea65ab 100644
--- a/src/gpk-application.c
+++ b/src/gpk-application.c
@@ -111,7 +111,9 @@ struct GpkApplicationPrivate
 	GpkHelperDepsRemove	*helper_deps_remove;
 	GpkHelperDepsInstall	*helper_deps_install;
 	GpkHelperMediaChange	*helper_media_change;
-	gboolean		 dep_check_info_only;
+#if !PK_CHECK_VERSION(0,5,2)
+	gboolean		 dep_check_info_only; /* bodge to tell apart the differing uses of GetDepends */
+#endif
 	guint			 status_id;
 	PkStatusEnum		 status_last;
 };
@@ -715,7 +717,9 @@ gpk_application_menu_requires_cb (GtkAction *action, GpkApplication *application
 
 	/* get the requires */
 	package_ids = pk_package_ids_from_id (package_id_selected);
+#if !PK_CHECK_VERSION(0,5,2)
 	application->priv->dep_check_info_only = TRUE;
+#endif
 	ret = pk_client_get_requires (application->priv->client_primary, PK_FILTER_ENUM_NONE,
 				      package_ids, TRUE, &error);
 	if (!ret) {
@@ -756,7 +760,9 @@ gpk_application_menu_depends_cb (GtkAction *action, GpkApplication *application)
 
 	/* get the depends */
 	package_ids = pk_package_ids_from_id (package_id_selected);
+#if !PK_CHECK_VERSION(0,5,2)
 	application->priv->dep_check_info_only = TRUE;
+#endif
 	ret = pk_client_get_depends (application->priv->client_primary, PK_FILTER_ENUM_NONE,
 				     package_ids, TRUE, &error);
 	if (!ret) {
@@ -1087,7 +1093,8 @@ gpk_application_package_cb (PkClient *client, const PkPackageObj *obj, GpkApplic
 	pk_client_get_role (client, &role, NULL, NULL);
 #endif
 	if (role == PK_ROLE_ENUM_GET_DEPENDS ||
-	    role == PK_ROLE_ENUM_GET_REQUIRES)
+	    role == PK_ROLE_ENUM_GET_REQUIRES ||
+	    role == PK_ROLE_ENUM_SIMULATE_INSTALL_PACKAGES)
 		return;
 
 	/* ignore progress */
@@ -1471,6 +1478,39 @@ gpk_application_finished_cb (PkClient *client, PkExitEnum exit_enum, guint runti
 		gpk_application_categories_finished (application);
 	}
 
+#if PK_CHECK_VERSION(0,5,2)
+	/* simulating */
+	if (role == PK_ROLE_ENUM_SIMULATE_INSTALL_PACKAGES &&
+	    exit_enum == PK_EXIT_ENUM_SUCCESS) {
+		list = pk_client_get_package_list (application->priv->client_primary);
+		gpk_helper_deps_install_show (application->priv->helper_deps_install, application->priv->package_list, list);
+		g_object_unref (list);
+	}
+
+	/* get reqs */
+	if (role == PK_ROLE_ENUM_SIMULATE_REMOVE_PACKAGES &&
+	    exit_enum == PK_EXIT_ENUM_SUCCESS) {
+		list = pk_client_get_package_list (application->priv->client_primary);
+		gpk_helper_deps_remove_show (application->priv->helper_deps_remove, application->priv->package_list, list);
+		g_object_unref (list);
+	}
+
+	/* get deps */
+	if (role == PK_ROLE_ENUM_GET_DEPENDS &&
+	    exit_enum == PK_EXIT_ENUM_SUCCESS) {
+		list = pk_client_get_package_list (application->priv->client_primary);
+		gpk_application_finished_get_depends (application, list);
+		g_object_unref (list);
+	}
+
+	/* get reqs */
+	if (role == PK_ROLE_ENUM_GET_REQUIRES &&
+	    exit_enum == PK_EXIT_ENUM_SUCCESS) {
+		list = pk_client_get_package_list (application->priv->client_primary);
+		gpk_application_finished_get_requires (application, list);
+		g_object_unref (list);
+	}
+#else
 	/* get deps */
 	if (role == PK_ROLE_ENUM_GET_DEPENDS &&
 	    exit_enum == PK_EXIT_ENUM_SUCCESS) {
@@ -1480,7 +1520,6 @@ gpk_application_finished_cb (PkClient *client, PkExitEnum exit_enum, guint runti
 		else
 			gpk_helper_deps_install_show (application->priv->helper_deps_install, application->priv->package_list, list);
 		g_object_unref (list);
-
 	}
 
 	/* get reqs */
@@ -1493,6 +1532,7 @@ gpk_application_finished_cb (PkClient *client, PkExitEnum exit_enum, guint runti
 			gpk_helper_deps_remove_show (application->priv->helper_deps_remove, application->priv->package_list, list);
 		g_object_unref (list);
 	}
+#endif
 
 	/* we've just agreed to auth or a EULA */
 	if (role == PK_ROLE_ENUM_INSTALL_SIGNATURE ||
@@ -1991,8 +2031,12 @@ gpk_application_button_apply_cb (GtkWidget *widget, GpkApplication *application)
 		}
 
 		/* install */
+#if PK_CHECK_VERSION(0,5,2)
+		ret = pk_client_simulate_install_packages (application->priv->client_primary, package_ids, &error);
+#else
 		application->priv->dep_check_info_only = FALSE;
 		ret = pk_client_get_depends (application->priv->client_primary, pk_bitfield_value (PK_FILTER_ENUM_NOT_INSTALLED), package_ids, TRUE, &error);
+#endif
 		if (!ret) {
 			egg_warning ("failed to get depends: %s", error->message);
 			g_error_free (error);
@@ -2013,7 +2057,9 @@ gpk_application_button_apply_cb (GtkWidget *widget, GpkApplication *application)
 		}
 
 		/* install */
+#if !PK_CHECK_VERSION(0,5,2)
 		application->priv->dep_check_info_only = FALSE;
+#endif
 		ret = pk_client_get_requires (application->priv->client_primary, pk_bitfield_value (PK_FILTER_ENUM_INSTALLED), package_ids, TRUE, &error);
 		if (!ret) {
 			egg_warning ("failed to get requires: %s", error->message);
@@ -3650,7 +3696,9 @@ gpk_application_init (GpkApplication *application)
 	application->priv->url = NULL;
 	application->priv->search_text = NULL;
 	application->priv->has_package = FALSE;
+#if !PK_CHECK_VERSION(0,5,2)
 	application->priv->dep_check_info_only = FALSE;
+#endif
 	application->priv->details_event_id = 0;
 	application->priv->status_id = 0;
 	application->priv->status_last = PK_STATUS_ENUM_UNKNOWN;
diff --git a/src/gpk-dbus-task.c b/src/gpk-dbus-task.c
index 0caf6eb..58380f7 100644
--- a/src/gpk-dbus-task.c
+++ b/src/gpk-dbus-task.c
@@ -517,7 +517,11 @@ gpk_dbus_task_install_package_ids_dep_check (GpkDbusTask *task)
 	g_return_if_fail (task->priv->package_ids != NULL);
 
 	/* are we dumb and can't check for depends? */
+#if PK_CHECK_VERSION(0,5,2)
+	if (!pk_bitfield_contain (task->priv->roles, PK_ROLE_ENUM_SIMULATE_INSTALL_PACKAGES)) {
+#else
 	if (!pk_bitfield_contain (task->priv->roles, PK_ROLE_ENUM_GET_DEPENDS)) {
+#endif
 		egg_warning ("skipping depends check");
 		gpk_dbus_task_install_package_ids (task);
 		goto out;
@@ -561,7 +565,11 @@ gpk_dbus_task_install_package_ids_dep_check (GpkDbusTask *task)
 	pk_client_set_timeout (task->priv->client_primary, task->priv->timeout, NULL);
 
 	/* find out if this would drag in other packages */
+#if PK_CHECK_VERSION(0,5,2)
+	ret = pk_client_simulate_install_packages (task->priv->client_primary, task->priv->package_ids, &error_local);
+#else
 	ret = pk_client_get_depends (task->priv->client_primary, pk_bitfield_value (PK_FILTER_ENUM_NOT_INSTALLED), task->priv->package_ids, TRUE, &error_local);
+#endif
 	if (!ret) {
 		/* TRANSLATORS: error: could not get the extra package list when installing a package */
 		gpk_dbus_task_error_msg (task, _("Could not work out what packages would be also installed"), error_local);
diff --git a/src/gpk-update-viewer.c b/src/gpk-update-viewer.c
index d8db4c5..74fed2c 100644
--- a/src/gpk-update-viewer.c
+++ b/src/gpk-update-viewer.c
@@ -432,7 +432,11 @@ gpk_update_viewer_button_install_cb (GtkWidget *widget, gpointer data)
 	install_package_ids = g_strdupv (package_ids);
 
 	/* get packages that also have to be updated */
+#if PK_CHECK_VERSION(0,5,2)
+	ret = pk_client_simulate_update_packages (client_primary, package_ids, &error);
+#else
 	ret = pk_client_get_depends (client_primary, pk_bitfield_value (PK_FILTER_ENUM_NOT_INSTALLED), package_ids, TRUE, &error);
+#endif
 	if (!ret) {
 		egg_warning ("cannot get depends for updates: %s", error->message);
 		g_error_free (error);
@@ -592,10 +596,17 @@ gpk_update_viewer_package_cb (PkClient *client, const PkPackageObj *obj, gpointe
 	package_id = pk_package_id_to_string (obj->id);
 
 	/* are we simulating to get deps? */
+#if PK_CHECK_VERSION(0,5,2)
+	if (role == PK_ROLE_ENUM_SIMULATE_UPDATE_PACKAGES) {
+		egg_debug ("ignoring %s as we are simulating", package_id);
+		goto out;
+	}
+#else
 	if (role == PK_ROLE_ENUM_GET_DEPENDS) {
 		egg_debug ("ignoring %s as we are in the depends phase", package_id);
 		goto out;
 	}
+#endif
 
 	/* used for progress */
 	if (!gpk_update_viewer_is_update_info (obj->info)) {
@@ -1799,8 +1810,11 @@ gpk_update_viewer_finished_cb (PkClient *client, PkExitEnum exit, guint runtime,
 	}
 
 	/* finished depends check, show any extras */
+#if PK_CHECK_VERSION(0,5,2)
+	if (exit == PK_EXIT_ENUM_SUCCESS && role == PK_ROLE_ENUM_SIMULATE_UPDATE_PACKAGES) {
+#else
 	if (exit == PK_EXIT_ENUM_SUCCESS && role == PK_ROLE_ENUM_GET_DEPENDS) {
-
+#endif
 		/* show deps dialog */
 		list = pk_client_get_package_list (client);
 		gpk_helper_deps_update_show (helper_deps_update, list);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]