gnome-packagekit r300 - in trunk: data help/C/figures po src



Author: rhughes
Date: Mon Sep 22 13:34:34 2008
New Revision: 300
URL: http://svn.gnome.org/viewvc/gnome-packagekit?rev=300&view=rev

Log:
from git

Modified:
   trunk/data/gnome-packagekit.schemas.in
   trunk/help/C/figures/gpk-updates-overview.png
   trunk/help/C/figures/gpk-updates.png
   trunk/po/ChangeLog
   trunk/po/POTFILES.in
   trunk/po/cy.po
   trunk/src/Makefile.am
   trunk/src/gpk-application-main.c
   trunk/src/gpk-application.c
   trunk/src/gpk-application.h
   trunk/src/gpk-auto-refresh.c
   trunk/src/gpk-auto-refresh.h
   trunk/src/gpk-backend-status.c
   trunk/src/gpk-check-update.c
   trunk/src/gpk-client-run.c
   trunk/src/gpk-client.c
   trunk/src/gpk-client.h
   trunk/src/gpk-common.c
   trunk/src/gpk-common.h
   trunk/src/gpk-enum.c
   trunk/src/gpk-enum.h
   trunk/src/gpk-firmware.c
   trunk/src/gpk-firmware.h
   trunk/src/gpk-inhibit.c
   trunk/src/gpk-inhibit.h
   trunk/src/gpk-interface.h
   trunk/src/gpk-log.c
   trunk/src/gpk-prefs.c
   trunk/src/gpk-repo.c
   trunk/src/gpk-self-test.c
   trunk/src/gpk-smart-icon.c
   trunk/src/gpk-smart-icon.h
   trunk/src/gpk-update-icon.c
   trunk/src/gpk-update-viewer.c
   trunk/src/gpk-watch.c
   trunk/src/gpk-watch.h

Modified: trunk/data/gnome-packagekit.schemas.in
==============================================================================
--- trunk/data/gnome-packagekit.schemas.in	(original)
+++ trunk/data/gnome-packagekit.schemas.in	Mon Sep 22 13:34:34 2008
@@ -14,6 +14,18 @@
     </schema>
 
     <schema>
+      <key>/schemas/apps/gnome-packagekit/prompt_hardware</key>
+      <applyto>/apps/gnome-packagekit/prompt_hardware</applyto>
+      <owner>gnome-packagekit</owner>
+      <type>bool</type>
+      <default>true</default>
+      <locale name="C">
+        <short>Ask the user if additional hardware drivers should be installed</short>
+        <long>Ask the user if additional hardware drivers should be installed</long>
+      </locale>
+    </schema>
+
+    <schema>
       <key>/schemas/apps/gnome-packagekit/show_depends</key>
       <applyto>/apps/gnome-packagekit/show_depends</applyto>
       <owner>gnome-packagekit</owner>

Modified: trunk/help/C/figures/gpk-updates-overview.png
==============================================================================
Binary files. No diff available.

Modified: trunk/help/C/figures/gpk-updates.png
==============================================================================
Binary files. No diff available.

Modified: trunk/po/POTFILES.in
==============================================================================
--- trunk/po/POTFILES.in	(original)
+++ trunk/po/POTFILES.in	Mon Sep 22 13:34:34 2008
@@ -37,6 +37,7 @@
 src/gpk-dialog.c
 src/gpk-error.c
 src/gpk-firmware.c
+src/gpk-hardware.c
 src/gpk-inhibit.c
 src/gpk-install-catalog.c
 src/gpk-install-local-file.c

Modified: trunk/src/Makefile.am
==============================================================================
--- trunk/src/Makefile.am	(original)
+++ trunk/src/Makefile.am	Mon Sep 22 13:34:34 2008
@@ -152,6 +152,8 @@
 	gpk-watch.h					\
 	gpk-firmware.c					\
 	gpk-firmware.h					\
+	gpk-hardware.c					\
+	gpk-hardware.h					\
 	gpk-inhibit.c					\
 	gpk-inhibit.h					\
 	gpk-dbus.c					\

Modified: trunk/src/gpk-application-main.c
==============================================================================
--- trunk/src/gpk-application-main.c	(original)
+++ trunk/src/gpk-application-main.c	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *

Modified: trunk/src/gpk-application.c
==============================================================================
--- trunk/src/gpk-application.c	(original)
+++ trunk/src/gpk-application.c	Mon Sep 22 13:34:34 2008
@@ -1144,6 +1144,7 @@
 	const gchar *title = _("No results were found.");
 	GtkTreeIter iter;
 	gchar *text;
