Improve GUI handling of zip flashing

- change the page sooner so that users cannot activate the slider
  twice
- improve GUI messaging if a zip requests a cache wipe
- move update of the file count to the end so it is less visible
  to the user (e.g. during a cache wipe the counter should not
  read 0)

Change-Id: I5d478f07effe61ca37f3521a77c9e9243a9cb692
diff --git a/gui/action.cpp b/gui/action.cpp
index 96f6209..9534399 100644
--- a/gui/action.cpp
+++ b/gui/action.cpp
@@ -325,7 +325,7 @@
 	}
 }
 
-int GUIAction::flash_zip(std::string filename, std::string pageName, int* wipe_cache)
+int GUIAction::flash_zip(std::string filename, int* wipe_cache)
 {
 	int ret_val = 0;
 
@@ -337,15 +337,9 @@
 		return -1;
 	}
 
-	// We're going to jump to this page first, like a loading page
-	gui_changePage(pageName);
-
 	if (!PartitionManager.Mount_By_Path(filename, true))
 		return -1;
 
-	// TODO: why again?
-	gui_changePage(pageName);
-
 	if (simulate) {
 		simulate_progress_bar();
 	} else {
@@ -944,29 +938,33 @@
 int GUIAction::flash(std::string arg)
 {
 	int i, ret_val = 0, wipe_cache = 0;
+	// We're going to jump to this page first, like a loading page
+	gui_changePage(arg);
 	for (i=0; i<zip_queue_index; i++) {
 		operation_start("Flashing");
 		DataManager::SetValue("tw_filename", zip_queue[i]);
 		DataManager::SetValue(TW_ZIP_INDEX, (i + 1));
 
 		TWFunc::SetPerformanceMode(true);
-		ret_val = flash_zip(zip_queue[i], arg, &wipe_cache);
+		ret_val = flash_zip(zip_queue[i], &wipe_cache);
 		TWFunc::SetPerformanceMode(false);
 		if (ret_val != 0) {
 			gui_print("Error flashing zip '%s'\n", zip_queue[i].c_str());
-			i = 10; // Error flashing zip - exit queue
 			ret_val = 1;
+			break;
 		}
 	}
 	zip_queue_index = 0;
-	DataManager::SetValue(TW_ZIP_QUEUE_COUNT, zip_queue_index);
 
-	if (wipe_cache)
+	if (wipe_cache) {
+		gui_print("One or more zip requested a cache wipe\nWiping cache now.\n");
 		PartitionManager.Wipe_By_Path("/cache");
+	}
 
 	reinject_after_flash();
 	PartitionManager.Update_System_Details();
 	operation_end(ret_val);
+	DataManager::SetValue(TW_ZIP_QUEUE_COUNT, zip_queue_index);
 	return 0;
 }
 
diff --git a/gui/objects.hpp b/gui/objects.hpp
index bb3edb3..a89f486 100644
--- a/gui/objects.hpp
+++ b/gui/objects.hpp
@@ -285,7 +285,7 @@
 	int doAction(Action action);
 	bool needsToRunInSeparateThread(const Action& action);
 	void simulate_progress_bar(void);
-	int flash_zip(std::string filename, std::string pageName, int* wipe_cache);
+	int flash_zip(std::string filename, int* wipe_cache);
 	void reinject_after_flash();
 	void operation_start(const string operation_name);
 	void operation_end(const int operation_status);