Fix some issues with wipe partition list

Change-Id: Ie7d5878faf86b8fa824b72211be7fd3596b471d7
diff --git a/gui/action.cpp b/gui/action.cpp
index 9bd5ce5..3e1f793 100644
--- a/gui/action.cpp
+++ b/gui/action.cpp
@@ -818,6 +818,13 @@
 								} else {
 									skip = true;
 								}
+							} else if (wipe_path == "INTERNAL") {
+								if (!PartitionManager.Wipe_Media_From_Data()) {
+									ret_val = false;
+									break;
+								} else {
+									skip = true;
+								}
 							}
 							if (!skip) {
 								if (!PartitionManager.Wipe_By_Path(wipe_path)) {
diff --git a/partition.cpp b/partition.cpp
index 7b687e7..f92d62f 100644
--- a/partition.cpp
+++ b/partition.cpp
@@ -480,7 +480,7 @@
 		Storage_Name = Display_Name;
 	if (!has_display_name && has_storage_name)
 		Display_Name = Storage_Name;
-	if (has_display_name && !has_backup_name)
+	if (has_display_name && !has_backup_name && Backup_Display_Name != "Android Secure")
 		Backup_Display_Name = Display_Name;
 	if (!has_display_name && has_backup_name)
 		Display_Name = Backup_Display_Name;
@@ -1158,6 +1158,9 @@
 		return false;
 
 	Has_Data_Media = false;
+	Decrypted_Block_Device = "";
+	Is_Decrypted = false;
+	Is_Encrypted = false;
 	if (Wipe(Fstab_File_System)) {
 		Has_Data_Media = Save_Data_Media;
 		if (Has_Data_Media && !Symlink_Mount_Point.empty()) {
diff --git a/partitionmanager.cpp b/partitionmanager.cpp
index a78705b..d7f1600 100644
--- a/partitionmanager.cpp
+++ b/partitionmanager.cpp
@@ -1191,6 +1191,9 @@
 			return -1;
 		if (dat->Has_Data_Media) {
 			dat->Recreate_Media_Folder();
+			// Unmount and remount - slightly hackish way to ensure that the "/sdcard" folder is still mounted properly after wiping
+			dat->UnMount(false);
+			dat->Mount(false);
 		}
 		return true;
 	} else {
@@ -1417,6 +1420,7 @@
 			dat->Is_Decrypted = true;
 			dat->Decrypted_Block_Device = crypto_blkdev;
 			dat->Setup_File_System(false);
+			dat->Current_File_System = dat->Fstab_File_System; // Needed if we're ignoring blkid because encrypted devices start out as emmc
 			gui_print("Data successfully decrypted, new block device: '%s'\n", crypto_blkdev);
 
 #ifdef CRYPTO_SD_FS_TYPE
@@ -1848,6 +1852,13 @@
 				part.selected = 0;
 				Partition_List->push_back(part);
 			}
+			if ((*iter)->Has_Data_Media) {
+				struct PartitionList datamedia;
+				datamedia.Display_Name = (*iter)->Storage_Name;
+				datamedia.Mount_Point = "INTERNAL";
+				datamedia.selected = 0;
+				Partition_List->push_back(datamedia);
+			}
 		}
 	} else {
 		LOGERR("Unknown list type '%s' requested for TWPartitionManager::Get_Partition_List\n", ListType.c_str());