+	PkBitfield state = 0;
 
 	if (application->priv->search_mode == PK_MODE_GROUP ||
 	    application->priv->search_mode == PK_MODE_ALL_PACKAGES) {
@@ -1160,7 +1161,7 @@
 	text = g_strdup_printf ("%s\n%s", title, message);
 	gtk_list_store_append (application->priv->packages_store, &iter);
 	gtk_list_store_set (application->priv->packages_store, &iter,
-			    PACKAGES_COLUMN_STATE, FALSE,
+			    PACKAGES_COLUMN_STATE, state,
 			    PACKAGES_COLUMN_CHECKBOX, FALSE,
 			    PACKAGES_COLUMN_CHECKBOX_ENABLE, FALSE,
 			    PACKAGES_COLUMN_TEXT, text,
@@ -1584,7 +1585,7 @@
 
 	package_ids = pk_package_list_to_strv (application->priv->package_list);
 	if (application->priv->action == PK_ACTION_INSTALL) {
-		gpk_client_show_finished (application->priv->gclient, FALSE);
+		gpk_client_set_interaction (application->priv->gclient, GPK_CLIENT_INTERACT_WARNING_CONFIRM_PROGRESS);
 		ret = gpk_client_install_package_ids (application->priv->gclient, package_ids, NULL);
 		/* can we show the user the new application? */
 		if (ret) {
@@ -1599,8 +1600,10 @@
 			g_free (exec);
 		}
 	}
-	if (application->priv->action == PK_ACTION_REMOVE)
+	if (application->priv->action == PK_ACTION_REMOVE) {
+		gpk_client_set_interaction (application->priv->gclient, GPK_CLIENT_INTERACT_WARNING_CONFIRM_PROGRESS);
 		ret = gpk_client_remove_package_ids (application->priv->gclient, package_ids, NULL);
+	}
 	g_strfreev (package_ids);
 
 	/* refresh the search as the items may have changed and the filter has not changed */
@@ -2686,7 +2689,6 @@
 
 	application->priv->control = pk_control_new ();
 	application->priv->gclient = gpk_client_new ();
-	gpk_client_show_finished (application->priv->gclient, FALSE);
 
 	application->priv->client_search = pk_client_new ();
 	g_signal_connect (application->priv->client_search, "package",
@@ -2787,6 +2789,7 @@
 	widget = glade_xml_get_widget (application->priv->glade_xml, "button_apply");
 	g_signal_connect (widget, "clicked",
 			  G_CALLBACK (gpk_application_button_apply_cb), application);
+	gtk_widget_set_tooltip_text (widget, _("Changes are not applied instantly, this button applies all changes"));
 
 	widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_about");
 	g_signal_connect (widget, "activate",

Modified: trunk/src/gpk-application.h
==============================================================================
--- trunk/src/gpk-application.h	(original)
+++ trunk/src/gpk-application.h	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *

Modified: trunk/src/gpk-auto-refresh.c
==============================================================================
--- trunk/src/gpk-auto-refresh.c	(original)
+++ trunk/src/gpk-auto-refresh.c	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *
@@ -363,7 +363,6 @@
 	/* we do this to get an icon at startup */
 	if (!arefresh->priv->sent_get_updates) {
 		gpk_auto_refresh_signal_get_updates (arefresh);
-		gpk_auto_refresh_maybe_get_upgrades (arefresh);
 		arefresh->priv->sent_get_updates = TRUE;
 		return TRUE;
 	}

Modified: trunk/src/gpk-auto-refresh.h
==============================================================================
--- trunk/src/gpk-auto-refresh.h	(original)
+++ trunk/src/gpk-auto-refresh.h	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *

Modified: trunk/src/gpk-backend-status.c
==============================================================================
--- trunk/src/gpk-backend-status.c	(original)
+++ trunk/src/gpk-backend-status.c	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *

Modified: trunk/src/gpk-check-update.c
==============================================================================
--- trunk/src/gpk-check-update.c	(original)
+++ trunk/src/gpk-check-update.c	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *
@@ -200,8 +200,8 @@
 		   "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA\n"
 		   "02110-1301, USA.")
 	};
-	const char  *translators = _("translator-credits");
-	char	    *license_trans;
+	const char *translators = _("translator-credits");
+	char *license_trans;
 
 	/* Translators comment: put your own name here to appear in the about dialog. */
 	if (!strcmp (translators, "translator-credits"))
@@ -216,7 +216,7 @@
 	gtk_window_set_default_icon_name (GPK_ICON_SOFTWARE_UPDATE);
 	gtk_show_about_dialog (NULL,
 			       "version", VERSION,
-			       "copyright", "Copyright \xc2\xa9 2007 Richard Hughes",
+			       "copyright", "Copyright \xc2\xa9 2007-2008 Richard Hughes",
 			       "license", license_trans,
 			       "website-label", _("PackageKit Website"),
 			       "website", "www.packagekit.org",
@@ -323,7 +323,7 @@
 {
 	GpkCheckUpdate *cupdate = GPK_CHECK_UPDATE (data);
 	g_return_if_fail (GPK_IS_CHECK_UPDATE (cupdate));
-	gpk_client_set_interaction (cupdate->priv->gclient_update_system, GPK_CLIENT_INTERACT_ALWAYS);
+	gpk_client_set_interaction (cupdate->priv->gclient_update_system, GPK_CLIENT_INTERACT_WARNING_CONFIRM_PROGRESS);
 	gpk_check_update_update_system (cupdate);
 }
 
@@ -398,12 +398,13 @@
 	GpkCheckUpdate *cupdate = GPK_CHECK_UPDATE (data);
 
 	if (egg_strequal (action, "update-all-packages")) {
+		gpk_client_set_interaction (cupdate->priv->gclient_update_system, GPK_CLIENT_INTERACT_WARNING);
 		gpk_check_update_update_system (cupdate);
 	} else if (egg_strequal (action, "update-just-security")) {
 
 		/* just update the important updates */
 		package_ids = pk_package_ids_from_array (cupdate->priv->important_updates_array);
-		gpk_client_set_interaction (cupdate->priv->gclient_update_system, GPK_CLIENT_INTERACT_NEVER);
+		gpk_client_set_interaction (cupdate->priv->gclient_update_system, GPK_CLIENT_INTERACT_WARNING);
 		ret = gpk_client_update_packages (cupdate->priv->gclient_update_system, package_ids, &error);
 		if (!ret) {
 			egg_warning ("Individual updates failed: %s", error->message);
@@ -767,7 +768,7 @@
 
 		/* convert */
 		package_ids = pk_package_ids_from_array (security_array);
-		gpk_client_set_interaction (cupdate->priv->gclient_update_system, GPK_CLIENT_INTERACT_NEVER);
+		gpk_client_set_interaction (cupdate->priv->gclient_update_system, GPK_CLIENT_INTERACT_WARNING);
 		ret = gpk_client_update_packages (cupdate->priv->gclient_update_system, package_ids, &error);
 		if (!ret) {
 			egg_warning ("Individual updates failed: %s", error->message);
@@ -780,7 +781,7 @@
 	/* just do everything */
 	if (update == GPK_UPDATE_ENUM_ALL) {
 		egg_debug ("we should do the update automatically!");
-		gpk_client_set_interaction (cupdate->priv->gclient_update_system, GPK_CLIENT_INTERACT_NEVER);
+		gpk_client_set_interaction (cupdate->priv->gclient_update_system, GPK_CLIENT_INTERACT_WARNING);
 		g_idle_add ((GSourceFunc) gpk_check_update_update_system, cupdate);
 		goto out;
 	}

Modified: trunk/src/gpk-client-run.c
==============================================================================
--- trunk/src/gpk-client-run.c	(original)
+++ trunk/src/gpk-client-run.c	Mon Sep 22 13:34:34 2008
@@ -111,9 +111,8 @@
 				        gchar *string1, gchar *string2,
 				        gint int1, gint int2, gpointer user_data)
 {
-	if (egg_strequal (name, "button_action")) {
+	if (egg_strequal (name, "button_action"))
 		return gtk_button_new_with_mnemonic (_("_Run"));
-	}
 	egg_warning ("name unknown=%s", name);
 	return NULL;
 }
@@ -166,14 +165,11 @@
 	if (ret) {
 		exec = g_key_file_get_string (file, G_KEY_FILE_DESKTOP_GROUP, "TryExec", NULL);
 		/* try harder */
-		if (exec == NULL) {
+		if (exec == NULL)
 			exec = g_key_file_get_string (file, G_KEY_FILE_DESKTOP_GROUP, "Exec", NULL);
-		}
-		/* try harder */
-		if (exec == NULL) {
-			/* abandon attempt */
+		/* abandon attempt */
+		if (exec == NULL)
 			goto out;
-		}
 
 		/* have we the same executable name?
 		 * this helps when there's "f-spot", "fspot --import %f", and "f-spot --view" in 3
@@ -208,9 +204,8 @@
 		g_free (icon);
 		icon = NULL;
 	}
-	if (icon == NULL) {
+	if (icon == NULL)
 		icon = g_strdup (gpk_info_enum_to_icon_name (PK_INFO_ENUM_AVAILABLE));
-	}
 	gtk_list_store_set (list_store, &iter,
 			    GPK_CHOOSER_COLUMN_TEXT, text,
 			    GPK_CHOOSER_COLUMN_FULL_PATH, exec, -1);
@@ -244,8 +239,7 @@
 	length = g_strv_length (package_ids);
 	gclient = gpk_client_new ();
 	/* only show if we need to download a cache */
-	gpk_client_set_interaction (gclient, GPK_CLIENT_INTERACT_SOMETIMES);
-	gpk_client_show_finished (gclient, FALSE);
+	gpk_client_set_interaction (gclient, GPK_CLIENT_INTERACT_NEVER);
 
 	for (i=0; i<length; i++) {
 		package_id = package_ids[i];
@@ -329,6 +323,7 @@
 	/* add all the apps */
 	len = gpk_client_add_package_ids (package_ids);
 	if (len == 0) {
+		egg_debug ("no executable file for %s", package_ids[0]);
 		goto out;
 	}
 
@@ -344,9 +339,8 @@
 
 	/* hide window */
 	widget = glade_xml_get_widget (glade_xml, "window_simple");
-	if (GTK_IS_WIDGET (widget)) {
+	if (GTK_IS_WIDGET (widget))
 		gtk_widget_hide (widget);
-	}
 
 	g_object_unref (glade_xml);
 
@@ -364,9 +358,8 @@
 {
 	EggTest *test = (EggTest *) data;
 
-	if (egg_test_start (test, "GpkClientRun") == FALSE) {
+	if (!egg_test_start (test, "GpkClientRun"))
 		return;
-	}
 	egg_test_end (test);
 }
 #endif

Modified: trunk/src/gpk-client.c
==============================================================================
--- trunk/src/gpk-client.c	(original)
+++ trunk/src/gpk-client.c	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *
@@ -89,9 +89,10 @@
 	PkBitfield		 roles;
 	gboolean		 using_secondary_client;
 	gboolean		 retry_untrusted_value;
-	gboolean		 show_finished;
+	gboolean		 show_confirm;
 	gboolean		 show_progress;
-	GpkClientInteract	 interact;
+	gboolean		 show_finished;
+	gboolean		 show_warning;
 	gchar			**files_array;
 	PkExitEnum		 exit;
 	GdkWindow		*parent_window;
@@ -166,31 +167,16 @@
 }
 
 /**
- * gpk_client_show_finished:
- *
- * You probably don't need to use this function, use gpk_client_set_interaction() instead
- **/
-void
-gpk_client_show_finished (GpkClient *gclient, gboolean enabled)
-{
-	g_return_if_fail (GPK_IS_CLIENT (gclient));
-	gclient->priv->show_finished = enabled;
-}
-
-/**
  * gpk_client_set_interaction:
  **/
 void
-gpk_client_set_interaction (GpkClient *gclient, GpkClientInteract interact)
+gpk_client_set_interaction (GpkClient *gclient, PkBitfield interact)
 {
 	g_return_if_fail (GPK_IS_CLIENT (gclient));
-	gclient->priv->interact = interact;
-	/* only start showing if we always show */
-	gclient->priv->show_progress = (interact == GPK_CLIENT_INTERACT_ALWAYS);
-
-	/* normally, if we don't want to show progress then we don't want finished */
-	if (gclient->priv->show_progress)
-		gclient->priv->show_finished = FALSE;
+	gclient->priv->show_confirm = pk_bitfield_contain (interact, GPK_CLIENT_INTERACT_CONFIRM);
+	gclient->priv->show_progress = pk_bitfield_contain (interact, GPK_CLIENT_INTERACT_PROGRESS);
+	gclient->priv->show_finished = pk_bitfield_contain (interact, GPK_CLIENT_INTERACT_FINISHED);
+	gclient->priv->show_warning = pk_bitfield_contain (interact, GPK_CLIENT_INTERACT_WARNING);
 }
 
 /**
@@ -295,9 +281,8 @@
 	}
 
 	/* trim off extra newlines */
-	if (message_text->len != 0) {
+	if (message_text->len != 0)
 		g_string_set_size (message_text, message_text->len-1);
-	}
 
 	/* do we do the notification? */
 	ret = gconf_client_get_bool (gclient->priv->gconf_client, GPK_CONF_NOTIFY_UPDATE_COMPLETE, NULL);
@@ -334,6 +319,7 @@
 gpk_client_finished_cb (PkClient *client, PkExitEnum exit, guint runtime, GpkClient *gclient)
 {
 	PkRoleEnum role = PK_ROLE_ENUM_UNKNOWN;
+	PkPackageList *list;
 
 	g_return_if_fail (GPK_IS_CLIENT (gclient));
 
@@ -356,10 +342,12 @@
 		goto out;
 	}
 
-	if (exit == PK_EXIT_ENUM_SUCCESS &&
-	    gclient->priv->show_finished) {
-		gpk_client_dialog_set_message (gclient->priv->dialog, "");
-		gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_FINISHED, 0, 0);
+	if (exit == PK_EXIT_ENUM_SUCCESS && gclient->priv->show_finished) {
+		list = pk_client_get_package_list (client);
+		gpk_client_dialog_set_message (gclient->priv->dialog, _("The following packages were installed:"));
+		gpk_client_dialog_set_package_list (gclient->priv->dialog, list);
+		gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_FINISHED, GPK_CLIENT_DIALOG_PACKAGE_LIST, 0);
+		g_object_unref (list);
 		gclient->priv->finished_timer_id = g_timeout_add_seconds (GPK_CLIENT_FINISHED_AUTOCLOSE_DELAY,
 									  gpk_install_finished_timeout, gclient);
 	} else {
@@ -384,7 +372,7 @@
 	g_return_val_if_fail (GPK_IS_CLIENT (gclient), FALSE);
 
 	/* do we force progress? */
-	if (gclient->priv->interact == GPK_CLIENT_INTERACT_SOMETIMES) {
+	if (!gclient->priv->show_progress) {
 		if (status == PK_STATUS_ENUM_DOWNLOAD_REPOSITORY ||
 		    status == PK_STATUS_ENUM_DOWNLOAD_PACKAGELIST ||
 		    status == PK_STATUS_ENUM_DOWNLOAD_FILELIST ||
@@ -392,7 +380,6 @@
 		    status == PK_STATUS_ENUM_DOWNLOAD_GROUP ||
 		    status == PK_STATUS_ENUM_DOWNLOAD_UPDATEINFO ||
 		    status == PK_STATUS_ENUM_REFRESH_CACHE) {
-			gclient->priv->show_progress = TRUE;
 			gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, 0, 0);
 		}
 	}
@@ -609,6 +596,9 @@
 	const gchar *message = _("Unknown error. Please refer to the detailed report and report in bugzilla.");
 	const gchar *details = NULL;
 
+	if (!gclient->priv->show_warning)
+		return;
+
 	/* print a proper error if we have it */
 	if (error != NULL) {
 		if (error->code == PK_CLIENT_ERROR_FAILED_AUTH ||
@@ -821,7 +811,6 @@
 		      ((statbuf.st_mode & S_IXUSR) && euid == statbuf.st_uid) ||
 		      ((statbuf.st_mode & S_IXGRP) && egid == statbuf.st_gid)))
 			return FALSE;
-
 		return TRUE;
 	}
 	return FALSE;
@@ -858,7 +847,8 @@
 			g_ptr_array_add (array_missing, g_strdup (data));
 	}
 
-	if (array_missing->len > 0) {
+	/* optional */
+	if (gclient->priv->show_confirm && array_missing->len > 0) {
 		title = ngettext (_("Do you want to copy this file?"),
 				  _("Do you want to copy these files?"), array_missing->len);
 		message_part = ngettext (_("One package file has to be copied to a non-private location so it can be installed:"),
@@ -871,12 +861,11 @@
 		gpk_client_dialog_set_message (gclient->priv->dialog, message);
 		gpk_client_dialog_set_image (gclient->priv->dialog, "dialog-warning");
 		gpk_client_dialog_set_action (gclient->priv->dialog, _("Copy file"));
-		gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_CONFIRM, 0, gclient->priv->timestamp);
-
 		g_free (message);
 
-		/* did we click no or exit the window? */
+		gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_CONFIRM, 0, gclient->priv->timestamp);
 		button = gpk_client_dialog_run (gclient->priv->dialog);
+		/* did we click no or exit the window? */
 		if (button != GTK_RESPONSE_OK) {
 			gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, "Aborted the copy");
 			ret = FALSE;
@@ -1128,9 +1117,11 @@
 	array = pk_strv_to_ptr_array (files_rel);
 
 	/* check the user wanted to call this method */
-	ret = gpk_client_install_local_files_verify (gclient, array, error);
-	if (!ret)
-		goto out;
+	if (gclient->priv->show_confirm) {
+		ret = gpk_client_install_local_files_verify (gclient, array, error);
+		if (!ret)
+			goto out;
+	}
 
 	/* check all files exist and are readable by the local user */
 	ret = gpk_client_install_local_files_check_exists (gclient, array, error);
@@ -1151,7 +1142,8 @@
 	/* set title */
 	gpk_client_dialog_set_window_title (gclient->priv->dialog, _("Installing files"));
 	gpk_client_dialog_set_title (gclient->priv->dialog, _("Install local file"));
-	gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_FINISHED, 0, 0);
+	if (gclient->priv->show_progress)
+		gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, 0, 0);
 
 	/* wait */
 	g_main_loop_run (gclient->priv->loop);
@@ -1212,6 +1204,12 @@
 		goto skip_checks;
 	}
 
+	/* optional */
+	if (!gclient->priv->show_confirm) {
+		egg_debug ("skip confirm as not allowed to interact with user");
+		goto skip_checks;
+	}
+
 	/* get the packages we depend on */
 	gpk_client_dialog_set_title (gclient->priv->dialog, _("Finding packages we require"));
 
@@ -1221,7 +1219,6 @@
 		gpk_client_error_msg (gclient, _("Failed to reset resolve client"), error_local);
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
 		g_error_free (error_local);
-		ret = FALSE;
 		goto out;
 	}
 
@@ -1231,7 +1228,6 @@
 		gpk_client_error_msg (gclient, _("Could not work out what packages would also be removed"), error_local);
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
 		g_error_free (error_local);
-		ret = FALSE;
 		goto out;
 	}
 
@@ -1265,9 +1261,9 @@
 	gpk_client_dialog_set_message (gclient->priv->dialog, message);
 	gpk_client_dialog_set_action (gclient->priv->dialog, _("Remove"));
 	gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_CONFIRM, GPK_CLIENT_DIALOG_PACKAGE_LIST, gclient->priv->timestamp);
-	button = gpk_client_dialog_run (gclient->priv->dialog);
 	g_free (title);
 	g_free (message);
+	button = gpk_client_dialog_run (gclient->priv->dialog);
 
 	/* did we click no or exit the window? */
 	if (button != GTK_RESPONSE_OK) {
@@ -1283,7 +1279,7 @@
 	if (!ret) {
 		gpk_client_error_msg (gclient, _("Failed to reset action client"), error_local);
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
-		ret = FALSE;
+		g_error_free (error_local);
 		goto out;
 	}
 
@@ -1297,8 +1293,10 @@
 	}
 
 	/* setup the UI */
-	if (gclient->priv->show_progress)
-		gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, 0, 0);
+	if (gclient->priv->show_progress) {
+		gpk_client_dialog_set_message (gclient->priv->dialog, "");
+		gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, GPK_CLIENT_DIALOG_PACKAGE_PADDING, 0);
+	}
 
 	/* wait for an answer */
 	g_main_loop_run (gclient->priv->loop);
@@ -1354,6 +1352,12 @@
 		goto skip_checks;
 	}
 
+	/* optional */
+	if (!gclient->priv->show_confirm) {
+		egg_debug ("skip confirm as not allowed to interact with user");
+		goto skip_checks;
+	}
+
 	/* get the packages we depend on */
 	gpk_client_dialog_set_title (gclient->priv->dialog, _("Finding packages we depend on"));
 
@@ -1415,13 +1419,15 @@
 		gpk_client_error_msg (gclient, _("Failed to reset action client"), error_local);
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
 		g_error_free (error_local);
-		return FALSE;
+		goto out;
 	}
 
 	/* try to install the package_id */
 	gpk_client_dialog_set_window_title (gclient->priv->dialog, _("Installing packages"));
-	if (gclient->priv->show_progress)
+	if (gclient->priv->show_progress) {
+		gpk_client_dialog_set_message (gclient->priv->dialog, "");
 		gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, GPK_CLIENT_DIALOG_PACKAGE_PADDING, 0);
+	}
 
 	ret = pk_client_install_packages (gclient->priv->client_action, package_ids, &error_local);
 	if (!ret) {
@@ -1471,6 +1477,12 @@
 	g_return_val_if_fail (GPK_IS_CLIENT (gclient), FALSE);
 	g_return_val_if_fail (packages != NULL, FALSE);
 
+	/* optional */
+	if (!gclient->priv->show_confirm) {
+		egg_debug ("skip confirm as not allowed to interact with user");
+		goto skip_checks;
+	}
+
 	string = g_string_new ("");
 	len = g_strv_length (packages);
 	for (i=0; i<len; i++)
@@ -1493,6 +1505,7 @@
 		goto out;
 	}
 
+skip_checks:
 	/* set title */
 	gpk_client_dialog_set_title (gclient->priv->dialog, _("Searching for packages"));
 	gpk_client_dialog_set_image_status (gclient->priv->dialog, PK_STATUS_ENUM_WAIT);
@@ -1504,6 +1517,7 @@
 	if (!ret) {
 		gpk_client_error_msg (gclient, _("Failed to reset resolve client"), error_local);
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
+		g_error_free (error_local);
 		goto out;
 	}
 
@@ -1512,6 +1526,7 @@
 	if (!ret) {
 		gpk_client_error_msg (gclient, _("Incorrect response from search"), error_local);
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
+		g_error_free (error_local);
 		goto out;
 	}
 
@@ -1519,15 +1534,18 @@
 	list = pk_client_get_package_list (gclient->priv->client_resolve);
 	len = pk_package_list_get_size (list);
 	if (len == 0) {
-		text = pk_package_ids_to_text (packages, ",");
-		title = g_strdup_printf (_("Could not find %s"), text);
-		gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to find package"));
-		gpk_client_dialog_set_message (gclient->priv->dialog, _("The packages could not be found in any software source"));
-		gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
-		gpk_client_dialog_run (gclient->priv->dialog);
+		if (gclient->priv->show_warning) {
+			text = pk_package_ids_to_text (packages, ",");
+			title = g_strdup_printf (_("Could not find %s"), text);
+			gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to find package"));
+			gpk_client_dialog_set_message (gclient->priv->dialog, _("The packages could not be found in any software source"));
+			gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
+			gpk_client_dialog_run (gclient->priv->dialog);
+			g_free (text);
+			g_free (title);
+		}
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, "no package found");
-		g_free (text);
-		g_free (title);
+		ret = FALSE;
 		goto out;
 	}
 
@@ -1545,25 +1563,31 @@
 
 	/* already installed? */
 	if (already_installed) {
-		text = pk_package_ids_to_text (packages, ",");
-		title = g_strdup_printf (_("Failed to install %s"), text);
-		gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to install package"));
-		gpk_client_dialog_set_message (gclient->priv->dialog, _("The package is already installed"));
-		gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
-		gpk_client_dialog_run (gclient->priv->dialog);
+		if (gclient->priv->show_warning) {
+			text = pk_package_ids_to_text (packages, ",");
+			title = g_strdup_printf (_("Failed to install %s"), text);
+			gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to install package"));
+			gpk_client_dialog_set_message (gclient->priv->dialog, _("The package is already installed"));
+			gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
+			gpk_client_dialog_run (gclient->priv->dialog);
+			g_free (text);
+			g_free (title);
+		}
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, "package already found");
-		g_free (text);
-		g_free (title);
+		ret = FALSE;
 		goto out;
 	}
 
 	/* got junk? */
 	if (id == NULL) {
-		gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to install package"));
-		gpk_client_dialog_set_message (gclient->priv->dialog, _("Incorrect response from search"));
-		gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
-		gpk_client_dialog_run (gclient->priv->dialog);
+		if (gclient->priv->show_warning) {
+			gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to install package"));
+			gpk_client_dialog_set_message (gclient->priv->dialog, _("Incorrect response from search"));
+			gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
+			gpk_client_dialog_run (gclient->priv->dialog);
+		}
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, "package already found");
+		ret = FALSE;
 		goto out;
 	}
 
@@ -1576,12 +1600,11 @@
 	if (!ret) {
 		/* copy error message */
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
+		g_error_free (error_local);
 		goto out;
 	}
 
 out:
-	if (error_local != NULL)
-		g_error_free (error_local);
 	g_strfreev (package_ids);
 	return ret;
 }
@@ -1615,6 +1638,12 @@
 	g_return_val_if_fail (GPK_IS_CLIENT (gclient), FALSE);
 	g_return_val_if_fail (full_path != NULL, FALSE);
 
+	/* optional */
+	if (!gclient->priv->show_confirm) {
+		egg_debug ("skip confirm as not allowed to interact with user");
+		goto skip_checks;
+	}
+
 	/* check user wanted operation */
 	message = g_strdup_printf ("%s\n\nâ %s\n\n%s", _("The following file is required:"),
 				   full_path, _("Do you want to search for this now?"));
@@ -1628,11 +1657,26 @@
 		goto out;
 	}
 
+skip_checks:
+	/* set title */
+	gpk_client_dialog_set_title (gclient->priv->dialog, _("Searching for file"));
+	gpk_client_dialog_set_image_status (gclient->priv->dialog, PK_STATUS_ENUM_WAIT);
+
+	/* reset */
+	ret = pk_client_reset (gclient->priv->client_resolve, &error_local);
+	if (!ret) {
+		gpk_client_error_msg (gclient, _("Failed to reset resolve client"), error_local);
+		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
+		g_error_free (error_local);
+		goto out;
+	}
+
+	/* do search */
 	ret = pk_client_search_file (gclient->priv->client_resolve, PK_FILTER_ENUM_NONE, full_path, &error_local);
 	if (!ret) {
 		gpk_client_error_msg (gclient, _("Failed to search for file"), error_local);
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
-		ret = FALSE;
+		g_error_free (error_local);
 		goto out;
 	}
 
@@ -1640,10 +1684,12 @@
 	list = pk_client_get_package_list (gclient->priv->client_resolve);
 	len = pk_package_list_get_size (list);
 	if (len == 0) {
-		gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to find package"));
-		gpk_client_dialog_set_message (gclient->priv->dialog, _("The file could not be found in any packages"));
-		gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
-		gpk_client_dialog_run (gclient->priv->dialog);
+		if (gclient->priv->show_warning) {
+			gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to find package"));
+			gpk_client_dialog_set_message (gclient->priv->dialog, _("The file could not be found in any packages"));
+			gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
+			gpk_client_dialog_run (gclient->priv->dialog);
+		}
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, "no files found");
 		ret = FALSE;
 		goto out;
@@ -1663,13 +1709,15 @@
 
 	/* already installed? */
 	if (already_installed) {
-		text = g_strdup_printf (_("The %s package already provides the file %s"), id->name, full_path);
-		gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to install file"));
-		gpk_client_dialog_set_message (gclient->priv->dialog, text);
-		gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
-		gpk_client_dialog_run (gclient->priv->dialog);
+		if (gclient->priv->show_warning) {
+			text = g_strdup_printf (_("The %s package already provides the file %s"), id->name, full_path);
+			gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to install file"));
+			gpk_client_dialog_set_message (gclient->priv->dialog, text);
+			gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
+			gpk_client_dialog_run (gclient->priv->dialog);
+			g_free (text);
+		}
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, "already provided");
-		g_free (text);
 		ret = FALSE;
 		goto out;
 	}
@@ -1812,6 +1860,12 @@
 		goto out;
 	}
 
+	/* optional */
+	if (!gclient->priv->show_confirm) {
+		egg_debug ("skip confirm as not allowed to interact with user");
+		goto skip_checks;
+	}
+
 	/* confirm */
 	ret = gpk_client_install_gstreamer_codecs_confirm (gclient, codec_name_strings);
 	if (!ret) {
@@ -1820,6 +1874,7 @@
 		goto out;
 	}
 
+skip_checks:
 	/* set title */
 	gpk_client_dialog_set_title (gclient->priv->dialog, _("Searching for codecs"));
 	gpk_client_dialog_set_image_status (gclient->priv->dialog, PK_STATUS_ENUM_WAIT);
@@ -1842,11 +1897,14 @@
 		egg_debug ("codec description=%s", parts[1]);
 		obj_new = gpk_client_install_gstreamer_codec_part (gclient, parts[0], parts[1], &error_local);
 		if (obj_new == NULL) {
-			gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to search for codec"));
-			gpk_client_dialog_set_message (gclient->priv->dialog, _("Could not find codec in any configured software source"));
-			gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
-			gpk_client_dialog_run (gclient->priv->dialog);
+			if (gclient->priv->show_warning) {
+				gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to search for codec"));
+				gpk_client_dialog_set_message (gclient->priv->dialog, _("Could not find codec in any configured software source"));
+				gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
+				gpk_client_dialog_run (gclient->priv->dialog);
+			}
 			gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
+			g_error_free (error_local);
 			ret = FALSE;
 		}
 		if (obj_new != NULL)
@@ -1863,6 +1921,12 @@
 	if (!ret)
 		goto out;
 
+	/* optional */
+	if (!gclient->priv->show_confirm) {
+		egg_debug ("skip confirm as not allowed to interact with user");
+		goto skip_checks2;
+	}
+
 	gpk_client_dialog_set_package_list (gclient->priv->dialog, list);
 	gpk_client_dialog_set_title (gclient->priv->dialog, _("Install the following codecs"));
 	gpk_client_dialog_set_message (gclient->priv->dialog, _("Do you want to install these packages now?"));
@@ -1879,6 +1943,7 @@
 		goto out;
 	}
 
+skip_checks2:
 	/* convert to list of package id's */
 	package_ids = pk_package_list_to_strv (list);
 	ret = gpk_client_install_package_ids (gclient, package_ids, error);
@@ -1925,6 +1990,12 @@
 		goto out;
 	}
 
+	/* optional */
+	if (!gclient->priv->show_confirm) {
+		egg_debug ("skip confirm as not allowed to interact with user");
+		goto skip_checks;
+	}
+
 	/* make sure the user wants to do action */
 	message = g_strdup_printf ("%s\n\nâ %s\n\n%s",
 				   _("An additional program is required to open this type of file:"),
@@ -1939,6 +2010,7 @@
 		goto out;
 	}
 
+skip_checks:
 	/* set title */
 	gpk_client_dialog_set_title (gclient->priv->dialog, _("Searching for file handlers"));
 	gpk_client_dialog_set_image_status (gclient->priv->dialog, PK_STATUS_ENUM_WAIT);
@@ -1952,6 +2024,7 @@
 	if (!ret) {
 		gpk_client_error_msg (gclient, _("Failed to reset resolve client"), error_local);
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
+		g_error_free (error_local);
 		goto out;
 	}
 
@@ -1961,7 +2034,7 @@
 	if (!ret) {
 		gpk_client_error_msg (gclient, _("Failed to search for provides"), error_local);
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
-		ret = FALSE;
+		g_error_free (error_local);
 		goto out;
 	}
 
@@ -1969,10 +2042,12 @@
 	list = pk_client_get_package_list (gclient->priv->client_resolve);
 	len = pk_package_list_get_size (list);
 	if (len == 0) {
-		gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to find software"));
-		gpk_client_dialog_set_message (gclient->priv->dialog, _("No new applications can be found to handle this type of file"));
-		gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
-		gpk_client_dialog_run (gclient->priv->dialog);
+		if (gclient->priv->show_warning) {
+			gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to find software"));
+			gpk_client_dialog_set_message (gclient->priv->dialog, _("No new applications can be found to handle this type of file"));
+			gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
+			gpk_client_dialog_run (gclient->priv->dialog);
+		}
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, "nothing was found to handle mime type");
 		ret = FALSE;
 		goto out;
@@ -1984,10 +2059,12 @@
 
 	/* selected nothing */
 	if (package_id == NULL) {
-		gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to install software"));
-		gpk_client_dialog_set_message (gclient->priv->dialog, _("No applications were chosen to be installed"));
-		gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
-		gpk_client_dialog_run (gclient->priv->dialog);
+		if (gclient->priv->show_warning) {
+			gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to install software"));
+			gpk_client_dialog_set_message (gclient->priv->dialog, _("No applications were chosen to be installed"));
+			gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
+			gpk_client_dialog_run (gclient->priv->dialog);
+		}
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, "user chose nothing");
 		ret = FALSE;
 		goto out;
@@ -2036,6 +2113,12 @@
 		goto out;
 	}
 
+	/* optional */
+	if (!gclient->priv->show_confirm) {
+		egg_debug ("skip confirm as not allowed to interact with user");
+		goto skip_checks;
+	}
+
 	/* check user wanted operation */
 	message = g_strdup_printf ("%s\n\n%s", _("An additional font is required to view this file correctly"),
 				   _("Do you want to search for a suitable font now?"));
@@ -2049,6 +2132,7 @@
 		goto out;
 	}
 
+skip_checks:
 	/* set title */
 	gpk_client_dialog_set_title (gclient->priv->dialog, _("Searching for fonts"));
 	gpk_client_dialog_set_image_status (gclient->priv->dialog, PK_STATUS_ENUM_WAIT);
@@ -2062,6 +2146,7 @@
 	if (!ret) {
 		gpk_client_error_msg (gclient, _("Failed to reset resolve client"), error_local);
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
+		g_error_free (error_local);
 		goto out;
 	}
 
@@ -2071,7 +2156,7 @@
 	if (!ret) {
 		gpk_client_error_msg (gclient, _("Failed to search for provides"), error_local);
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
-		ret = FALSE;
+		g_error_free (error_local);
 		goto out;
 	}
 
@@ -2079,15 +2164,23 @@
 	list = pk_client_get_package_list (gclient->priv->client_resolve);
 	len = pk_package_list_get_size (list);
 	if (len == 0) {
-		gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to find font"));
-		gpk_client_dialog_set_message (gclient->priv->dialog, _("No new fonts can be found for this document"));
-		gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
-		gpk_client_dialog_run (gclient->priv->dialog);
-		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, NULL);
+		if (gclient->priv->show_warning) {
+			gpk_client_dialog_set_title (gclient->priv->dialog, _("Failed to find font"));
+			gpk_client_dialog_set_message (gclient->priv->dialog, _("No new fonts can be found for this document"));
+			gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, 0);
+			gpk_client_dialog_run (gclient->priv->dialog);
+		}
+		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, "failed to find font");
 		ret = FALSE;
 		goto out;
 	}
 
+	/* optional */
+	if (!gclient->priv->show_confirm) {
+		egg_debug ("skip confirm as not allowed to interact with user");
+		goto skip_checks2;
+	}
+
 	gpk_client_dialog_set_package_list (gclient->priv->dialog, list);
 	gpk_client_dialog_set_title (gclient->priv->dialog, _("Install the following fonts"));
 	gpk_client_dialog_set_message (gclient->priv->dialog, _("Do you want to install these packages now?"));
@@ -2104,6 +2197,7 @@
 		goto out;
 	}
 
+skip_checks2:
 	/* convert to list of package id's */
 	package_ids = pk_package_list_to_strv (list);
 	ret = gpk_client_install_package_ids (gclient, package_ids, error);
@@ -2160,6 +2254,12 @@
 
 	len = g_strv_length (filenames);
 
+	/* optional */
+	if (!gclient->priv->show_confirm) {
+		egg_debug ("skip confirm as not allowed to interact with user");
+		goto skip_checks;
+	}
+
 	title = ngettext (_("Do you want to install this catalog?"),
 			  _("Do you want to install these catalogs?"), len);
 	message = g_strjoinv ("\n", filenames);
@@ -2176,6 +2276,7 @@
 	if (button != GTK_RESPONSE_OK)
 		return FALSE;
 
+skip_checks:
 	/* set title */
 	gpk_client_dialog_set_title (gclient->priv->dialog, _("Install catalogs"));
 	gpk_client_set_status (gclient, PK_STATUS_ENUM_WAIT);
@@ -2194,15 +2295,23 @@
 	len = pk_package_list_get_size (list);
 	if (len == 0) {
 		/* show UI */
-		gpk_client_dialog_set_title (gclient->priv->dialog, _("No packages need to be installed"));
-		gpk_client_dialog_set_message (gclient->priv->dialog, "");
-		gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, gclient->priv->timestamp);
-		gpk_client_dialog_run (gclient->priv->dialog);
+		if (gclient->priv->show_warning) {
+			gpk_client_dialog_set_title (gclient->priv->dialog, _("No packages need to be installed"));
+			gpk_client_dialog_set_message (gclient->priv->dialog, "");
+			gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, gclient->priv->timestamp);
+			gpk_client_dialog_run (gclient->priv->dialog);
+		}
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, "No packages need to be installed");
 		ret = FALSE;
 		goto out;
 	}
 
+	/* optional */
+	if (!gclient->priv->show_confirm) {
+		egg_debug ("skip confirm as not allowed to interact with user");
+		goto skip_checks2;
+	}
+
 	/* process package list */
 	string = g_string_new (_("The following packages are marked to be installed from the catalog:"));
 	g_string_append (string, "\n\n");
@@ -2223,7 +2332,7 @@
 	gpk_client_dialog_set_message (gclient->priv->dialog, text);
 	gpk_client_dialog_set_image (gclient->priv->dialog, "dialog-question");
 	gpk_client_dialog_set_action (gclient->priv->dialog, _("Install"));
-	gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_WARNING, 0, gclient->priv->timestamp);
+	gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_CONFIRM, 0, gclient->priv->timestamp);
 	button = gpk_client_dialog_run (gclient->priv->dialog);
 
 	g_free (text);
@@ -2235,6 +2344,7 @@
 		goto out;
 	}
 
+skip_checks2:
 	/* convert to list of package id's */
 	package_ids = pk_package_list_to_strv (list);
 	ret = gpk_client_install_package_ids (gclient, package_ids, error);
@@ -2265,6 +2375,7 @@
 	if (!ret) {
 		gpk_client_error_msg (gclient, _("Failed to reset action client"), error_local);
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
+		g_error_free (error_local);
 		goto out;
 	}
 
@@ -2275,9 +2386,9 @@
 	ret = pk_client_update_system (gclient->priv->client_action, &error_local);
 	if (!ret) {
 		/* display and set */
-		text = g_strdup_printf ("%s: %s", _("Failed to update system"), message);
 		gpk_client_error_msg (gclient, _("Failed to update system"), error_local);
-		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, message);
+		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
+		g_error_free (error_local);
 		goto out;
 	}
 
@@ -2312,8 +2423,6 @@
 	ret = gpk_client_set_error_from_exit_enum (gclient->priv->exit, error);
 
 out:
-	if (error_local != NULL)
-		g_error_free (error_local);
 	g_free (message);
 	g_free (text);
 	return ret;
@@ -2337,6 +2446,7 @@
 	if (!ret) {
 		gpk_client_error_msg (gclient, _("Failed to reset action client"), error_local);
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
+		g_error_free (error_local);
 		goto out;
 	}
 
@@ -2348,7 +2458,8 @@
 	if (!ret) {
 		/* display and set */
 		gpk_client_error_msg (gclient, _("Failed to update package lists"), error_local);
-		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, message);
+		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
+		g_error_free (error_local);
 		goto out;
 	}
 
@@ -2363,8 +2474,6 @@
 	ret = gpk_client_set_error_from_exit_enum (gclient->priv->exit, error);
 
 out:
-	if (error_local != NULL)
-		g_error_free (error_local);
 	g_free (message);
 	g_free (text);
 	return ret;
@@ -2388,7 +2497,7 @@
 		gpk_client_error_msg (gclient, _("Failed to reset action client"), error_local);
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
 		g_error_free (error_local);
-		return FALSE;
+		goto out;
 	}
 
 	/* wrap update, but handle all the GPG and EULA stuff */
@@ -2396,6 +2505,7 @@
 	if (!ret) {
 		gpk_client_error_msg (gclient, _("Failed to get updates"), error_local);
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
+		g_error_free (error_local);
 		goto out;
 	}
 
@@ -2430,7 +2540,7 @@
 	/* are we not able to do this? */
 	if (!pk_bitfield_contain (gclient->priv->roles, PK_ROLE_ENUM_GET_DISTRO_UPGRADES)) {
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, "Backend does not support GetDistroUpgrades");
-		return FALSE;
+		return NULL;
 	}
 
 	/* reset */
@@ -2439,7 +2549,7 @@
 		gpk_client_error_msg (gclient, _("Failed to reset action client"), error_local);
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
 		g_error_free (error_local);
-		return FALSE;
+		return NULL;
 	}
 
 	/* clear old data */
@@ -2453,6 +2563,7 @@
 	if (!ret) {
 		gpk_client_error_msg (gclient, _("Getting update lists failed"), error_local);
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
+		g_error_free (error_local);
 		goto out;
 	}
 
@@ -2495,6 +2606,7 @@
 	if (!ret) {
 		gpk_client_error_msg (gclient, _("Getting file list failed"), error_local);
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
+		g_error_free (error_local);
 		goto out;
 	}
 
@@ -2510,9 +2622,6 @@
 	ret = gpk_client_set_error_from_exit_enum (gclient->priv->exit, error);
 
 out:
-	if (error_local != NULL)
-		g_error_free (error_local);
-
 	/* return the file list */
 	return g_strdupv (gclient->priv->files_array);
 }
@@ -2525,7 +2634,6 @@
 {
 	gboolean ret = TRUE;
 	GError *error_local = NULL;
-	gchar *message = NULL;
 
 	g_return_val_if_fail (GPK_IS_CLIENT (gclient), FALSE);
 
@@ -2534,6 +2642,7 @@
 	if (!ret) {
 		gpk_client_error_msg (gclient, _("Failed to reset action client"), error_local);
 		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
+		g_error_free (error_local);
 		goto out;
 	}
 
@@ -2542,7 +2651,8 @@
 	if (!ret) {
 		/* display and set */
 		gpk_client_error_msg (gclient, _("Failed to update packages"), error_local);
-		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, message);
+		gpk_client_error_set (error, GPK_CLIENT_ERROR_FAILED, error_local->message);
+		g_error_free (error_local);
 		goto out;
 	}
 
@@ -2558,9 +2668,6 @@
 	ret = gpk_client_set_error_from_exit_enum (gclient->priv->exit, error);
 
 out:
-	if (error_local != NULL)
-		g_error_free (error_local);
-	g_free (message);
 	return ret;
 }
 
@@ -2659,7 +2766,7 @@
 	g_return_val_if_fail (GPK_IS_CLIENT (gclient), FALSE);
 
 	/* go back to the UI */
-	gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, 0, 0);
+	gpk_client_dialog_show_page (gclient->priv->dialog, GPK_CLIENT_DIALOG_PAGE_PROGRESS, GPK_CLIENT_DIALOG_PACKAGE_PADDING, 0);
 	gclient->priv->using_secondary_client = FALSE;
 
 	egg_debug ("trying to requeue install");
@@ -2900,9 +3007,10 @@
 	gclient->priv->application = NULL;
 	gclient->priv->using_secondary_client = FALSE;
 	gclient->priv->exit = PK_EXIT_ENUM_FAILED;
-	gclient->priv->interact = GPK_CLIENT_INTERACT_NEVER;
-	gclient->priv->show_finished = TRUE;
+	gclient->priv->show_confirm = TRUE;
 	gclient->priv->show_progress = TRUE;
+	gclient->priv->show_finished = TRUE;
+	gclient->priv->show_warning = TRUE;
 	gclient->priv->finished_timer_id = 0;
 	gclient->priv->timestamp = 0;
 	gclient->priv->loop = g_main_loop_new (NULL, FALSE);

Modified: trunk/src/gpk-client.h
==============================================================================
--- trunk/src/gpk-client.h	(original)
+++ trunk/src/gpk-client.h	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *
@@ -24,6 +24,7 @@
 
 #include <glib-object.h>
 #include <gtk/gtk.h>
+#include <pk-bitfield.h>
 #include <pk-package-list.h>
 
 G_BEGIN_DECLS
@@ -53,12 +54,19 @@
  */
 typedef enum
 {
-	GPK_CLIENT_INTERACT_ALWAYS,
-	GPK_CLIENT_INTERACT_SOMETIMES,
-	GPK_CLIENT_INTERACT_NEVER,
+	GPK_CLIENT_INTERACT_CONFIRM,
+	GPK_CLIENT_INTERACT_PROGRESS,
+	GPK_CLIENT_INTERACT_FINISHED,
+	GPK_CLIENT_INTERACT_WARNING,
 	GPK_CLIENT_INTERACT_UNKNOWN
 } GpkClientInteract;
 
+#define GPK_CLIENT_INTERACT_NEVER			0
+#define GPK_CLIENT_INTERACT_ALWAYS			pk_bitfield_from_enums (GPK_CLIENT_INTERACT_WARNING, GPK_CLIENT_INTERACT_CONFIRM, GPK_CLIENT_INTERACT_PROGRESS, GPK_CLIENT_INTERACT_FINISHED, -1)
+#define GPK_CLIENT_INTERACT_WARNING_CONFIRM_PROGRESS	pk_bitfield_from_enums (GPK_CLIENT_INTERACT_WARNING, GPK_CLIENT_INTERACT_CONFIRM, GPK_CLIENT_INTERACT_PROGRESS, -1)
+#define GPK_CLIENT_INTERACT_WARNING			pk_bitfield_from_enums (GPK_CLIENT_INTERACT_WARNING, -1)
+#define GPK_CLIENT_INTERACT_WARNING_PROGRESS		pk_bitfield_from_enums (GPK_CLIENT_INTERACT_WARNING, GPK_CLIENT_INTERACT_PROGRESS, -1)
+
 typedef struct _GpkClientPrivate	 GpkClientPrivate;
 typedef struct _GpkClient		 GpkClient;
 typedef struct _GpkClientClass		 GpkClientClass;
@@ -112,10 +120,8 @@
 gboolean	 gpk_client_update_packages		(GpkClient	*gclient,
 							 gchar		**package_ids,
 							 GError		**error);
-void		 gpk_client_show_finished		(GpkClient	*gclient,
-							 gboolean	 enabled);
 void		 gpk_client_set_interaction		(GpkClient	*gclient,
-							 GpkClientInteract interact);
+							 PkBitfield	 interact);
 PkPackageList	*gpk_client_get_updates			(GpkClient	*gclient,
 							 GError		**error);
 const GPtrArray	*gpk_client_get_distro_upgrades		(GpkClient	*gclient,

Modified: trunk/src/gpk-common.c
==============================================================================
--- trunk/src/gpk-common.c	(original)
+++ trunk/src/gpk-common.c	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *
@@ -245,6 +245,7 @@
 	    status == PK_STATUS_ENUM_DOWNLOAD_CHANGELOG ||
 	    status == PK_STATUS_ENUM_DOWNLOAD_GROUP ||
 	    status == PK_STATUS_ENUM_DOWNLOAD_UPDATEINFO ||
+	    status == PK_STATUS_ENUM_GENERATE_PACKAGE_LIST ||
 	    status == PK_STATUS_ENUM_LOADING_CACHE ||
 	    status == PK_STATUS_ENUM_REPACKAGING) {
 		name = "pk-action-refresh-cache";
@@ -256,7 +257,8 @@
 		   status == PK_STATUS_ENUM_UPDATE) {
 		name = "pk-action-installing";
 		delay = 150;
-	} else if (status == PK_STATUS_ENUM_QUERY) {
+	} else if (status == PK_STATUS_ENUM_QUERY ||
+		   status == PK_STATUS_ENUM_SCAN_APPLICATIONS) {
 		name = "pk-action-searching";
 		delay = 150;
 	} else if (status == PK_STATUS_ENUM_WAIT) {

Modified: trunk/src/gpk-common.h
==============================================================================
--- trunk/src/gpk-common.h	(original)
+++ trunk/src/gpk-common.h	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *
@@ -49,6 +49,7 @@
 #define GPK_CONF_UPDATE_BATTERY			"/apps/gnome-packagekit/update_battery"
 #define GPK_CONF_SHOW_DEPENDS			"/apps/gnome-packagekit/show_depends"
 #define GPK_CONF_PROMPT_FIRMWARE		"/apps/gnome-packagekit/prompt_firmware"
+#define GPK_CONF_PROMPT_HARDWARE		"/apps/gnome-packagekit/prompt_hardware"
 
 #define GPK_CONF_REPO_SHOW_DETAILS		"/apps/gnome-packagekit/repo/show_details"
 #define GPK_CONF_APPLICATION_FILTER_BASENAME	"/apps/gnome-packagekit/application/filter_basename"

Modified: trunk/src/gpk-enum.c
==============================================================================
--- trunk/src/gpk-enum.c	(original)
+++ trunk/src/gpk-enum.c	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *
@@ -32,7 +32,7 @@
 #include "gpk-common.h"
 
 /* icon names */
-static PkEnumMatch enum_info_icon_name[] = {
+static const PkEnumMatch enum_info_icon_name[] = {
 	{PK_INFO_ENUM_UNKNOWN,			"help-browser"},	/* fall though value */
 	{PK_INFO_ENUM_INSTALLED,		"pk-package-installed"},
 	{PK_INFO_ENUM_AVAILABLE,		"pk-package-available"},
@@ -54,7 +54,7 @@
 	{0, NULL}
 };
 
-static PkEnumMatch enum_status_icon_name[] = {
+static const PkEnumMatch enum_status_icon_name[] = {
 	{PK_STATUS_ENUM_UNKNOWN,		"help-browser"},	/* fall though value */
 	{PK_STATUS_ENUM_WAIT,			"pk-wait"},
 	{PK_STATUS_ENUM_SETUP,			"pk-setup"},
@@ -82,10 +82,12 @@
 	{PK_STATUS_ENUM_DOWNLOAD_UPDATEINFO,	"pk-refresh-cache"},
 	{PK_STATUS_ENUM_REPACKAGING,		"pk-package-cleanup"},
 	{PK_STATUS_ENUM_LOADING_CACHE,		"pk-refresh-cache"},
+	{PK_STATUS_ENUM_SCAN_APPLICATIONS,	"pk-package-search"}, /* TODO: need better icon */
+	{PK_STATUS_ENUM_GENERATE_PACKAGE_LIST,	"pk-refresh-cache"}, /* TODO: need better icon */
 	{0, NULL}
 };
 
-static PkEnumMatch enum_role_icon_name[] = {
+static const PkEnumMatch enum_role_icon_name[] = {
 	{PK_ROLE_ENUM_UNKNOWN,			"help-browser"},	/* fall though value */
 	{PK_ROLE_ENUM_CANCEL,			"process-stop.svg"},
 	{PK_ROLE_ENUM_RESOLVE,			"pk-package-search"},
@@ -114,7 +116,7 @@
 	{0, NULL}
 };
 
-static PkEnumMatch enum_group_icon_name[] = {
+static const PkEnumMatch enum_group_icon_name[] = {
 	{PK_GROUP_ENUM_UNKNOWN,			"help-browser"},	/* fall though value */
 	{PK_GROUP_ENUM_ACCESSIBILITY,		"preferences-desktop-accessibility"},
 	{PK_GROUP_ENUM_ACCESSORIES,		"applications-accessories"},
@@ -151,7 +153,7 @@
 	{0, NULL}
 };
 
-static PkEnumMatch enum_restart_icon_name[] = {
+static const PkEnumMatch enum_restart_icon_name[] = {
 	{PK_RESTART_ENUM_UNKNOWN,		"help-browser"},	/* fall though value */
 	{PK_RESTART_ENUM_NONE,			"dialog-information"},
 	{PK_RESTART_ENUM_SYSTEM,		"dialog-error"},
@@ -160,7 +162,7 @@
 	{0, NULL}
 };
 
-static PkEnumMatch enum_message_icon_name[] = {
+static const PkEnumMatch enum_message_icon_name[] = {
 	{PK_MESSAGE_ENUM_UNKNOWN,		"help-browser"},	/* fall though value */
 	{PK_MESSAGE_ENUM_BROKEN_MIRROR,		"dialog-error"},
 	{PK_MESSAGE_ENUM_CONNECTION_REFUSED,	"dialog-error"},
@@ -177,7 +179,7 @@
 	{0, NULL}
 };
 
-static PkEnumMatch enum_freq[] = {
+static const PkEnumMatch enum_freq[] = {
 	{GPK_FREQ_ENUM_UNKNOWN,			"unknown"},	/* fall though value */
 	{GPK_FREQ_ENUM_HOURLY,			"hourly"},
 	{GPK_FREQ_ENUM_DAILY,			"daily"},
@@ -186,7 +188,7 @@
 	{0, NULL}
 };
 
-static PkEnumMatch enum_update[] = {
+static const PkEnumMatch enum_update[] = {
 	{GPK_UPDATE_ENUM_UNKNOWN,		"unknown"},	/* fall though value */
 	{GPK_UPDATE_ENUM_ALL,			"all"},
 	{GPK_UPDATE_ENUM_SECURITY,		"security"},
@@ -787,6 +789,12 @@
 	case PK_STATUS_ENUM_LOADING_CACHE:
 		text = _("Loading cache");
 		break;
+	case PK_STATUS_ENUM_SCAN_APPLICATIONS:
+		text = _("Scanning installed applications");
+		break;
+	case PK_STATUS_ENUM_GENERATE_PACKAGE_LIST:
+		text = _("Generating package lists");
+		break;
 	default:
 		egg_warning ("status unrecognised: %s", pk_status_enum_to_text (status));
 	}

Modified: trunk/src/gpk-enum.h
==============================================================================
--- trunk/src/gpk-enum.h	(original)
+++ trunk/src/gpk-enum.h	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *

Modified: trunk/src/gpk-firmware.c
==============================================================================
--- trunk/src/gpk-firmware.c	(original)
+++ trunk/src/gpk-firmware.c	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *
@@ -85,6 +85,7 @@
 	/* try to install each firmware file */
 	for (i=0; i<array->len; i++) {
 		filename = egg_str_list_index (array, i);
+		gpk_client_set_interaction (gclient, GPK_CLIENT_INTERACT_WARNING_PROGRESS);
 		ret = gpk_client_install_provide_file (gclient, filename, &error);
 		if (!ret) {
 			egg_warning ("failed to install provide file: %s", error->message);

Modified: trunk/src/gpk-firmware.h
==============================================================================
--- trunk/src/gpk-firmware.h	(original)
+++ trunk/src/gpk-firmware.h	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *

Modified: trunk/src/gpk-inhibit.c
==============================================================================
--- trunk/src/gpk-inhibit.c	(original)
+++ trunk/src/gpk-inhibit.c	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *

Modified: trunk/src/gpk-inhibit.h
==============================================================================
--- trunk/src/gpk-inhibit.h	(original)
+++ trunk/src/gpk-inhibit.h	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *

Modified: trunk/src/gpk-interface.h
==============================================================================
--- trunk/src/gpk-interface.h	(original)
+++ trunk/src/gpk-interface.h	Mon Sep 22 13:34:34 2008
@@ -53,7 +53,7 @@
 #endif /* !G_ENABLE_DEBUG */
 
 
-/* NONE:UINT,UINT,STRING,POINTER (/tmp/dbus-binding-tool-c-marshallers.096QHU:1) */
+/* NONE:UINT,UINT,STRING,POINTER (/tmp/dbus-binding-tool-c-marshallers.52MTHU:1) */
 extern void dbus_glib_marshal_gpk_dbus_VOID__UINT_UINT_STRING_POINTER (GClosure     *closure,
                                                                        GValue       *return_value,
                                                                        guint         n_param_values,
@@ -101,7 +101,7 @@
 }
 #define dbus_glib_marshal_gpk_dbus_NONE__UINT_UINT_STRING_POINTER	dbus_glib_marshal_gpk_dbus_VOID__UINT_UINT_STRING_POINTER
 
-/* NONE:UINT,UINT,BOXED,POINTER (/tmp/dbus-binding-tool-c-marshallers.096QHU:2) */
+/* NONE:UINT,UINT,BOXED,POINTER (/tmp/dbus-binding-tool-c-marshallers.52MTHU:2) */
 extern void dbus_glib_marshal_gpk_dbus_VOID__UINT_UINT_BOXED_POINTER (GClosure     *closure,
                                                                       GValue       *return_value,
                                                                       guint         n_param_values,

Modified: trunk/src/gpk-log.c
==============================================================================
--- trunk/src/gpk-log.c	(original)
+++ trunk/src/gpk-log.c	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *

Modified: trunk/src/gpk-prefs.c
==============================================================================
--- trunk/src/gpk-prefs.c	(original)
+++ trunk/src/gpk-prefs.c	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *

Modified: trunk/src/gpk-repo.c
==============================================================================
--- trunk/src/gpk-repo.c	(original)
+++ trunk/src/gpk-repo.c	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *

Modified: trunk/src/gpk-self-test.c
==============================================================================
--- trunk/src/gpk-self-test.c	(original)
+++ trunk/src/gpk-self-test.c	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *

Modified: trunk/src/gpk-smart-icon.c
==============================================================================
--- trunk/src/gpk-smart-icon.c	(original)
+++ trunk/src/gpk-smart-icon.c	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *

Modified: trunk/src/gpk-smart-icon.h
==============================================================================
--- trunk/src/gpk-smart-icon.h	(original)
+++ trunk/src/gpk-smart-icon.h	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *

Modified: trunk/src/gpk-update-icon.c
==============================================================================
--- trunk/src/gpk-update-icon.c	(original)
+++ trunk/src/gpk-update-icon.c	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *
@@ -40,6 +40,7 @@
 #include "gpk-check-update.h"
 #include "gpk-watch.h"
 #include "gpk-firmware.h"
+#include "gpk-hardware.h"
 #include "gpk-dbus.h"
 #include "gpk-interface.h"
 #include "gpk-common.h"
@@ -116,6 +117,9 @@
 	GpkWatch *watch = NULL;
 	GpkDbus *dbus = NULL;
 	GpkFirmware *firmware = NULL;
+	/*
+	GpkHardware *hardware = NULL;
+	*/
 	GOptionContext *context;
 	GError *error = NULL;
 	gboolean ret;
@@ -173,6 +177,9 @@
 	cupdate = gpk_check_update_new ();
 	watch = gpk_watch_new ();
 	firmware = gpk_firmware_new ();
+	/*
+	hardware = gpk_hardware_new ();
+	*/
 
 	/* find out when we are replaced */
 	monitor = egg_dbus_monitor_new ();
@@ -207,6 +214,9 @@
 	g_object_unref (cupdate);
 	g_object_unref (watch);
 	g_object_unref (firmware);
+	/*
+	g_object_unref (hardware);
+	*/
 	g_object_unref (monitor);
 
 	return 0;

Modified: trunk/src/gpk-update-viewer.c
==============================================================================
--- trunk/src/gpk-update-viewer.c	(original)
+++ trunk/src/gpk-update-viewer.c	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *
@@ -186,7 +186,7 @@
 	gtk_widget_hide (widget);
 
 	gpk_update_viewer_set_page (PAGE_LAST);
-	gpk_client_set_interaction (gclient, GPK_CLIENT_INTERACT_ALWAYS);
+	gpk_client_set_interaction (gclient, GPK_CLIENT_INTERACT_WARNING_PROGRESS);
 	ret = gpk_client_update_system (gclient, NULL);
 
 	/* did we succeed updating the system */
@@ -265,7 +265,7 @@
 	/* set correct view */
 	gpk_update_viewer_set_page (PAGE_LAST);
 	package_ids = pk_package_ids_from_array (array);
-	gpk_client_set_interaction (gclient, GPK_CLIENT_INTERACT_ALWAYS);
+	gpk_client_set_interaction (gclient, GPK_CLIENT_INTERACT_WARNING_PROGRESS);
 	ret = gpk_client_update_packages (gclient, package_ids, NULL);
 	g_strfreev (package_ids);
 
@@ -414,7 +414,7 @@
 	GError *error = NULL;
 
 	/* refresh the cache */
-	gpk_client_set_interaction (gclient, GPK_CLIENT_INTERACT_ALWAYS);
+	gpk_client_set_interaction (gclient, GPK_CLIENT_INTERACT_WARNING_PROGRESS);
 	polkit_gnome_action_set_sensitive (refresh_action, FALSE);
 	ret = gpk_client_refresh_cache (gclient, &error);
 	polkit_gnome_action_set_sensitive (refresh_action, TRUE);
@@ -1926,7 +1926,6 @@
 
 	/* install stuff using the gnome helpers */
 	gclient = gpk_client_new ();
-	gpk_client_show_finished (gclient, FALSE);
 
 	/* use custom widgets */
 	glade_set_custom_handler (gpk_update_viewer_create_custom_widget, NULL);

Modified: trunk/src/gpk-watch.c
==============================================================================
--- trunk/src/gpk-watch.c	(original)
+++ trunk/src/gpk-watch.c	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *
@@ -210,24 +210,35 @@
 
 	/* get the most important icon */
 	value = pk_bitfield_contain_priority (status,
-					   PK_STATUS_ENUM_REFRESH_CACHE,
-					   PK_STATUS_ENUM_LOADING_CACHE,
-					   PK_STATUS_ENUM_CANCEL,
-					   PK_STATUS_ENUM_INSTALL,
-					   PK_STATUS_ENUM_REMOVE,
-					   PK_STATUS_ENUM_CLEANUP,
-					   PK_STATUS_ENUM_OBSOLETE,
-					   PK_STATUS_ENUM_SETUP,
-					   PK_STATUS_ENUM_UPDATE,
-					   PK_STATUS_ENUM_DOWNLOAD,
-					   PK_STATUS_ENUM_QUERY,
-					   PK_STATUS_ENUM_INFO,
-					   PK_STATUS_ENUM_WAIT,
-					   PK_STATUS_ENUM_DEP_RESOLVE,
-					   PK_STATUS_ENUM_ROLLBACK,
-					   PK_STATUS_ENUM_COMMIT,
-					   PK_STATUS_ENUM_REQUEST,
-					   PK_STATUS_ENUM_FINISHED, -1);
+					      PK_STATUS_ENUM_REFRESH_CACHE,
+					      PK_STATUS_ENUM_LOADING_CACHE,
+					      PK_STATUS_ENUM_CANCEL,
+					      PK_STATUS_ENUM_INSTALL,
+					      PK_STATUS_ENUM_REMOVE,
+					      PK_STATUS_ENUM_CLEANUP,
+					      PK_STATUS_ENUM_OBSOLETE,
+					      PK_STATUS_ENUM_SETUP,
+					      PK_STATUS_ENUM_RUNNING,
+					      PK_STATUS_ENUM_UPDATE,
+					      PK_STATUS_ENUM_DOWNLOAD,
+					      PK_STATUS_ENUM_DOWNLOAD_REPOSITORY,
+					      PK_STATUS_ENUM_DOWNLOAD_PACKAGELIST,
+					      PK_STATUS_ENUM_DOWNLOAD_FILELIST,
+					      PK_STATUS_ENUM_DOWNLOAD_CHANGELOG,
+					      PK_STATUS_ENUM_DOWNLOAD_GROUP,
+					      PK_STATUS_ENUM_DOWNLOAD_UPDATEINFO,
+					      PK_STATUS_ENUM_QUERY,
+					      PK_STATUS_ENUM_INFO,
+					      PK_STATUS_ENUM_DEP_RESOLVE,
+					      PK_STATUS_ENUM_ROLLBACK,
+					      PK_STATUS_ENUM_TEST_COMMIT,
+					      PK_STATUS_ENUM_COMMIT,
+					      PK_STATUS_ENUM_REQUEST,
+					      PK_STATUS_ENUM_SIG_CHECK,
+					      PK_STATUS_ENUM_CLEANUP,
+					      PK_STATUS_ENUM_REPACKAGING,
+					      PK_STATUS_ENUM_WAIT,
+					      PK_STATUS_ENUM_FINISHED, -1);
 
 	/* only set if in the list and not unknown */
 	if (value != PK_STATUS_ENUM_UNKNOWN && value != -1) {
@@ -248,11 +259,10 @@
 
 	if (pk_task_list_contains_role (tlist, PK_ROLE_ENUM_REFRESH_CACHE) ||
 	    pk_task_list_contains_role (tlist, PK_ROLE_ENUM_UPDATE_PACKAGES) ||
-	    pk_task_list_contains_role (tlist, PK_ROLE_ENUM_UPDATE_SYSTEM)) {
+	    pk_task_list_contains_role (tlist, PK_ROLE_ENUM_UPDATE_SYSTEM))
 		watch->priv->show_refresh_in_menu = FALSE;
-	} else {
+	else
 		watch->priv->show_refresh_in_menu = TRUE;
-	}
 
 	gpk_watch_refresh_icon (watch);
 	gpk_watch_refresh_tooltip (watch);
@@ -570,7 +580,7 @@
 	gtk_window_set_default_icon_name (GPK_ICON_SOFTWARE_LOG);
 	gtk_show_about_dialog (NULL,
 			       "version", VERSION,
-			       "copyright", "Copyright \xc2\xa9 2007 Richard Hughes",
+			       "copyright", "Copyright \xc2\xa9 2007-2008 Richard Hughes",
 			       "license", license_trans,
 			       "website-label", _("PackageKit Website"),
 			       "website", "www.packagekit.org",
@@ -641,7 +651,6 @@
 
 	egg_debug ("refresh cache");
 	gpk_client_set_interaction (watch->priv->gclient, GPK_CLIENT_INTERACT_ALWAYS);
-	gpk_client_show_finished (watch->priv->gclient, FALSE);
 	ret = gpk_client_refresh_cache (watch->priv->gclient, &error);
 	if (!ret) {
 		egg_warning ("%s", error->message);
@@ -679,7 +688,7 @@
 
 	/* launch the UI */
 	gclient = gpk_client_new ();
-	gpk_client_show_finished (gclient, FALSE);
+	gpk_client_set_interaction (gclient, GPK_CLIENT_INTERACT_WARNING_PROGRESS);
 	g_signal_connect (gclient, "quit", G_CALLBACK (pk_monitor_action_unref_cb), watch);
 	gpk_client_monitor_tid (gclient, tid);
 }

Modified: trunk/src/gpk-watch.h
==============================================================================
--- trunk/src/gpk-watch.h	(original)
+++ trunk/src/gpk-watch.h	Mon Sep 22 13:34:34 2008
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *



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