From a13d74fc95324c4318fcc95956b07fe593669412 Mon Sep 17 00:00:00 2001 From: Dees_Troy Date: Sun, 24 Mar 2013 08:54:55 -0500 Subject: Add partition list GUI element Add partition list GUI element and update backup, restore, mount, storage selection, and wipe sections of GUI and partition manager code to reflect the new GUI element. Update ORS engine to handle new backup and restore setup. Fix a bug with decrypt. Add 1080x1920 layout. Change-Id: Iaa2f44cb707167e66f935452f076ba00e68a2aa4 --- crypto/ics/cryptfs.c | 2 +- crypto/jb/cryptfs.c | 2 +- data.cpp | 168 +- data.h | 2 - data.hpp | 4 - gui/Android.mk | 1 + gui/action.cpp | 63 +- gui/blanktimer.cpp | 12 +- gui/button.cpp | 77 +- gui/devices/1024x600/res/images/exclamation200.png | Bin 5260 -> 0 bytes gui/devices/1024x600/res/ui.xml | 979 ++---- gui/devices/1024x768/res/images/exclamation200.png | Bin 5260 -> 0 bytes gui/devices/1024x768/res/ui.xml | 977 ++---- .../1080x1920/res/fonts/Roboto-Condensed-40.dat | Bin 0 -> 12724 bytes gui/devices/1080x1920/res/images/back-icon.png | Bin 0 -> 2627 bytes .../1080x1920/res/images/checkbox_checked.png | Bin 0 -> 1807 bytes .../1080x1920/res/images/checkbox_empty.png | Bin 0 -> 586 bytes gui/devices/1080x1920/res/images/curtain.jpg | Bin 0 -> 107182 bytes gui/devices/1080x1920/res/images/file.png | Bin 0 -> 1267 bytes gui/devices/1080x1920/res/images/folder.png | Bin 0 -> 1069 bytes gui/devices/1080x1920/res/images/home-icon.png | Bin 0 -> 2433 bytes .../1080x1920/res/images/indeterminate001.png | Bin 0 -> 3791 bytes .../1080x1920/res/images/indeterminate002.png | Bin 0 -> 3796 bytes .../1080x1920/res/images/indeterminate003.png | Bin 0 -> 3772 bytes .../1080x1920/res/images/indeterminate004.png | Bin 0 -> 3760 bytes .../1080x1920/res/images/indeterminate005.png | Bin 0 -> 3780 bytes .../1080x1920/res/images/indeterminate006.png | Bin 0 -> 3732 bytes gui/devices/1080x1920/res/images/keyboard1.png | Bin 0 -> 65355 bytes gui/devices/1080x1920/res/images/keyboard2.png | Bin 0 -> 66480 bytes gui/devices/1080x1920/res/images/keyboard3.png | Bin 0 -> 57703 bytes gui/devices/1080x1920/res/images/keyboard4.png | Bin 0 -> 54577 bytes gui/devices/1080x1920/res/images/medium-button.png | Bin 0 -> 3359 bytes gui/devices/1080x1920/res/images/menu-button.png | Bin 0 -> 8122 bytes gui/devices/1080x1920/res/images/minus-button.png | Bin 0 -> 815 bytes gui/devices/1080x1920/res/images/plus-button.png | Bin 0 -> 1117 bytes .../1080x1920/res/images/progress_empty.png | Bin 0 -> 261 bytes gui/devices/1080x1920/res/images/progress_fill.png | Bin 0 -> 316 bytes gui/devices/1080x1920/res/images/radio_empty.png | Bin 0 -> 2673 bytes .../1080x1920/res/images/radio_selected.png | Bin 0 -> 3432 bytes gui/devices/1080x1920/res/images/slideout.png | Bin 0 -> 3254 bytes gui/devices/1080x1920/res/images/slider-touch.png | Bin 0 -> 29925 bytes gui/devices/1080x1920/res/images/slider-used.png | Bin 0 -> 9123 bytes gui/devices/1080x1920/res/images/slider.png | Bin 0 -> 21895 bytes gui/devices/1080x1920/res/images/sort-button.png | Bin 0 -> 1495 bytes gui/devices/1080x1920/res/images/top-bar.jpg | Bin 0 -> 29015 bytes gui/devices/1080x1920/res/images/unlock.png | Bin 0 -> 68671 bytes gui/devices/1080x1920/res/ui.xml | 3626 ++++++++++++++++++++ gui/devices/1280x800/res/images/exclamation200.png | Bin 5260 -> 0 bytes gui/devices/1280x800/res/ui.xml | 979 ++---- .../1920x1200/res/images/exclamation400.png | Bin 11295 -> 0 bytes gui/devices/1920x1200/res/ui.xml | 979 ++---- .../2560x1600/res/images/exclamation400.png | Bin 37149 -> 0 bytes gui/devices/2560x1600/res/ui.xml | 979 ++---- gui/devices/320x480/res/images/exclamation150.png | Bin 6460 -> 0 bytes gui/devices/320x480/res/ui.xml | 1013 ++---- gui/devices/480x800/res/images/exclamation200.png | Bin 5260 -> 0 bytes gui/devices/480x800/res/ui.xml | 1012 ++---- gui/devices/480x854/res/images/exclamation200.png | Bin 5260 -> 0 bytes gui/devices/480x854/res/ui.xml | 1012 ++---- gui/devices/540x960/res/images/exclamation300.png | Bin 13488 -> 0 bytes gui/devices/540x960/res/ui.xml | 1012 ++---- gui/devices/720x1280/res/images/exclamation400.png | Bin 11295 -> 0 bytes gui/devices/720x1280/res/ui.xml | 1014 ++---- gui/devices/800x1280/res/images/exclamation400.png | Bin 11295 -> 0 bytes gui/devices/800x1280/res/ui.xml | 1018 ++---- gui/devices/800x480/res/images/exclamation150.png | Bin 6460 -> 0 bytes gui/devices/800x480/res/ui.xml | 977 ++---- gui/fileselector.cpp | 20 +- gui/fill.cpp | 4 +- gui/listbox.cpp | 18 +- gui/objects.hpp | 106 + gui/pages.cpp | 25 +- gui/partitionlist.cpp | 926 +++++ gui/text.cpp | 6 +- openrecoveryscript.cpp | 116 +- partition.cpp | 123 +- partitionmanager.cpp | 639 ++-- partitions.hpp | 16 + variables.h | 2 +- 79 files changed, 9063 insertions(+), 8846 deletions(-) delete mode 100644 gui/devices/1024x600/res/images/exclamation200.png delete mode 100644 gui/devices/1024x768/res/images/exclamation200.png create mode 100644 gui/devices/1080x1920/res/fonts/Roboto-Condensed-40.dat create mode 100644 gui/devices/1080x1920/res/images/back-icon.png create mode 100644 gui/devices/1080x1920/res/images/checkbox_checked.png create mode 100644 gui/devices/1080x1920/res/images/checkbox_empty.png create mode 100644 gui/devices/1080x1920/res/images/curtain.jpg create mode 100644 gui/devices/1080x1920/res/images/file.png create mode 100644 gui/devices/1080x1920/res/images/folder.png create mode 100644 gui/devices/1080x1920/res/images/home-icon.png create mode 100644 gui/devices/1080x1920/res/images/indeterminate001.png create mode 100644 gui/devices/1080x1920/res/images/indeterminate002.png create mode 100644 gui/devices/1080x1920/res/images/indeterminate003.png create mode 100644 gui/devices/1080x1920/res/images/indeterminate004.png create mode 100644 gui/devices/1080x1920/res/images/indeterminate005.png create mode 100644 gui/devices/1080x1920/res/images/indeterminate006.png create mode 100644 gui/devices/1080x1920/res/images/keyboard1.png create mode 100644 gui/devices/1080x1920/res/images/keyboard2.png create mode 100644 gui/devices/1080x1920/res/images/keyboard3.png create mode 100644 gui/devices/1080x1920/res/images/keyboard4.png create mode 100644 gui/devices/1080x1920/res/images/medium-button.png create mode 100644 gui/devices/1080x1920/res/images/menu-button.png create mode 100644 gui/devices/1080x1920/res/images/minus-button.png create mode 100644 gui/devices/1080x1920/res/images/plus-button.png create mode 100644 gui/devices/1080x1920/res/images/progress_empty.png create mode 100644 gui/devices/1080x1920/res/images/progress_fill.png create mode 100644 gui/devices/1080x1920/res/images/radio_empty.png create mode 100644 gui/devices/1080x1920/res/images/radio_selected.png create mode 100644 gui/devices/1080x1920/res/images/slideout.png create mode 100644 gui/devices/1080x1920/res/images/slider-touch.png create mode 100644 gui/devices/1080x1920/res/images/slider-used.png create mode 100644 gui/devices/1080x1920/res/images/slider.png create mode 100644 gui/devices/1080x1920/res/images/sort-button.png create mode 100644 gui/devices/1080x1920/res/images/top-bar.jpg create mode 100644 gui/devices/1080x1920/res/images/unlock.png create mode 100644 gui/devices/1080x1920/res/ui.xml delete mode 100644 gui/devices/1280x800/res/images/exclamation200.png delete mode 100644 gui/devices/1920x1200/res/images/exclamation400.png delete mode 100644 gui/devices/2560x1600/res/images/exclamation400.png delete mode 100644 gui/devices/320x480/res/images/exclamation150.png delete mode 100644 gui/devices/480x800/res/images/exclamation200.png delete mode 100644 gui/devices/480x854/res/images/exclamation200.png delete mode 100644 gui/devices/540x960/res/images/exclamation300.png delete mode 100644 gui/devices/720x1280/res/images/exclamation400.png delete mode 100644 gui/devices/800x1280/res/images/exclamation400.png delete mode 100644 gui/devices/800x480/res/images/exclamation150.png create mode 100644 gui/partitionlist.cpp diff --git a/crypto/ics/cryptfs.c b/crypto/ics/cryptfs.c index 945864d6a..d994449c1 100644 --- a/crypto/ics/cryptfs.c +++ b/crypto/ics/cryptfs.c @@ -211,7 +211,7 @@ static int get_crypt_ftr_and_key(char *real_blk_name, struct crypt_mnt_ftr *cryp /* the footer size is bigger than we expected. * Skip to it's stated end so we can read the key. */ - if (lseek(fd, crypt_ftr->ftr_size - sizeof(struct crypt_mnt_ftr), SEEK_CUR) == -1) { + if (lseek64(fd, crypt_ftr->ftr_size - sizeof(struct crypt_mnt_ftr), SEEK_CUR) == -1) { printf("Cannot seek to start of key\n"); goto errout; } diff --git a/crypto/jb/cryptfs.c b/crypto/jb/cryptfs.c index 456d49f0a..be6c476b8 100644 --- a/crypto/jb/cryptfs.c +++ b/crypto/jb/cryptfs.c @@ -317,7 +317,7 @@ static int get_crypt_ftr_and_key(char *real_blk_name, struct crypt_mnt_ftr *cryp /* the footer size is bigger than we expected. * Skip to it's stated end so we can read the key. */ - if (lseek(fd, crypt_ftr->ftr_size - sizeof(struct crypt_mnt_ftr), SEEK_CUR) == -1) { + if (lseek64(fd, crypt_ftr->ftr_size - sizeof(struct crypt_mnt_ftr), SEEK_CUR) == -1) { SLOGE("Cannot seek to start of key\n"); goto errout; } diff --git a/data.cpp b/data.cpp index 02bdba36d..c33fa89d9 100644 --- a/data.cpp +++ b/data.cpp @@ -226,7 +226,12 @@ int DataManager::LoadValues(const string filename) // Read in the file, if possible FILE* in = fopen(filename.c_str(), "rb"); - if (!in) return 0; + if (!in) { + LOGI("Settings file '%s' not found.\n", filename.c_str()); + return 0; + } else { + LOGI("Loading settings from '%s'.\n", filename.c_str()); + } int file_version; if (fread(&file_version, 1, sizeof(int), in) != sizeof(int)) goto error; @@ -259,24 +264,19 @@ int DataManager::LoadValues(const string filename) } else mValues.insert(TNameValuePair(Name, TStrIntPair(Value, 1))); + if (Name == "tw_screen_timeout_secs") + blankTimer.setTime(atoi(Value.c_str())); } - fclose(in); - - str = GetCurrentStoragePath(); - str += "/TWRP/BACKUPS/"; - str += dev_id; - SetValue(TW_BACKUPS_FOLDER_VAR, str, 0); - - return 0; - error: - // File version mismatch. Use defaults. fclose(in); - str = GetCurrentStoragePath(); - str += "/TWRP/BACKUPS/"; - str += dev_id; - SetValue(TW_BACKUPS_FOLDER_VAR, str, 0); - return -1; + string current = GetCurrentStoragePath(); + string settings = GetSettingsStoragePath(); + if (current != settings && !PartitionManager.Mount_By_Path(current, false)) { + SetValue("tw_storage_path", settings); + } else { + SetBackupFolder(); + } + return 0; } int DataManager::Flush() @@ -433,10 +433,10 @@ int DataManager::SetValue(const string varName, string value, int persist /* = 0 SaveValues(); if (varName == "tw_screen_timeout_secs") { blankTimer.setTime(atoi(value.c_str())); + } else if (varName == "tw_storage_path") { + SetBackupFolder(); } - else { - gui_notifyVarChange(varName.c_str(), value.c_str()); - } + gui_notifyVarChange(varName.c_str(), value.c_str()); return 0; } @@ -458,13 +458,8 @@ int DataManager::SetValue(const string varName, int value, int persist /* = 0 */ else str = GetStrValue(TW_EXTERNAL_PATH); - string dev_id; - - GetValue("device_id", dev_id); - str += "/TWRP/BACKUPS/"; - str += dev_id; - - SetValue(TW_BACKUPS_FOLDER_VAR, str); + SetValue("tw_storage_path", str); + SetBackupFolder(); } return SetValue(varName, valStr.str(), persist);; } @@ -501,13 +496,38 @@ void DataManager::update_tz_environment_variables(void) { void DataManager::SetBackupFolder() { string str = GetCurrentStoragePath(); + TWPartition* partition = PartitionManager.Find_Partition_By_Path(str); str += "/TWRP/BACKUPS/"; string dev_id; GetValue("device_id", dev_id); str += dev_id; + LOGI("Backup folder set to '%s'\n", str.c_str()); SetValue(TW_BACKUPS_FOLDER_VAR, str, 0); + if (partition != NULL) { + SetValue("tw_storage_display_name", partition->Storage_Name); + char free_space[255]; + sprintf(free_space, "%llu", partition->Free / 1024 / 1024); + SetValue("tw_storage_free_size", free_space); + string zip_path, zip_root, storage_path; + GetValue(TW_ZIP_LOCATION_VAR, zip_path); + if (partition->Has_Data_Media) + storage_path = partition->Symlink_Mount_Point; + else + storage_path = partition->Storage_Path; + if (zip_path.size() < storage_path.size()) { + SetValue(TW_ZIP_LOCATION_VAR, storage_path); + } else { + zip_root= zip_path; + zip_root.resize(storage_path.size() + 1); + if (zip_root != storage_path) + SetValue(TW_ZIP_LOCATION_VAR, storage_path); + } + } else { + if (PartitionManager.Fstab_Processed() != 0) + LOGE("Storage partition '%s' not found\n", str.c_str()); + } } void DataManager::SetDefaultValues() @@ -522,6 +542,7 @@ void DataManager::SetDefaultValues() mConstValues.insert(make_pair("false", "0")); mConstValues.insert(make_pair(TW_VERSION_VAR, TW_VERSION_STR)); + mValues.insert(make_pair("tw_storage_path", make_pair("/", 1))); #ifdef TW_FORCE_CPUINFO_FOR_DEVICE_ID printf("TW_FORCE_CPUINFO_FOR_DEVICE_ID := true\n"); @@ -788,7 +809,12 @@ void DataManager::SetDefaultValues() mConstValues.insert(make_pair(TW_SDEXT_DISABLE_EXT4, "0")); #endif - mConstValues.insert(make_pair(TW_MIN_SYSTEM_VAR, TW_MIN_SYSTEM_SIZE)); +#ifdef TW_HAS_NO_BOOT_PARTITION + mValues.insert(make_pair("tw_backup_list", make_pair("/system;/data;", 0))); +#else + mValues.insert(make_pair("tw_backup_list", make_pair("/system;/data;/boot;", 0))); +#endif + mConstValues.insert(make_pair(TW_MIN_SYSTEM_VAR, TW_MIN_SYSTEM_SIZE)); mValues.insert(make_pair(TW_BACKUP_NAME, make_pair("(Current Date)", 0))); mValues.insert(make_pair(TW_BACKUP_SYSTEM_VAR, make_pair("1", 1))); mValues.insert(make_pair(TW_BACKUP_DATA_VAR, make_pair("1", 1))); @@ -882,7 +908,7 @@ void DataManager::SetDefaultValues() mConstValues.insert(make_pair("tw_has_brightnesss_file", "0")); } #endif - mValues.insert(make_pair(TW_MILITARY_TIME, make_pair("0", 0))); + mValues.insert(make_pair(TW_MILITARY_TIME, make_pair("0", 1))); } // Magic Values @@ -1018,7 +1044,7 @@ void DataManager::ReadSettingsFile(void) { usleep(500000); if (!PartitionManager.Mount_Settings_Storage(false)) - LOGE("Unable to mount %s when trying to read settings file.\n", DataManager_GetSettingsStorageMount()); + LOGE("Unable to mount %s when trying to read settings file.\n", settings_file); } mkdir(mkdir_path, 0777); @@ -1063,86 +1089,22 @@ void DataManager::ReadSettingsFile(void) string DataManager::GetCurrentStoragePath(void) { - if (GetIntValue(TW_HAS_DUAL_STORAGE) == 1) { - if (GetIntValue(TW_USE_EXTERNAL_STORAGE) == 0) - return GetStrValue(TW_INTERNAL_PATH); - else - return GetStrValue(TW_EXTERNAL_PATH); - } else if (GetIntValue(TW_HAS_INTERNAL) == 1) - return GetStrValue(TW_INTERNAL_PATH); - else - return GetStrValue(TW_EXTERNAL_PATH); + return GetStrValue("tw_storage_path"); } string& DataManager::CGetCurrentStoragePath() { - if (GetIntValue(TW_HAS_DUAL_STORAGE) == 1) { - if (GetIntValue(TW_USE_EXTERNAL_STORAGE) == 0) - return GetValueRef(TW_INTERNAL_PATH); - else - return GetValueRef(TW_EXTERNAL_PATH); - } else if (GetIntValue(TW_HAS_INTERNAL) == 1) - return GetValueRef(TW_INTERNAL_PATH); - else - return GetValueRef(TW_EXTERNAL_PATH); -} - -string DataManager::GetCurrentStorageMount(void) -{ - if (GetIntValue(TW_HAS_DUAL_STORAGE) == 1) { - if (GetIntValue(TW_USE_EXTERNAL_STORAGE) == 0) - return GetStrValue(TW_INTERNAL_MOUNT); - else - return GetStrValue(TW_EXTERNAL_MOUNT); - } else if (GetIntValue(TW_HAS_INTERNAL) == 1) - return GetStrValue(TW_INTERNAL_MOUNT); - else - return GetStrValue(TW_EXTERNAL_MOUNT); -} - -string& DataManager::CGetCurrentStorageMount() -{ - if (GetIntValue(TW_HAS_DUAL_STORAGE) == 1) { - if (GetIntValue(TW_USE_EXTERNAL_STORAGE) == 0) - return GetValueRef(TW_INTERNAL_MOUNT); - else - return GetValueRef(TW_EXTERNAL_MOUNT); - } else if (GetIntValue(TW_HAS_INTERNAL) == 1) - return GetValueRef(TW_INTERNAL_MOUNT); - else - return GetValueRef(TW_EXTERNAL_MOUNT); + return GetValueRef("tw_storage_path"); } string DataManager::GetSettingsStoragePath(void) { - if (GetIntValue(TW_HAS_INTERNAL) == 1) - return GetStrValue(TW_INTERNAL_PATH); - else - return GetStrValue(TW_EXTERNAL_PATH); + return GetStrValue("tw_settings_path"); } string& DataManager::CGetSettingsStoragePath() { - if (GetIntValue(TW_HAS_INTERNAL) == 1) - return GetValueRef(TW_INTERNAL_PATH); - else - return GetValueRef(TW_EXTERNAL_PATH); -} - -string DataManager::GetSettingsStorageMount(void) -{ - if (GetIntValue(TW_HAS_INTERNAL) == 1) - return GetStrValue(TW_INTERNAL_MOUNT); - else - return GetStrValue(TW_EXTERNAL_MOUNT); -} - -string& DataManager::CGetSettingsStorageMount() -{ - if (GetIntValue(TW_HAS_INTERNAL) == 1) - return GetValueRef(TW_INTERNAL_MOUNT); - else - return GetValueRef(TW_EXTERNAL_MOUNT); + return GetValueRef("tw_settings_path"); } extern "C" int DataManager_ResetDefaults() @@ -1194,18 +1156,6 @@ extern "C" const char* DataManager_GetSettingsStoragePath(void) return str.c_str(); } -extern "C" const char* DataManager_GetCurrentStorageMount(void) -{ - string& str = DataManager::CGetCurrentStorageMount(); - return str.c_str(); -} - -extern "C" const char* DataManager_GetSettingsStorageMount(void) -{ - string& str = DataManager::CGetSettingsStorageMount(); - return str.c_str(); -} - extern "C" int DataManager_GetIntValue(const char* varName) { return DataManager::GetIntValue(varName); diff --git a/data.h b/data.h index 17e1a4da0..3137f8fa2 100644 --- a/data.h +++ b/data.h @@ -23,9 +23,7 @@ int DataManager_LoadValues(const char* filename); int DataManager_Flush(); const char* DataManager_GetStrValue(const char* varName); const char* DataManager_GetCurrentStoragePath(); -const char* DataManager_GetCurrentStorageMount(); const char* DataManager_GetSettingsStoragePath(); -const char* DataManager_GetSettingsStorageMount(); int DataManager_GetIntValue(const char* varName); int DataManager_SetStrValue(const char* varName, char* value); diff --git a/data.hpp b/data.hpp index 55966a1c3..b540675cd 100644 --- a/data.hpp +++ b/data.hpp @@ -57,12 +57,8 @@ public: static string GetCurrentStoragePath(void); static string& CGetCurrentStoragePath(); - static string GetCurrentStorageMount(void); - static string& CGetCurrentStorageMount(); static string GetSettingsStoragePath(void); static string& CGetSettingsStoragePath(); - static string GetSettingsStorageMount(void); - static string& CGetSettingsStorageMount(); protected: typedef pair TStrIntPair; diff --git a/gui/Android.mk b/gui/Android.mk index de1460443..b3e9b092a 100644 --- a/gui/Android.mk +++ b/gui/Android.mk @@ -21,6 +21,7 @@ LOCAL_SRC_FILES := \ keyboard.cpp \ input.cpp \ blanktimer.cpp \ + partitionlist.cpp \ ../minuitwrp/graphics.c ifneq ($(TWRP_CUSTOM_KEYBOARD),) diff --git a/gui/action.cpp b/gui/action.cpp index ca968d088..345632410 100644 --- a/gui/action.cpp +++ b/gui/action.cpp @@ -1,4 +1,20 @@ -// image.cpp - GUIImage object +/* + Copyright 2013 bigbiff/Dees_Troy TeamWin + This file is part of TWRP/TeamWin Recovery Project. + + TWRP is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + TWRP is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with TWRP. If not, see . +*/ #include #include @@ -745,6 +761,51 @@ int GUIAction::doAction(Action action, int isThreaded /* = 0 */) ret_val = PartitionManager.Wipe_By_Path(External_Path); } else if (arg == "ANDROIDSECURE") { ret_val = PartitionManager.Wipe_Android_Secure(); + } else if (arg == "LIST") { + string Wipe_List, wipe_path; + bool skip = false; + ret_val = true; + TWPartition* wipe_part = NULL; + + DataManager::GetValue("tw_wipe_list", Wipe_List); + LOGI("wipe list '%s'\n", Wipe_List.c_str()); + if (!Wipe_List.empty()) { + size_t start_pos = 0, end_pos = Wipe_List.find(";", start_pos); + while (end_pos != string::npos && start_pos < Wipe_List.size()) { + wipe_path = Wipe_List.substr(start_pos, end_pos - start_pos); + LOGI("wipe_path '%s'\n", wipe_path.c_str()); + if (wipe_path == "/and-sec") { + if (!PartitionManager.Wipe_Android_Secure()) { + LOGE("Unable to wipe android secure\n"); + ret_val = false; + break; + } else { + skip = true; + } + } else if (wipe_path == "DALVIK") { + if (!PartitionManager.Wipe_Dalvik_Cache()) { + LOGE("Failed to wipe dalvik\n"); + ret_val = false; + break; + } else { + skip = true; + } + } + if (!skip) { + if (!PartitionManager.Wipe_By_Path(wipe_path)) { + LOGE("Unable to wipe '%s'\n", wipe_path.c_str()); + ret_val = false; + break; + } else if (wipe_path == DataManager::GetSettingsStoragePath()) { + arg = wipe_path; + } + } else { + skip = false; + } + start_pos = end_pos + 1; + end_pos = Wipe_List.find(";", start_pos); + } + } } else ret_val = PartitionManager.Wipe_By_Path(arg); diff --git a/gui/blanktimer.cpp b/gui/blanktimer.cpp index 7085557e8..17cc0b3d1 100644 --- a/gui/blanktimer.cpp +++ b/gui/blanktimer.cpp @@ -109,7 +109,17 @@ int blanktimer::getBrightness(void) { string brightness_path = EXPAND(TW_BRIGHTNESS_PATH); if ((TWFunc::read_file(brightness_path, results)) != 0) return -1; - return atoi(results.c_str()); + int result = atoi(results.c_str()); + if (result == 0) { + int tw_brightness; + DataManager::GetValue("tw_brightness", tw_brightness); + if (tw_brightness) { + result = tw_brightness; + } else { + result = 255; + } + } + return result; } diff --git a/gui/button.cpp b/gui/button.cpp index a4c5ecb7c..5ba8182a1 100644 --- a/gui/button.cpp +++ b/gui/button.cpp @@ -1,4 +1,20 @@ -// button.cpp - GUIButton object +/* + Copyright 2012 bigbiff/Dees_Troy TeamWin + This file is part of TWRP/TeamWin Recovery Project. + + TWRP is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + TWRP is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with TWRP. If not, see . +*/ #include #include @@ -39,6 +55,7 @@ GUIButton::GUIButton(xml_node<>* node) mRendered = false; hasHighlightColor = false; renderHighlight = false; + hasFill = false; if (!node) return; @@ -49,7 +66,6 @@ GUIButton::GUIButton(xml_node<>* node) if (mButtonImg->Render() < 0) { - LOGE("Unable to locate button image\n"); delete mButtonImg; mButtonImg = NULL; } @@ -58,6 +74,21 @@ GUIButton::GUIButton(xml_node<>* node) delete mButtonLabel; mButtonLabel = NULL; } + // Load fill if it exists + memset(&mFillColor, 0, sizeof(COLOR)); + child = node->first_node("fill"); + if (child) + { + attr = child->first_attribute("color"); + if (attr) { + hasFill = true; + std::string color = attr->value(); + ConvertStrToColor(color, &mFillColor); + } + } + if (!hasFill && mButtonImg == NULL) { + LOGE("No image resource or fill specified for button.\n"); + } // The icon is a special case child = node->first_node("icon"); @@ -80,8 +111,12 @@ GUIButton::GUIButton(xml_node<>* node) } int x, y, w, h; - if (mButtonImg) mButtonImg->GetRenderPos(x, y, w, h); - SetRenderPos(x, y, w, h); + if (mButtonImg) { + mButtonImg->GetRenderPos(x, y, w, h); + } else if (hasFill) { + LoadPlacement(node->first_node("placement"), &x, &y, &w, &h); + } + SetRenderPos(x, y, w, h); return; } @@ -105,10 +140,32 @@ int GUIButton::Render(void) if (mButtonImg) ret = mButtonImg->Render(); if (ret < 0) return ret; + if (hasFill) { + gr_color(mFillColor.red, mFillColor.green, mFillColor.blue, mFillColor.alpha); + gr_fill(mRenderX, mRenderY, mRenderW, mRenderH); + } if (mButtonIcon && mButtonIcon->GetResource()) gr_blit(mButtonIcon->GetResource(), 0, 0, mIconW, mIconH, mIconX, mIconY); - if (mButtonLabel) ret = mButtonLabel->Render(); - if (ret < 0) return ret; + if (mButtonLabel) { + int w, h; + mButtonLabel->GetCurrentBounds(w, h); + if (w != mTextW) { + mTextW = w; + // As a special case, we'll allow large text which automatically moves it to the right. + if (mTextW > mRenderW) + { + mTextX = mRenderW + mRenderX + 5; + mRenderW += mTextW + 5; + } + else + { + mTextX = mRenderX + ((mRenderW - mTextW) / 2); + } + mButtonLabel->SetRenderPos(mTextX, mTextY); + } + ret = mButtonLabel->Render(); + if (ret < 0) return ret; + } if (renderHighlight && hasHighlightColor) { gr_color(mHighlightColor.red, mHighlightColor.green, mHighlightColor.blue, mHighlightColor.alpha); gr_fill(mRenderX, mRenderY, mRenderW, mRenderH); @@ -129,9 +186,11 @@ int GUIButton::Update(void) if (ret == 0) { - if (mButtonLabel) ret2 = mButtonLabel->Update(); - if (ret2 < 0) return ret2; - if (ret2 > ret) ret = ret2; + if (mButtonLabel) { + ret2 = mButtonLabel->Update(); + if (ret2 < 0) return ret2; + if (ret2 > ret) ret = ret2; + } } else if (ret == 1) { diff --git a/gui/devices/1024x600/res/images/exclamation200.png b/gui/devices/1024x600/res/images/exclamation200.png deleted file mode 100644 index 96258a1c3..000000000 Binary files a/gui/devices/1024x600/res/images/exclamation200.png and /dev/null differ diff --git a/gui/devices/1024x600/res/ui.xml b/gui/devices/1024x600/res/ui.xml index 16969d9bd..1615ee9c1 100755 --- a/gui/devices/1024x600/res/ui.xml +++ b/gui/devices/1024x600/res/ui.xml @@ -41,7 +41,6 @@ - @@ -153,6 +152,8 @@ + + @@ -178,8 +179,24 @@ - - + + + + + + + + + + + + + + + + + + @@ -505,51 +522,15 @@ - - - - - - - Using external SD - - external - - - - - - - - - - Using external SD - - external - - - - - - - - - - Using internal storage - - internal - - - - - - - - - - Using internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=install + selectstorage + @@ -854,15 +835,6 @@ - - - - - - - - - @@ -1261,220 +1233,92 @@ - + - - - - Mount Menu - - - - - - - Mount USB Storage - - usb_mount + + + +
+ + Select Storage: + + + + + +
- - - - - Mount System - - /system + + + main - - - - - Unmount System - - /system + + + + %tw_back% + - - - - - Mount Data - - /data - + + - - - - - Unmount Data - - /data - + + - - - - - Mount Cache - - /cache + + + + Mount Menu - - - - - Unmount Cache - - /cache + + + +
+ + Select Partitions to Mount: + + + + +
- - - - - - - Mount SDCard - - EXTERNAL - - - - - - - - - - Unmount SDCard - - EXTERNAL - - - - - - - - - - - Mount Internal Storage - - INTERNAL - - - - - - - - - - - Unmount Internal Storage - - INTERNAL - - - - - - - - - - Mount SD-Ext - - /sd-ext - - - - - - - Unmount SD-Ext - - /sd-ext - - - - - - - - - Mount Boot - - /boot - - - - - - - - - - Unmount Boot - - /boot - - - - - - - - - - Using external SD - - external - - - - - - - - + + - Using external SD - - external + + + Decrypt Data + + decrypt - - - - - - - Using internal storage - - internal + + + + Mount USB Storage + + usb_mount - - - - - - - Using internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=mount + selectstorage + @@ -1539,191 +1383,133 @@ - Wipe Menu + Factory Reset: Wipes Data, Cache, and Dalvik + + + + + + + .android_secure + + + + + + + (not including internal storage) + + + + + + + SD-EXT + + + + + + Most of the time this is the only wipe that you need. - + - Cache + Advanced Wipe - - tw_back=wipe - tw_action=wipe - tw_action_param=/cache - tw_text1=Wipe Cache? - tw_action_text1=Wiping Cache... - tw_complete_text1=Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + advancedwipe + + + + - + - Dalvik Cache + Format Data - tw_back=wipe - tw_action=wipe - tw_action_param=dalvik - tw_text1=Wipe Dalvik-Cache? - tw_action_text1=Wiping Dalvik-Cache... - tw_complete_text1=Dalvik-Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action + formatdata - - - - - Factory Reset - + + + + Press back button to cancel. + + + + + tw_back=wipe tw_action=wipe tw_action_param=data - tw_text1=Factory Reset? - tw_text2=(Wipes Data and Cache) tw_action_text1=Factory Reset... tw_complete_text1=Factory Reset Complete - tw_slider_text=Swipe to Wipe - confirm_action + action_page - - - - - System - - - tw_back=wipe - tw_action=wipe - tw_action_param=/system - tw_text1=Wipe System? - tw_text2=This will wipe your ROM - tw_action_text1=Wiping System... - tw_complete_text1=System Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Swipe to Factory Reset - - - - - - External Storage - - - tw_back=wipe - tw_action=wipe - tw_action_param=EXTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe External Storage (SD card)? - tw_action_text1=Wiping External Storage... - tw_complete_text1=External Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + main - - - - - - Internal Storage - - - tw_back=wipe - tw_action=wipe - tw_action_param=INTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe Internal Storage? - tw_action_text1=Wiping Internal Storage... - tw_complete_text1=Internal Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + main - - - - - - - - - Format Data - - - tw_back=wipe - tw_action=wipe - tw_action_param=DATAMEDIA - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Format Data? (This wipes all media - tw_text2=including backups & removes encryption) - tw_text3=Most of the time you do not need to do this. - tw_action_text1=Formatting Data... - tw_complete_text1=Data Format Complete - tw_slider_text=Swipe to Format - tw_show_exclamation=1 - confirm_action - + + + + + + + + + +
+ + Select Partitions to Wipe: + + + + + +
- - - - - - Android Secure - + + + - tw_back=wipe + tw_back=advancedwipe tw_action=wipe - tw_action_param=ANDROIDSECURE - tw_text1=Wipe Android Secure? - tw_action_text1=Wiping Android Secure... - tw_complete_text1=Wipe Android Secure Complete - tw_slider_text=Swipe to Format - confirm_action + tw_action_param=LIST + tw_text1=Wipe Selected Partition(s)? + tw_action_text1=Wiping Partition(s)... + tw_complete_text1=Wipe Complete + action_page - - - - - - SD Ext - - - tw_back=wipe - tw_action=wipe - tw_action_param=/sd-ext - tw_text1=Wipe SD-Ext? - tw_action_text1=Wiping SD-Ext... - tw_complete_text1=SD-Ext Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Swipe to Wipe @@ -1733,182 +1519,160 @@ - main + wipe - + - Back Up Device + Format Data will wipe all of your apps, backups, pictures, - - Free Space: %tw_storage_free_size% MB + + videos, media, and removes encryption on internal storage. - - Backup Name: %tw_backup_name% + + This cannot be undone. Press back to cancel. - - - - System (%tw_backup_system_size% MB) - - + + + + Type yes to continue. - - + + + + - Data (%tw_backup_data_size% MB) - - + %tw_confirm_formatdata% + + + formatdata_confirm - - - - - Boot (%tw_backup_boot_size% MB) - - - + - - - - - Recovery (%tw_backup_recovery_size% MB) - - + + + main - - - - Cache (%tw_backup_cache_size% MB) - - + + + wipe - - - - - .android_secure (%tw_backup_andsec_size% MB) - - - + + - - - - - sd-ext (%tw_backup_sdext_size% MB) - - + + + + + tw_back=formatdata + tw_action=wipe + tw_action_param=DATAMEDIA + tw_action_text1=Formatting Data... + tw_complete_text1=Data Format Complete + action_page + - - - - - %tw_sp1_name% (%tw_backup_sp1_size% MB) - - + + + formatdata + - - - - - %tw_sp2_name% (%tw_backup_sp2_size% MB) - - - + + - - - - - %tw_sp3_name% (%tw_backup_sp3_size% MB) - - + + + + Back Up Device - - - - Enable Compression (Requires more time) - - + + + +
+ + Select Partitions to Back Up: + + + + + +
- - - - Skip MD5 generation on backups - - + + + + Backup Name: %tw_backup_name% - - - - - - - Using external SD - - external + + + + Refresh Sizes + + - - - - - - - Using external SD - - external + + + + Set Backup Name + + + tw_fileexists=0 + backupname1 + - + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=backup + selectstorage + + + + + - - - - - Using internal storage - - internal + Enable Compression (Requires more time) + + - + - - - - - Using internal storage - - internal + Skip MD5 generation on backups + + @@ -1926,27 +1690,6 @@ Swipe to Back Up - - - - - Refresh Sizes - - - - - - - - - Set Backup Name - - - tw_fileexists=0 - backupname1 - - - main @@ -2070,51 +1813,15 @@ - - - - - - - Using external SD - - external - - - - - - - - - - Using external SD - - external - - - - - - - - - - Using internal storage - - internal - - - - - - - - - - Using internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=restore + selectstorage + @@ -2144,19 +1851,6 @@ - - - - - - - - - Decrypt Data - - decrypt - - main @@ -2185,89 +1879,22 @@ Package Date: %tw_restore_file_date% - - - - System - - - - - - - - - Data - - - - - - - - - Boot - - - - - - - - - Cache - - - - - - - - - .android_secure - - - - - - - - - sd-ext - - - - - - - - - %tw_sp1_name% - - - - - - - - - %tw_sp2_name% - - - - - - - - - %tw_sp3_name% - - - + + + +
+ + Select Partitions to Restore: + + + + + +
- + Enable MD5 checking of backup files @@ -2289,7 +1916,7 @@ - + Delete Backup diff --git a/gui/devices/1024x768/res/images/exclamation200.png b/gui/devices/1024x768/res/images/exclamation200.png deleted file mode 100644 index 96258a1c3..000000000 Binary files a/gui/devices/1024x768/res/images/exclamation200.png and /dev/null differ diff --git a/gui/devices/1024x768/res/ui.xml b/gui/devices/1024x768/res/ui.xml index 88365e62e..d16056220 100644 --- a/gui/devices/1024x768/res/ui.xml +++ b/gui/devices/1024x768/res/ui.xml @@ -41,7 +41,6 @@ - @@ -180,8 +179,24 @@ - - + + + + + + + + + + + + + + + + + + @@ -507,51 +522,15 @@ - - - - - - - Using external SD - - external - - - - - - - - - - Using external SD - - external - - - - - - - - - - Using internal storage - - internal - - - - - - - - - - Using internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=install + selectstorage + @@ -856,15 +835,6 @@ - - - - - - - - - @@ -1263,220 +1233,92 @@ - + - - - - Mount Menu - - - - - - - Mount USB Storage - - usb_mount + + + +
+ + Select Storage: + + + + + +
- - - - - Mount System - - /system + + + main - - - - - Unmount System - - /system + + + + %tw_back% + - - - - - Mount Data - - /data - + + - - - - - Unmount Data - - /data - + + - - - - - Mount Cache - - /cache + + + + Mount Menu - - - - - Unmount Cache - - /cache + + + +
+ + Select Partitions to Mount: + + + + +
- - - - - - - Mount SDCard - - EXTERNAL - - - - - - - - - - Unmount SDCard - - EXTERNAL - - - - - - - - - - - Mount Internal Storage - - INTERNAL - - - - - - - - - - - Unmount Internal Storage - - INTERNAL - - - - - - - - - - Mount SD-Ext - - /sd-ext - - - - - - - Unmount SD-Ext - - /sd-ext - - - - - - - - - Mount Boot - - /boot - - - - - - - - - - Unmount Boot - - /boot - - - - - - - - - - Using external SD - - external - - - - - - - - + + - Using external SD - - external + + + Decrypt Data + + decrypt - - - - - - - Using internal storage - - internal + + + + Mount USB Storage + + usb_mount - - - - - - - Using internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=mount + selectstorage + @@ -1541,191 +1383,133 @@ - Wipe Menu + Factory Reset: Wipes Data, Cache, and Dalvik + + + + + + + .android_secure + + + + + + + (not including internal storage) + + + + + + + SD-EXT + + + + + + Most of the time this is the only wipe that you need. - + - Cache + Advanced Wipe - - tw_back=wipe - tw_action=wipe - tw_action_param=/cache - tw_text1=Wipe Cache? - tw_action_text1=Wiping Cache... - tw_complete_text1=Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + advancedwipe + + + + - + - Dalvik Cache + Format Data - tw_back=wipe - tw_action=wipe - tw_action_param=dalvik - tw_text1=Wipe Dalvik-Cache? - tw_action_text1=Wiping Dalvik-Cache... - tw_complete_text1=Dalvik-Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action + formatdata - - - - - Factory Reset - + + + + Press back button to cancel. + + + + + tw_back=wipe tw_action=wipe tw_action_param=data - tw_text1=Factory Reset? - tw_text2=(Wipes Data and Cache) tw_action_text1=Factory Reset... tw_complete_text1=Factory Reset Complete - tw_slider_text=Swipe to Wipe - confirm_action + action_page - - - - - System - - - tw_back=wipe - tw_action=wipe - tw_action_param=/system - tw_text1=Wipe System? - tw_text2=This will wipe your ROM - tw_action_text1=Wiping System... - tw_complete_text1=System Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Swipe to Factory Reset - - - - - - External Storage - - - tw_back=wipe - tw_action=wipe - tw_action_param=EXTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe External Storage (SD card)? - tw_action_text1=Wiping External Storage... - tw_complete_text1=External Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + main - - - - - - Internal Storage - - - tw_back=wipe - tw_action=wipe - tw_action_param=INTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe Internal Storage? - tw_action_text1=Wiping Internal Storage... - tw_complete_text1=Internal Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + main - - - - - - - - - Format Data - - - tw_back=wipe - tw_action=wipe - tw_action_param=DATAMEDIA - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Format Data? (This wipes all media - tw_text2=including backups & removes encryption) - tw_text3=Most of the time you do not need to do this. - tw_action_text1=Formatting Data... - tw_complete_text1=Data Format Complete - tw_slider_text=Swipe to Format - tw_show_exclamation=1 - confirm_action - + + + + + + + + + +
+ + Select Partitions to Wipe: + + + + + +
- - - - - - Android Secure - + + + - tw_back=wipe + tw_back=advancedwipe tw_action=wipe - tw_action_param=ANDROIDSECURE - tw_text1=Wipe Android Secure? - tw_action_text1=Wiping Android Secure... - tw_complete_text1=Wipe Android Secure Complete - tw_slider_text=Swipe to Format - confirm_action + tw_action_param=LIST + tw_text1=Wipe Selected Partition(s)? + tw_action_text1=Wiping Partition(s)... + tw_complete_text1=Wipe Complete + action_page - - - - - - SD Ext - - - tw_back=wipe - tw_action=wipe - tw_action_param=/sd-ext - tw_text1=Wipe SD-Ext? - tw_action_text1=Wiping SD-Ext... - tw_complete_text1=SD-Ext Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Swipe to Wipe @@ -1735,182 +1519,160 @@ - main + wipe - + - Back Up Device + Format Data will wipe all of your apps, backups, pictures, - - Free Space: %tw_storage_free_size% MB + + videos, media, and removes encryption on internal storage. - - Backup Name: %tw_backup_name% + + This cannot be undone. Press back to cancel. - - - - System (%tw_backup_system_size% MB) - - + + + + Type yes to continue. - - + + + + - Data (%tw_backup_data_size% MB) - - + %tw_confirm_formatdata% + + + formatdata_confirm - - - - - Boot (%tw_backup_boot_size% MB) - - - + - - - - - Recovery (%tw_backup_recovery_size% MB) - - + + + main - - - - Cache (%tw_backup_cache_size% MB) - - + + + wipe - - - - - .android_secure (%tw_backup_andsec_size% MB) - - - + + - - - - - sd-ext (%tw_backup_sdext_size% MB) - - + + + + + tw_back=formatdata + tw_action=wipe + tw_action_param=DATAMEDIA + tw_action_text1=Formatting Data... + tw_complete_text1=Data Format Complete + action_page + - - - - - %tw_sp1_name% (%tw_backup_sp1_size% MB) - - + + + formatdata + - - - - - %tw_sp2_name% (%tw_backup_sp2_size% MB) - - - + + - - - - - %tw_sp3_name% (%tw_backup_sp3_size% MB) - - + + + + Back Up Device - - - - Enable Compression (Requires more time) - - + + + +
+ + Select Partitions to Back Up: + + + + + +
- - - - Skip MD5 generation on backups - - + + + + Backup Name: %tw_backup_name% - - - - - - - Using external SD - - external + + + + Refresh Sizes + + - - - - - - - Using external SD - - external + + + + Set Backup Name + + + tw_fileexists=0 + backupname1 + - + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=backup + selectstorage + + + + + - - - - - Using internal storage - - internal + Enable Compression (Requires more time) + + - + - - - - - Using internal storage - - internal + Skip MD5 generation on backups + + @@ -1928,27 +1690,6 @@ Swipe to Back Up - - - - - Refresh Sizes - - - - - - - - - Set Backup Name - - - tw_fileexists=0 - backupname1 - - - main @@ -2072,51 +1813,15 @@ - - - - - - - Using external SD - - external - - - - - - - - - - Using external SD - - external - - - - - - - - - - Using internal storage - - internal - - - - - - - - - - Using internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=restore + selectstorage + @@ -2146,19 +1851,6 @@ - - - - - - - - - Decrypt Data - - decrypt - - main @@ -2187,89 +1879,22 @@ Package Date: %tw_restore_file_date% - - - - System - - - - - - - - - Data - - - - - - - - - Boot - - - - - - - - - Cache - - - - - - - - - .android_secure - - - - - - - - - sd-ext - - - - - - - - - %tw_sp1_name% - - - - - - - - - %tw_sp2_name% - - - - - - - - - %tw_sp3_name% - - - + + + +
+ + Select Partitions to Restore: + + + + + +
- + Enable MD5 checking of backup files @@ -2291,7 +1916,7 @@ - + Delete Backup diff --git a/gui/devices/1080x1920/res/fonts/Roboto-Condensed-40.dat b/gui/devices/1080x1920/res/fonts/Roboto-Condensed-40.dat new file mode 100644 index 000000000..ff23add82 Binary files /dev/null and b/gui/devices/1080x1920/res/fonts/Roboto-Condensed-40.dat differ diff --git a/gui/devices/1080x1920/res/images/back-icon.png b/gui/devices/1080x1920/res/images/back-icon.png new file mode 100644 index 000000000..85c6a5d68 Binary files /dev/null and b/gui/devices/1080x1920/res/images/back-icon.png differ diff --git a/gui/devices/1080x1920/res/images/checkbox_checked.png b/gui/devices/1080x1920/res/images/checkbox_checked.png new file mode 100644 index 000000000..65d0b34da Binary files /dev/null and b/gui/devices/1080x1920/res/images/checkbox_checked.png differ diff --git a/gui/devices/1080x1920/res/images/checkbox_empty.png b/gui/devices/1080x1920/res/images/checkbox_empty.png new file mode 100644 index 000000000..89b4c9627 Binary files /dev/null and b/gui/devices/1080x1920/res/images/checkbox_empty.png differ diff --git a/gui/devices/1080x1920/res/images/curtain.jpg b/gui/devices/1080x1920/res/images/curtain.jpg new file mode 100644 index 000000000..269941d5e Binary files /dev/null and b/gui/devices/1080x1920/res/images/curtain.jpg differ diff --git a/gui/devices/1080x1920/res/images/file.png b/gui/devices/1080x1920/res/images/file.png new file mode 100644 index 000000000..a69b61996 Binary files /dev/null and b/gui/devices/1080x1920/res/images/file.png differ diff --git a/gui/devices/1080x1920/res/images/folder.png b/gui/devices/1080x1920/res/images/folder.png new file mode 100644 index 000000000..fbea7a970 Binary files /dev/null and b/gui/devices/1080x1920/res/images/folder.png differ diff --git a/gui/devices/1080x1920/res/images/home-icon.png b/gui/devices/1080x1920/res/images/home-icon.png new file mode 100644 index 000000000..d6bc73d82 Binary files /dev/null and b/gui/devices/1080x1920/res/images/home-icon.png differ diff --git a/gui/devices/1080x1920/res/images/indeterminate001.png b/gui/devices/1080x1920/res/images/indeterminate001.png new file mode 100644 index 000000000..a205e91aa Binary files /dev/null and b/gui/devices/1080x1920/res/images/indeterminate001.png differ diff --git a/gui/devices/1080x1920/res/images/indeterminate002.png b/gui/devices/1080x1920/res/images/indeterminate002.png new file mode 100644 index 000000000..f777408be Binary files /dev/null and b/gui/devices/1080x1920/res/images/indeterminate002.png differ diff --git a/gui/devices/1080x1920/res/images/indeterminate003.png b/gui/devices/1080x1920/res/images/indeterminate003.png new file mode 100644 index 000000000..cbb597482 Binary files /dev/null and b/gui/devices/1080x1920/res/images/indeterminate003.png differ diff --git a/gui/devices/1080x1920/res/images/indeterminate004.png b/gui/devices/1080x1920/res/images/indeterminate004.png new file mode 100644 index 000000000..5ff77341d Binary files /dev/null and b/gui/devices/1080x1920/res/images/indeterminate004.png differ diff --git a/gui/devices/1080x1920/res/images/indeterminate005.png b/gui/devices/1080x1920/res/images/indeterminate005.png new file mode 100644 index 000000000..7cc9abb4f Binary files /dev/null and b/gui/devices/1080x1920/res/images/indeterminate005.png differ diff --git a/gui/devices/1080x1920/res/images/indeterminate006.png b/gui/devices/1080x1920/res/images/indeterminate006.png new file mode 100644 index 000000000..9eed17600 Binary files /dev/null and b/gui/devices/1080x1920/res/images/indeterminate006.png differ diff --git a/gui/devices/1080x1920/res/images/keyboard1.png b/gui/devices/1080x1920/res/images/keyboard1.png new file mode 100644 index 000000000..79a8b69cb Binary files /dev/null and b/gui/devices/1080x1920/res/images/keyboard1.png differ diff --git a/gui/devices/1080x1920/res/images/keyboard2.png b/gui/devices/1080x1920/res/images/keyboard2.png new file mode 100644 index 000000000..63a5b6a19 Binary files /dev/null and b/gui/devices/1080x1920/res/images/keyboard2.png differ diff --git a/gui/devices/1080x1920/res/images/keyboard3.png b/gui/devices/1080x1920/res/images/keyboard3.png new file mode 100644 index 000000000..a646c7557 Binary files /dev/null and b/gui/devices/1080x1920/res/images/keyboard3.png differ diff --git a/gui/devices/1080x1920/res/images/keyboard4.png b/gui/devices/1080x1920/res/images/keyboard4.png new file mode 100644 index 000000000..3b2905adb Binary files /dev/null and b/gui/devices/1080x1920/res/images/keyboard4.png differ diff --git a/gui/devices/1080x1920/res/images/medium-button.png b/gui/devices/1080x1920/res/images/medium-button.png new file mode 100644 index 000000000..a3bf30d58 Binary files /dev/null and b/gui/devices/1080x1920/res/images/medium-button.png differ diff --git a/gui/devices/1080x1920/res/images/menu-button.png b/gui/devices/1080x1920/res/images/menu-button.png new file mode 100644 index 000000000..36d3f0127 Binary files /dev/null and b/gui/devices/1080x1920/res/images/menu-button.png differ diff --git a/gui/devices/1080x1920/res/images/minus-button.png b/gui/devices/1080x1920/res/images/minus-button.png new file mode 100644 index 000000000..e2edbe45f Binary files /dev/null and b/gui/devices/1080x1920/res/images/minus-button.png differ diff --git a/gui/devices/1080x1920/res/images/plus-button.png b/gui/devices/1080x1920/res/images/plus-button.png new file mode 100644 index 000000000..b67d9b928 Binary files /dev/null and b/gui/devices/1080x1920/res/images/plus-button.png differ diff --git a/gui/devices/1080x1920/res/images/progress_empty.png b/gui/devices/1080x1920/res/images/progress_empty.png new file mode 100644 index 000000000..d4ea0c2fe Binary files /dev/null and b/gui/devices/1080x1920/res/images/progress_empty.png differ diff --git a/gui/devices/1080x1920/res/images/progress_fill.png b/gui/devices/1080x1920/res/images/progress_fill.png new file mode 100644 index 000000000..836e437ae Binary files /dev/null and b/gui/devices/1080x1920/res/images/progress_fill.png differ diff --git a/gui/devices/1080x1920/res/images/radio_empty.png b/gui/devices/1080x1920/res/images/radio_empty.png new file mode 100644 index 000000000..9c2c66bb0 Binary files /dev/null and b/gui/devices/1080x1920/res/images/radio_empty.png differ diff --git a/gui/devices/1080x1920/res/images/radio_selected.png b/gui/devices/1080x1920/res/images/radio_selected.png new file mode 100644 index 000000000..8d05b9d48 Binary files /dev/null and b/gui/devices/1080x1920/res/images/radio_selected.png differ diff --git a/gui/devices/1080x1920/res/images/slideout.png b/gui/devices/1080x1920/res/images/slideout.png new file mode 100644 index 000000000..56a9ac2aa Binary files /dev/null and b/gui/devices/1080x1920/res/images/slideout.png differ diff --git a/gui/devices/1080x1920/res/images/slider-touch.png b/gui/devices/1080x1920/res/images/slider-touch.png new file mode 100644 index 000000000..b3365afee Binary files /dev/null and b/gui/devices/1080x1920/res/images/slider-touch.png differ diff --git a/gui/devices/1080x1920/res/images/slider-used.png b/gui/devices/1080x1920/res/images/slider-used.png new file mode 100644 index 000000000..229d9109e Binary files /dev/null and b/gui/devices/1080x1920/res/images/slider-used.png differ diff --git a/gui/devices/1080x1920/res/images/slider.png b/gui/devices/1080x1920/res/images/slider.png new file mode 100644 index 000000000..1e034a621 Binary files /dev/null and b/gui/devices/1080x1920/res/images/slider.png differ diff --git a/gui/devices/1080x1920/res/images/sort-button.png b/gui/devices/1080x1920/res/images/sort-button.png new file mode 100644 index 000000000..c6783a15c Binary files /dev/null and b/gui/devices/1080x1920/res/images/sort-button.png differ diff --git a/gui/devices/1080x1920/res/images/top-bar.jpg b/gui/devices/1080x1920/res/images/top-bar.jpg new file mode 100644 index 000000000..5277f597b Binary files /dev/null and b/gui/devices/1080x1920/res/images/top-bar.jpg differ diff --git a/gui/devices/1080x1920/res/images/unlock.png b/gui/devices/1080x1920/res/images/unlock.png new file mode 100644 index 000000000..dc3894b76 Binary files /dev/null and b/gui/devices/1080x1920/res/images/unlock.png differ diff --git a/gui/devices/1080x1920/res/ui.xml b/gui/devices/1080x1920/res/ui.xml new file mode 100644 index 000000000..93d539ca0 --- /dev/null +++ b/gui/devices/1080x1920/res/ui.xml @@ -0,0 +1,3626 @@ + + + +
+ + TeamWin + Backup Naowz + Default basic theme + preview.jpg +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + tw_clear_destination=main2 + clear_vars + + + + + + + + + + + + Install + + + + install + + + + + + + + Wipe + + wipe + + + + + + + Backup + + backup + + + + + + + Restore + + restore + + + + + + + Mount + + mount + + + + + + + Settings + + settings + + + + + + + + Advanced + + advanced + + + + + + + Reboot + + reboot + + + + + + + + + + + + Select Zip to Install + + + + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=install + selectstorage + + + + + + +
+ + %tw_zip_location% + + + + + + + + + +
+ + + + + + + + flash_confirm + + + + + + main + + + + + main + + + + + + + + + + + + This operation may install incompatible + + + + + + software and render your device unusable. + + + + + + Folder: + + + + + + %tw_zip_location% + + + + + + File to flash: + + + + + + %tw_file% + + + + + + Press back to cancel adding this zip. + + + + + + Zip file signature verification. + + + + + + + + + Inject TWRP after install. + + + + + + + + File %tw_zip_queue_count% of max of 10 + + + + + + flash_zip + + + + + + Swipe to Confirm Flash + + + + + + + + Add More Zips + + install + + + + + + + Clear Zip Queue + + + + install + + + + + + + + install + + + + + + main + + + + + + + + + + + + + + + + + + Flashing file %tw_zip_index% of %tw_zip_queue_count% + + + + + + %tw_filename% + + + + + + + flash_done + + + + + + + + + + Zip Install Complete + + + + + + + + + + + + + Wipe cache/dalvik + + + tw_back=flash_done + tw_action=wipe + tw_action_param=/cache + tw_has_action2=1 + tw_action2=wipe + tw_action2_param=dalvik + tw_text1=Wipe Cache & Dalvik? + tw_action_text1=Wiping Cache & Dalvik... + tw_complete_text1=Cache & Dalvik Wipe Complete + tw_slider_text=Swipe to Wipe + confirm_action + + + + + + + + Reboot System + + + tw_back=main2 + tw_action=reboot + tw_action_param=system + tw_has_action2=0 + tw_text1=No OS Installed! Are you + tw_text2=sure you wish to reboot? + tw_text3= + tw_text4= + tw_action_text1=Rebooting... + tw_action_text2= + tw_complete_text1=Rebooting... + tw_slider_text=Swipe to Reboot + rebootcheck + + + + + + + + Home + + + tw_clear_destination=main2 + clear_vars + + + + + + + + Failed + + + + + + + Successful + + + + + + tw_clear_destination=install + clear_vars + + + + + + + tw_clear_destination=main2 + clear_vars + + + + + + + tw_operation_state=0 + tw_text1= + tw_text2= + tw_text3= + tw_text4= + tw_action_text1= + tw_action_text2= + tw_action_param= + tw_has_action2=0 + tw_action2= + tw_action2_param= + tw_has_cancel=0 + tw_cancel_action= + tw_cancel_param= + tw_show_exclamation=0 + tw_show_reboot=0 + %tw_clear_destination% + + + + + + + + + + %tw_text1% + + + + + + %tw_text2% + + + + + + %tw_text3% + + + + + + %tw_text4% + + + + + + Press back button to cancel. + + + + + + action_page + + + + + + %tw_slider_text% + + + + + + tw_clear_destination=%tw_back% + clear_vars + + + + + + main + + + + + + + + + + + + %tw_action_text1% + + + + + + %tw_action_text2% + + + + + + + + + + Cancel + + %tw_cancel_param% + + + + + + + + action_complete + + + + + + + %tw_action_param% + + + + + + + %tw_action_param% + %tw_action2_param% + + + + + + + + + + + %tw_action_text1% + + + + + + %tw_action_text2% + + + + + + + + + + tw_page_done=1 + + + + + + + %tw_action_param% + + + + + + + %tw_action_param% + %tw_action2_param% + + + + + + + + + + + %tw_complete_text1% + + + + + + + Failed + + + + + + + Successful + + + + + + + + + + Back + + + tw_clear_destination=%tw_back% + clear_vars + + + + + + + + + Reboot System + + + tw_back=main2 + tw_action=reboot + tw_action_param=system + tw_has_action2=0 + tw_text1=No OS Installed! Are you + tw_text2=sure you wish to reboot? + tw_text3= + tw_text4= + tw_action_text1=Rebooting... + tw_action_text2= + tw_complete_text1=Rebooting... + tw_slider_text=Swipe to Reboot + rebootcheck + + + + + + + tw_clear_destination=main2 + clear_vars + + + + + + + tw_clear_destination=%tw_back% + clear_vars + + + + + + + %tw_filecheck% + + + + + + + + + tw_fileexists=1 + %tw_existpage% + + + + + + + + + + tw_fileexists=0 + %tw_notexistpage% + + + + + + + + %tw_action_param% + + + + + confirm_action + + + + + + + + + + Factory Reset + + + + + + Wipes Data, Cache, and Dalvik + + + + + + + .android_secure + + + + + + + (not including internal storage) + + + + + + + SD-EXT + + + + + + Most of the time this is + + + + + + the only wipe that you need. + + + + + + Press back button to cancel. + + + + + + + Advanced Wipe + + advancedwipe + + + + + + + + + + + Format Data + + + formatdata + + + + + + + + tw_back=wipe + tw_action=wipe + tw_action_param=data + tw_action_text1=Factory Reset... + tw_complete_text1=Factory Reset Complete + action_page + + + + + + + Swipe to Factory Reset + + + + + main + + + + + main + + + + + + + + + + + + Wipe Menu + + + + + +
+ + Select Partitions to Wipe: + + + + + + +
+ + + + + + tw_back=advancedwipe + tw_action=wipe + tw_action_param=LIST + tw_text1=Wipe Selected Partition(s)? + tw_action_text1=Wiping Partition(s)... + tw_complete_text1=Wipe Complete + action_page + + + + + + + Swipe to Wipe + + + + + main + + + + + wipe + + + + + + + + + + + + Format Data will wipe all of your apps, + + + + + + backups, pictures, videos, media, and + + + + + + removes encryption on internal storage. + + + + + + This cannot be undone. Press back to cancel. + + + + + + Type yes to continue. + + + + + + + + %tw_confirm_formatdata% + + + formatdata_confirm + + + + + + + main + + + + + wipe + + + + + + + + + + tw_back=formatdata + tw_action=wipe + tw_action_param=DATAMEDIA + tw_action_text1=Formatting Data... + tw_complete_text1=Data Format Complete + action_page + + + + + + formatdata + + + + + + + + + + Backup Name: %tw_backup_name% + + + + + +
+ + Select Partitions to Back Up: + + + + + + +
+ + + + + + + Set Backup Name + + tw_fileexists=0 + backupname1 + + + + + + + + + Refresh Sizes + + + + + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=backup + selectstorage + + + + + + + Enable compression. + + + + + + + + Skip MD5 generation during backup. + + + + + + + + backup_run + + + + + + Swipe to Back Up + + + + + main + + + + + main + + + + + + + + + tw_backup_name= + + + + backupname2 + + + + + + + + + + Please Enter a Backup Name + + + + + + + + %tw_backup_name% + + + + tw_filecheck=%tw_backups_folder%/%tw_backup_name% + tw_existpage=backupname2 + tw_notexistpage=backup + filecheck + + + + + + + + A backup with that name already exists! + + + + + + + Cancel + + + tw_backup_name=(Current Date) + backup + + + + + + + + + tw_backup_name=(Current Date) + main + + + + + + + tw_backup_name=(Current Date) + backup + + + + + + + + + + + + + %tw_operation% %tw_partition% + + + + + + + + backup + + + + + + tw_back=backup + tw_complete_text1=Backup Complete + tw_show_reboot=1 + action_complete + + + + + + + + + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=restore + selectstorage + + + + + + +
+ + Select Package to Restore: + + + + + + + + + +
+ + + + + + + + restore_select + + + + + + main + + + + + main + + + + + + + + + + + +
+ + Restoring: %tw_restore_name% + + + + + + +
+ + + + + + + Rename Backup + + tw_backup_rename= + tw_fileexists=0 + renamebackup + + + + + + + + + Delete Backup + + tw_back=restore + tw_action=cmd + tw_action_param=cd %tw_backups_folder% && rm -rf "%tw_restore_name%" + tw_text1=Delete Backup? %tw_restore_name% + tw_text2=This cannot be undone! + tw_action_text1=Deleting Backup... + tw_complete_text1=Backup Delete Complete + tw_slider_text=Swipe to Delete + confirm_action + + + + + + + Enable MD5 verification of backup files. + + + + + + + + Package Date: %tw_restore_file_date% + + + + + + restore_run + + + + + + Swipe to Restore + + + + + main + + + + + restore + + + + + + + + + + + + Please Enter a New Backup Name + + + + + + + + %tw_backup_rename% + + + + tw_back=restore + tw_action=cmd + tw_action_param=cd %tw_backups_folder% && mv "%tw_restore_name%" "%tw_backup_rename%" + tw_text1=Rename Backup? + tw_text2=This cannot be undone! + tw_action_text1=Renaming Backup... + tw_complete_text1=Backup Rename Complete + tw_slider_text=Swipe to Rename + tw_filecheck=%tw_backups_folder%/%tw_backup_rename% + tw_existpage=renamebackup + tw_notexistpage=confirm_action + filecheck + + + + + + + + A backup with that name already exists! + + + + + + + Cancel + + restore_select + + + + + + + main + + + + + restore_select + + + + + + + + + + + + %tw_operation% %tw_partition% + + + + + + + + + + tw_back=restore_select + tw_complete_text1=Restore Complete + tw_show_reboot=1 + action_complete + + + + + restore + + + + + + + + + +
+ + Select Storage: + + + + + + +
+ + + + main + + + + + + %tw_back% + + + + + + + + + + + + +
+ + Select Partitions to Mount: + + + + + +
+ + + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=mount + selectstorage + + + + + + + + + Mount USB Storage + + usb_mount + + + + + + + + + + + Decrypt Data + + decrypt + + + + + main + + + + + main + + + + + + + + + + + + USB Storage Mounted + + + + + + Be sure to safely remove your device + + + + + + from your computer before unmounting! + + + + + + + Unmount + + usb_umount + + + + usb + + + + + + + + usb + + + + mount + + + + + + + + + + Reboot Menu + + + + + + + + System + + + tw_back=reboot + tw_action=reboot + tw_action_param=system + tw_has_action2=0 + tw_text1=No OS Installed! Are you + tw_text2=sure you wish to reboot? + tw_action_text1=Rebooting... + tw_complete_text1=Rebooting... + tw_slider_text=Swipe to Reboot + rebootcheck + + + + + + + + + Power Off + + + tw_back=reboot + tw_action=reboot + tw_action_param=poweroff + tw_has_action2=0 + tw_text1=No OS Installed! Are you + tw_text2=sure you wish to power off? + tw_action_text1=Turning Off... + tw_complete_text1=Turning Off... + tw_slider_text=Swipe to Power Off + rebootcheck + + + + + + + + + Recovery + + + tw_back=reboot + tw_action=reboot + tw_action_param=recovery + tw_has_action2=0 + tw_text1=No OS Installed! Are you + tw_text2=sure you wish to reboot? + tw_action_text1=Rebooting... + tw_complete_text1=Rebooting... + tw_slider_text=Swipe to Reboot + rebootcheck + + + + + + + + + Bootloader + + + tw_back=reboot + tw_action=reboot + tw_action_param=bootloader + tw_has_action2=0 + tw_text1=No OS Installed! Are you + tw_text2=sure you wish to reboot? + tw_action_text1=Rebooting... + tw_complete_text1=Rebooting... + tw_slider_text=Swipe to Reboot + rebootcheck + + + + + + + + + Download + + + tw_back=reboot + tw_action=reboot + tw_action_param=download + tw_has_action2=0 + tw_text1=No OS Installed! Are you + tw_text2=sure you wish to reboot? + tw_action_text1=Rebooting... + tw_complete_text1=Rebooting... + tw_slider_text=Swipe to Reboot + rebootcheck + + + + + + main + + + + + main + + + + + + + + + + + + Settings + + + + + + Zip file signature verification. + + + + + + + + Use rm -rf instead of formatting. + + + + + + + + Skip MD5 generation during backup. + + + + + + + + Enable MD5 verification of backup files. + + + + + + + + Use Military Time. + + + + + + + + Simulate actions for theme testing. + + + + + + + + + Simulate failure for actions. + + + + + + + + + Time Zone + + timezone + + + + + + + Screen + + screen + + + + + + Restore Defaults + + + + + + + main + + + + + main + + + + + + + + + + + +
+ + Select Time Zone: + + + + + + BST11;BDT + HST10;HDT + AST9;ADT + PST8;PDT + MST7;MDT + CST6;CDT + EST5;EDT + AST4;ADT + GRNLNDST3;GRNLNDDT + FALKST2;FALKDT + AZOREST1;AZOREDT + GMT0;BST + NFT-1;DFT + WET-2;WET + SAUST-3;SAUDT + WST-4;WDT + PAKST-5;PAKDT + TASHST-6;TASHDT + THAIST-7;THAIDT + TAIST-8;TAIDT + JST-9;JSTDT + EET-10;EETDT + MET-11;METDT + NZST-12;NZDT +
+ + + + + Do you use daylight savings time (DST)? + + + + + + + + Offset (usually 0): %tw_time_zone_guioffset% + + + + + + + None + + tw_time_zone_guioffset=0 + + + + + + + 15 + + tw_time_zone_guioffset=15 + + + + + + + 30 + + tw_time_zone_guioffset=30 + + + + + + + 45 + + tw_time_zone_guioffset=45 + + + + + + + Set Time Zone + + + + + + + + Current Time Zone: %tw_time_zone% + + + + + main + + + + + settings + + + + + + + + + + + + Screen Settings + + + + + + Screen Timeout: %tw_screen_timeout_secs% seconds + + + + + + None + + tw_screen_timeout_secs=0 + + + + + + 60 + + tw_screen_timeout_secs=60 + + + + + + 120 + + tw_screen_timeout_secs=120 + + + + + + 180 + + tw_screen_timeout_secs=180 + + + + + + + Brightness: %tw_brightness_display% + + + + + + + 25% + + + echo %tw_brightness_25% > "%tw_brightness_file%" + tw_brightness_display=25% + tw_brightness=%tw_brightness_25% + + + + + + + + 50% + + + echo %tw_brightness_50% > "%tw_brightness_file%" + tw_brightness_display=50% + tw_brightness=%tw_brightness_50% + + + + + + + + 75% + + + echo %tw_brightness_75% > "%tw_brightness_file%" + tw_brightness_display=75% + tw_brightness=%tw_brightness_75% + + + + + + + + 100% + + + echo %tw_brightness_100% > "%tw_brightness_file%" + tw_brightness_display=100% + tw_brightness=%tw_brightness_100% + + + + + + main + + + + + settings + + + + + + + + + + + + Advanced + + + + + + + Copy Log to SD + + + tw_back=advanced + tw_action=copylog + tw_text1=Copy Log to SD Card? + tw_action_text1=Copying Log to SD Card... + tw_complete_text1=Log Copy Complete + tw_slider_text=Swipe to Confirm + confirm_action + + + + + + + + Fix Permissions + + + tw_back=advanced + tw_action=fixpermissions + tw_text1=Fix Permissions? + tw_action_text1=Fixing Permissions... + tw_complete_text1=Fix Permissions Complete + tw_slider_text=Swipe to Confirm + tw_show_reboot=1 + confirm_action + + + + + + + + + Partition SD Card + + partsdcard + + + + + + + File Manager + + filemanagerlist + + + + + + + Terminal Command + + terminalfolder + + + + + + + Reload Theme + + + + + + + + + ADB Sideload + + sideload + + + + + + + + HTC Dumlock + + htcdumlock + + + + + + + + Re-Inject TWRP + + + tw_back=advanced + tw_action=reinjecttwrp + tw_text1=Re-Inject TWRP? + tw_action_text1=Re-Injecting TWRP... + tw_complete_text1=TWRP Injection Complete + tw_slider_text=Swipe to Confirm + confirm_action + + + + + + main + + + + + main + + + + + + + + + + + + Partition SD Card + + + + + + + + + tw_sdext_size-128 + + + + + + + + + tw_sdext_size+128 + + + + + + EXT Size: %tw_sdext_size% + + + + + + + + + tw_swap_size-32 + + + + + + + + + tw_swap_size+32 + + + + + + Swap Size: %tw_swap_size% + + + + + + File system: %tw_sdpart_file_system% + + + + + + + EXT3 + + tw_sdpart_file_system=ext3 + + + + + + + + EXT4 + + tw_sdpart_file_system=ext4 + + + + + + You will lose all files on your SD card! + + + + + + This action cannot be undone! + + + + + + partsdcardaction + + tw_back=partsdcard + tw_action=partitionsd + tw_has_action2=1 + tw_action2=set + tw_action2_param=tw_zip_location=/sdcard + tw_action_text1=Partitioning SD Card... + tw_action_text2=This will take a few minutes. + tw_complete_text1=Partitioning Complete + action_page + + + + + + + Swipe to Partition + + + + + main + + + + + advanced + + + + + + + + + + + + HTC Dumlock + + + + + + + + Restore Original Boot + + + tw_back=htcdumlock + tw_action=htcdumlockrestoreboot + tw_text1=Restore original boot image? + tw_action_text1=Restoring Original Boot... + tw_complete_text1=Restore Original Boot Complete + tw_slider_text=Swipe to Confirm + confirm_action + + + + + + + + + Reflash Recovery + + + tw_back=htcdumlock + tw_action=htcdumlockreflashrecovery + tw_text1=Reflash recovery to boot? + tw_action_text1=Flashing recovery to boot... + tw_complete_text1=Recovery Flash to Boot Complete + tw_slider_text=Swipe to Confirm + confirm_action + + + + + + + + + Install HTC Dumlock + + + tw_back=htcdumlock + tw_action=installhtcdumlock + tw_text1=Install HTC dumlock files to ROM? + tw_action_text1=Installing HTC Dumlock... + tw_complete_text1=HTC Dumlock Install Complete + tw_slider_text=Swipe to Confirm + confirm_action + + + + + + main + + + + + advanced + + + + + + + + + + + + + + + + + + + + + + + Swipe to Unlock + + + + + + + + + + File Manager: Select a File or Folder + + + + + +
+ + %tw_file_location1% + + + + + + + + + +
+ + + + + + tw_fm_type=File + tw_fm_isfolder=0 + + + + + + main + + + + + advanced + + + + + + filemanageroptions + + + + + + + + Select + + + tw_filename1=tw_file_location1 + tw_fm_isfolder=1 + tw_fm_type=Folder + filemanageroptions + + + + + + + + + + + + + %tw_fm_type% Selected: + + + + + + %tw_filename1% + + + + + + + + Copy File + + + tw_filemanager_command=cp + tw_fm_text1=Copying + choosedestinationfolder + + + + + + + + + Copy Folder + + + tw_filemanager_command=cd "%tw_file_location1%" && cd .. && cp -R + tw_fm_text1=Copying + choosedestinationfolder + + + + + + + + Move + + + tw_filemanager_command=mv + tw_fm_text1=Moving + choosedestinationfolder + + + + + + + + chmod 755 + + + tw_filemanager_command=chmod 755 + tw_fm_text1=chmod 755 + tw_fm_text2= + tw_fm_text3= + tw_include_text3=0 + tw_back=filemanageroptions + filemanagerconfirm + + + + + + + + chmod + + + tw_filemanager_rename=0000 + tw_fm_text2= + tw_fm_text3= + tw_include_text3=0 + tw_back=filemanageroptions + filemanagerchmod + + + + + + + + Delete + + + tw_filemanager_command=rm -rf + tw_fm_text1=Deleting + tw_fm_text2= + tw_fm_text3= + tw_include_text3=0 + tw_back=filemanageroptions + filemanagerconfirm + + + + + + + + + Rename File + + + tw_filemanager_rename=tw_selection1 + tw_fm_text1=Renaming + tw_filemanager_command=mv + filemanagerrenamefile + + + + + + + + + Rename Folder + + + tw_filemanager_rename=tw_selection1 + tw_fm_text1=Renaming + tw_filemanager_command=cd "%tw_file_location1%" && cd .. && mv + filemanagerrenamefolder + + + + + + main + + + + + filemanagerlist + + + + + + + + + + + + Browse to Destination Folder & Press Select + + + + + +
+ + %tw_file_location2% + + + + + + + + + +
+ + + + + + main + + + + + filemanageroptions + + + + + + + Select + + + tw_fm_text2=to + tw_fm_text3=%tw_file_location2% + tw_include_text3=1 + tw_back=filemanageroptions + filemanagerconfirm + + + + + + + + + + + + + Please Enter a New %tw_fm_type% Name + + + + + + + + %tw_filemanager_rename% + + + + tw_fm_text2=to + tw_fm_text3="%tw_file_location1%/%tw_filemanager_rename%" + tw_include_text3=1 + tw_back=filemanageroptions + filemanagerconfirm + + + + + + + + Cancel + + filemanageroptions + + + + + + + main + + + + + filemanageroptions + + + + + + + + + + + + Please Enter a New %tw_fm_type% Name + + + + + + + + %tw_filemanager_rename% + + + + tw_fm_text2=to + tw_fm_text3=%tw_filemanager_rename% + tw_include_text3=1 + tw_back=filemanageroptions + filemanagerconfirm + + + + + + + + Cancel + + filemanageroptions + + + + + + + main + + + + + filemanageroptions + + + + + + + + + + + + Please Enter New Permissions + + + + + + + + %tw_filemanager_rename% + + + + tw_filemanager_command=chmod %tw_filemanager_rename% + tw_fm_text1=chmod %tw_filemanager_rename% + tw_back=filemanageroptions + filemanagerconfirm + + + + + + + + Cancel + + filemanageroptions + + + + + + + main + + + + + filemanageroptions + + + + + + + + + + + + %tw_fm_text1% + + + + + + %tw_filename1% + + + + + + %tw_fm_text2% + + + + + + %tw_fm_text3% + + + + + + Press back button to cancel. + + + + + + filemanageracction + + + + + + Swipe to Confirm + + + + + %tw_back% + + + + + main + + + + + + + + + + + + + %tw_fm_text1% + + + + + + + + + + + + + tw_back=filemanagerlist + tw_complete_text1=File Operation Complete + action_complete + + + + + + + + + + tw_complete_text1=File Operation Complete + action_complete + + + + + + + %tw_filemanager_command% "%tw_filename1%" + + + + + + + %tw_filemanager_command% "%tw_filename1%" "%tw_fm_text3%" + + + + + + + + + + + Please Enter Your Password + + + + + + + + %tw_crypto_display% + + + + trydecrypt + + + + + + + + Password Failed, Please Try Again + + + + + + + Cancel + + + tw_page_done=1 + main + + + + + + + + + + + + + + + Trying Decryption with Your Password + + + + + + + + + + + + + + + + + tw_password_fail=1 + decrypt + + + + + + + + + + tw_page_done=1 + main + + + + + + + + + + + Browse to Starting Folder + + + + + +
+ + %tw_terminal_location% + + + + + + + + + +
+ + + + + + main + + + + + advanced + + + + + + + Select + + + terminalcommand + + + + + + + + + + + + + + + + + + + Starting Path: %tw_terminal_location% + + + + + + + + + %tw_terminal_command% + + + %tw_terminal_command% + + + + + + + + KILL + + + + + + + + + main + + + + + terminalfolder + + + + + + + + + + ADB Sideload + + + + + + Wipe Dalvik Cache. + + + + + + + + Wipe Cache. + + + + + + + + + tw_back=advanced + tw_action=adbsideload + tw_action_text1=ADB Sideload + tw_action_text2=Usage: adb sideload filename.zip + tw_complete_text1=ADB Sideload Complete + tw_has_cancel=1 + tw_show_reboot=1 + tw_cancel_action=adbsideloadcancel + action_page + + + + + + + Swipe to Start Sideload + + + + + main + + + + + advanced + + + + + + + + + + + + Install SuperSU? + + + + + + Your device does not appear to be rooted. + + + + + + Install SuperSU now? + + + + + + This will root your device. + + + + + + + Do Not Install + + tw_page_done=1 + + + + + + + tw_action=installsu + tw_action_text1=Installing SuperSU + tw_action_text2= + singleaction_page + + + + + + + Swipe to Install + + + + + + + + + + Fix Superuser Permissions? + + + + + + Root permissions appear to be lost. + + + + + + Fix root permissions now? + + + + + + (Fixes permissions on su binary & app) + + + + + + + Do Not Fix + + tw_page_done=1 + + + + + + + tw_action=fixsu + tw_action_text1=Fixing Root Permissions + tw_action_text2= + singleaction_page + + + + + + + Swipe to Fix Root + + + + diff --git a/gui/devices/1280x800/res/images/exclamation200.png b/gui/devices/1280x800/res/images/exclamation200.png deleted file mode 100644 index 96258a1c3..000000000 Binary files a/gui/devices/1280x800/res/images/exclamation200.png and /dev/null differ diff --git a/gui/devices/1280x800/res/ui.xml b/gui/devices/1280x800/res/ui.xml index ef0b432ce..5ba47009e 100644 --- a/gui/devices/1280x800/res/ui.xml +++ b/gui/devices/1280x800/res/ui.xml @@ -41,7 +41,6 @@ - @@ -141,7 +140,7 @@ - + @@ -180,8 +179,24 @@ - - + + + + + + + + + + + + + + + + + + @@ -507,51 +522,15 @@ - - - - - - - Using external SD - - external - - - - - - - - - - Using external SD - - external - - - - - - - - - - Using internal storage - - internal - - - - - - - - - - Using internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=install + selectstorage + @@ -856,15 +835,6 @@ - - - - - - - - - @@ -1263,220 +1233,92 @@ - + - - - - Mount Menu - - - - - - - Mount USB Storage - - usb_mount + + + +
+ + Select Storage: + + + + + +
- - - - - Mount System - - /system + + + main - - - - - Unmount System - - /system + + + + %tw_back% + - - - - - Mount Data - - /data - + + - - - - - Unmount Data - - /data - + + - - - - - Mount Cache - - /cache + + + + Mount Menu - - - - - Unmount Cache - - /cache + + + +
+ + Select Partitions to Mount: + + + + +
- - - - - - - Mount SDCard - - EXTERNAL - - - - - - - - - - Unmount SDCard - - EXTERNAL - - - - - - - - - - - Mount Internal Storage - - INTERNAL - - - - - - - - - - - Unmount Internal Storage - - INTERNAL - - - - - - - - - - Mount SD-Ext - - /sd-ext - - - - - - - Unmount SD-Ext - - /sd-ext - - - - - - - - - Mount Boot - - /boot - - - - - - - - - - Unmount Boot - - /boot - - - - - - - - - - Using external SD - - external - - - - - - - - + + - Using external SD - - external + + + Decrypt Data + + decrypt - - - - - - - Using internal storage - - internal + + + + Mount USB Storage + + usb_mount - - - - - - - Using internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=mount + selectstorage + @@ -1541,191 +1383,133 @@ - Wipe Menu + Factory Reset: Wipes Data, Cache, and Dalvik + + + + + + + .android_secure + + + + + + + (not including internal storage) + + + + + + + SD-EXT + + + + + + Most of the time this is the only wipe that you need. - + - Cache + Advanced Wipe - - tw_back=wipe - tw_action=wipe - tw_action_param=/cache - tw_text1=Wipe Cache? - tw_action_text1=Wiping Cache... - tw_complete_text1=Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + advancedwipe + + + + - + - Dalvik Cache + Format Data - tw_back=wipe - tw_action=wipe - tw_action_param=dalvik - tw_text1=Wipe Dalvik-Cache? - tw_action_text1=Wiping Dalvik-Cache... - tw_complete_text1=Dalvik-Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action + formatdata - - - - - Factory Reset - + + + + Press back button to cancel. + + + + + tw_back=wipe tw_action=wipe tw_action_param=data - tw_text1=Factory Reset? - tw_text2=(Wipes Data and Cache) tw_action_text1=Factory Reset... tw_complete_text1=Factory Reset Complete - tw_slider_text=Swipe to Wipe - confirm_action + action_page - - - - - System - - - tw_back=wipe - tw_action=wipe - tw_action_param=/system - tw_text1=Wipe System? - tw_text2=This will wipe your ROM - tw_action_text1=Wiping System... - tw_complete_text1=System Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Swipe to Factory Reset - - - - - - External Storage - - - tw_back=wipe - tw_action=wipe - tw_action_param=EXTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe External Storage (SD card)? - tw_action_text1=Wiping External Storage... - tw_complete_text1=External Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + main - - - - - - Internal Storage - - - tw_back=wipe - tw_action=wipe - tw_action_param=INTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe Internal Storage? - tw_action_text1=Wiping Internal Storage... - tw_complete_text1=Internal Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + main - - - - - - - - - Format Data - - - tw_back=wipe - tw_action=wipe - tw_action_param=DATAMEDIA - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Format Data? (This wipes all media - tw_text2=including backups & removes encryption) - tw_text3=Most of the time you do not need to do this. - tw_action_text1=Formatting Data... - tw_complete_text1=Data Format Complete - tw_slider_text=Swipe to Format - tw_show_exclamation=1 - confirm_action - + + + + + + + + + +
+ + Select Partitions to Wipe: + + + + + +
- - - - - - Android Secure - + + + - tw_back=wipe + tw_back=advancedwipe tw_action=wipe - tw_action_param=ANDROIDSECURE - tw_text1=Wipe Android Secure? - tw_action_text1=Wiping Android Secure... - tw_complete_text1=Wipe Android Secure Complete - tw_slider_text=Swipe to Format - confirm_action + tw_action_param=LIST + tw_text1=Wipe Selected Partition(s)? + tw_action_text1=Wiping Partition(s)... + tw_complete_text1=Wipe Complete + action_page - - - - - - SD Ext - - - tw_back=wipe - tw_action=wipe - tw_action_param=/sd-ext - tw_text1=Wipe SD-Ext? - tw_action_text1=Wiping SD-Ext... - tw_complete_text1=SD-Ext Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Swipe to Wipe @@ -1735,182 +1519,160 @@ - main + wipe - + - Back Up Device + Format Data will wipe all of your apps, backups, pictures, - - Free Space: %tw_storage_free_size% MB + + videos, media, and removes encryption on internal storage. - - Backup Name: %tw_backup_name% + + This cannot be undone. Press back to cancel. - - - - System (%tw_backup_system_size% MB) - - + + + + Type yes to continue. - - + + + + - Data (%tw_backup_data_size% MB) - - + %tw_confirm_formatdata% + + + formatdata_confirm - - - - - Boot (%tw_backup_boot_size% MB) - - - + - - - - - Recovery (%tw_backup_recovery_size% MB) - - + + + main - - - - Cache (%tw_backup_cache_size% MB) - - + + + wipe - - - - - .android_secure (%tw_backup_andsec_size% MB) - - - + + - - - - - sd-ext (%tw_backup_sdext_size% MB) - - + + + + + tw_back=formatdata + tw_action=wipe + tw_action_param=DATAMEDIA + tw_action_text1=Formatting Data... + tw_complete_text1=Data Format Complete + action_page + - - - - - %tw_sp1_name% (%tw_backup_sp1_size% MB) - - + + + formatdata + - - - - - %tw_sp2_name% (%tw_backup_sp2_size% MB) - - - + + - - - - - %tw_sp3_name% (%tw_backup_sp3_size% MB) - - + + + + Back Up Device - - - - Enable Compression (Requires more time) - - + + + +
+ + Select Partitions to Back Up: + + + + + +
- - - - Skip MD5 generation on backups - - + + + + Backup Name: %tw_backup_name% - - - - - - - Using external SD - - external + + + + Refresh Sizes + + - - - - - - - Using external SD - - external + + + + Set Backup Name + + + tw_fileexists=0 + backupname1 + - + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=backup + selectstorage + + + + + - - - - - Using internal storage - - internal + Enable Compression (Requires more time) + + - + - - - - - Using internal storage - - internal + Skip MD5 generation on backups + + @@ -1928,27 +1690,6 @@ Swipe to Back Up - - - - - Refresh Sizes - - - - - - - - - Set Backup Name - - - tw_fileexists=0 - backupname1 - - - main @@ -2072,51 +1813,15 @@ - - - - - - - Using external SD - - external - - - - - - - - - - Using external SD - - external - - - - - - - - - - Using internal storage - - internal - - - - - - - - - - Using internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=restore + selectstorage + @@ -2146,19 +1851,6 @@ - - - - - - - - - Decrypt Data - - decrypt - - main @@ -2187,89 +1879,22 @@ Package Date: %tw_restore_file_date% - - - - System - - - - - - - - - Data - - - - - - - - - Boot - - - - - - - - - Cache - - - - - - - - - .android_secure - - - - - - - - - sd-ext - - - - - - - - - %tw_sp1_name% - - - - - - - - - %tw_sp2_name% - - - - - - - - - %tw_sp3_name% - - - + + + +
+ + Select Partitions to Restore: + + + + + +
- + Enable MD5 checking of backup files @@ -2291,7 +1916,7 @@ - + Delete Backup diff --git a/gui/devices/1920x1200/res/images/exclamation400.png b/gui/devices/1920x1200/res/images/exclamation400.png deleted file mode 100644 index f3a8aabb6..000000000 Binary files a/gui/devices/1920x1200/res/images/exclamation400.png and /dev/null differ diff --git a/gui/devices/1920x1200/res/ui.xml b/gui/devices/1920x1200/res/ui.xml index af438d7d9..935080ae6 100644 --- a/gui/devices/1920x1200/res/ui.xml +++ b/gui/devices/1920x1200/res/ui.xml @@ -41,7 +41,6 @@ - @@ -141,7 +140,7 @@ - + @@ -180,8 +179,24 @@ - - + + + + + + + + + + + + + + + + + + @@ -507,51 +522,15 @@ - - - - - - - Using external SD - - external - - - - - - - - - - Using external SD - - external - - - - - - - - - - Using internal storage - - internal - - - - - - - - - - Using internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=install + selectstorage + @@ -856,15 +835,6 @@ - - - - - - - - - @@ -1263,220 +1233,92 @@ - + - - - - Mount Menu - - - - - - - Mount USB Storage - - usb_mount + + + +
+ + Select Storage: + + + + + +
- - - - - Mount System - - /system + + + main - - - - - Unmount System - - /system + + + + %tw_back% + - - - - - Mount Data - - /data - + + - - - - - Unmount Data - - /data - + + - - - - - Mount Cache - - /cache + + + + Mount Menu - - - - - Unmount Cache - - /cache + + + +
+ + Select Partitions to Mount: + + + + +
- - - - - - - Mount SDCard - - EXTERNAL - - - - - - - - - - Unmount SDCard - - EXTERNAL - - - - - - - - - - - Mount Internal Storage - - INTERNAL - - - - - - - - - - - Unmount Internal Storage - - INTERNAL - - - - - - - - - - Mount SD-Ext - - /sd-ext - - - - - - - Unmount SD-Ext - - /sd-ext - - - - - - - - - Mount Boot - - /boot - - - - - - - - - - Unmount Boot - - /boot - - - - - - - - - - Using external SD - - external - - - - - - - - + + - Using external SD - - external + + + Decrypt Data + + decrypt - - - - - - - Using internal storage - - internal + + + + Mount USB Storage + + usb_mount - - - - - - - Using internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=mount + selectstorage + @@ -1541,191 +1383,133 @@ - Wipe Menu + Factory Reset: Wipes Data, Cache, and Dalvik + + + + + + + .android_secure + + + + + + + (not including internal storage) + + + + + + + SD-EXT + + + + + + Most of the time this is the only wipe that you need. - + - Cache + Advanced Wipe - - tw_back=wipe - tw_action=wipe - tw_action_param=/cache - tw_text1=Wipe Cache? - tw_action_text1=Wiping Cache... - tw_complete_text1=Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + advancedwipe + + + + - + - Dalvik Cache + Format Data - tw_back=wipe - tw_action=wipe - tw_action_param=dalvik - tw_text1=Wipe Dalvik-Cache? - tw_action_text1=Wiping Dalvik-Cache... - tw_complete_text1=Dalvik-Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action + formatdata - - - - - Factory Reset - + + + + Press back button to cancel. + + + + + tw_back=wipe tw_action=wipe tw_action_param=data - tw_text1=Factory Reset? - tw_text2=(Wipes Data and Cache) tw_action_text1=Factory Reset... tw_complete_text1=Factory Reset Complete - tw_slider_text=Swipe to Wipe - confirm_action + action_page - - - - - System - - - tw_back=wipe - tw_action=wipe - tw_action_param=/system - tw_text1=Wipe System? - tw_text2=This will wipe your ROM - tw_action_text1=Wiping System... - tw_complete_text1=System Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Swipe to Factory Reset - - - - - - External Storage - - - tw_back=wipe - tw_action=wipe - tw_action_param=EXTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe External Storage (SD card)? - tw_action_text1=Wiping External Storage... - tw_complete_text1=External Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + main - - - - - - Internal Storage - - - tw_back=wipe - tw_action=wipe - tw_action_param=INTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe Internal Storage? - tw_action_text1=Wiping Internal Storage... - tw_complete_text1=Internal Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + main - - - - - - - - - Format Data - - - tw_back=wipe - tw_action=wipe - tw_action_param=DATAMEDIA - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Format Data? (This wipes all media - tw_text2=including backups & removes encryption) - tw_text3=Most of the time you do not need to do this. - tw_action_text1=Formatting Data... - tw_complete_text1=Data Format Complete - tw_slider_text=Swipe to Format - tw_show_exclamation=1 - confirm_action - + + + + + + + + + +
+ + Select Partitions to Wipe: + + + + + +
- - - - - - Android Secure - + + + - tw_back=wipe + tw_back=advancedwipe tw_action=wipe - tw_action_param=ANDROIDSECURE - tw_text1=Wipe Android Secure? - tw_action_text1=Wiping Android Secure... - tw_complete_text1=Wipe Android Secure Complete - tw_slider_text=Swipe to Format - confirm_action + tw_action_param=LIST + tw_text1=Wipe Selected Partition(s)? + tw_action_text1=Wiping Partition(s)... + tw_complete_text1=Wipe Complete + action_page - - - - - - SD Ext - - - tw_back=wipe - tw_action=wipe - tw_action_param=/sd-ext - tw_text1=Wipe SD-Ext? - tw_action_text1=Wiping SD-Ext... - tw_complete_text1=SD-Ext Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Swipe to Wipe @@ -1735,182 +1519,160 @@ - main + wipe - + - Back Up Device + Format Data will wipe all of your apps, backups, pictures, - - Free Space: %tw_storage_free_size% MB + + videos, media, and removes encryption on internal storage. - - Backup Name: %tw_backup_name% + + This cannot be undone. Press back to cancel. - - - - System (%tw_backup_system_size% MB) - - + + + + Type yes to continue. - - + + + + - Data (%tw_backup_data_size% MB) - - + %tw_confirm_formatdata% + + + formatdata_confirm - - - - - Boot (%tw_backup_boot_size% MB) - - - + - - - - - Recovery (%tw_backup_recovery_size% MB) - - + + + main - - - - Cache (%tw_backup_cache_size% MB) - - + + + wipe - - - - - .android_secure (%tw_backup_andsec_size% MB) - - - + + - - - - - sd-ext (%tw_backup_sdext_size% MB) - - + + + + + tw_back=formatdata + tw_action=wipe + tw_action_param=DATAMEDIA + tw_action_text1=Formatting Data... + tw_complete_text1=Data Format Complete + action_page + - - - - - %tw_sp1_name% (%tw_backup_sp1_size% MB) - - + + + formatdata + - - - - - %tw_sp2_name% (%tw_backup_sp2_size% MB) - - - + + - - - - - %tw_sp3_name% (%tw_backup_sp3_size% MB) - - + + + + Back Up Device - - - - Enable Compression (Requires more time) - - + + + +
+ + Select Partitions to Back Up: + + + + + +
- - - - Skip MD5 generation on backups - - + + + + Backup Name: %tw_backup_name% - - - - - - - Using external SD - - external + + + + Refresh Sizes + + - - - - - - - Using external SD - - external + + + + Set Backup Name + + + tw_fileexists=0 + backupname1 + - + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=backup + selectstorage + + + + + - - - - - Using internal storage - - internal + Enable Compression (Requires more time) + + - + - - - - - Using internal storage - - internal + Skip MD5 generation on backups + + @@ -1928,27 +1690,6 @@ Swipe to Back Up - - - - - Refresh Sizes - - - - - - - - - Set Backup Name - - - tw_fileexists=0 - backupname1 - - - main @@ -2072,51 +1813,15 @@ - - - - - - - Using external SD - - external - - - - - - - - - - Using external SD - - external - - - - - - - - - - Using internal storage - - internal - - - - - - - - - - Using internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=restore + selectstorage + @@ -2146,19 +1851,6 @@ - - - - - - - - - Decrypt Data - - decrypt - - main @@ -2187,89 +1879,22 @@ Package Date: %tw_restore_file_date% - - - - System - - - - - - - - - Data - - - - - - - - - Boot - - - - - - - - - Cache - - - - - - - - - .android_secure - - - - - - - - - sd-ext - - - - - - - - - %tw_sp1_name% - - - - - - - - - %tw_sp2_name% - - - - - - - - - %tw_sp3_name% - - - + + + +
+ + Select Partitions to Restore: + + + + + +
- + Enable MD5 checking of backup files @@ -2291,7 +1916,7 @@ - + Delete Backup diff --git a/gui/devices/2560x1600/res/images/exclamation400.png b/gui/devices/2560x1600/res/images/exclamation400.png deleted file mode 100644 index 408193277..000000000 Binary files a/gui/devices/2560x1600/res/images/exclamation400.png and /dev/null differ diff --git a/gui/devices/2560x1600/res/ui.xml b/gui/devices/2560x1600/res/ui.xml index 96170b59f..7c46a9944 100644 --- a/gui/devices/2560x1600/res/ui.xml +++ b/gui/devices/2560x1600/res/ui.xml @@ -41,7 +41,6 @@ - @@ -141,7 +140,7 @@ - + @@ -180,8 +179,24 @@ - - + + + + + + + + + + + + + + + + + + @@ -507,51 +522,15 @@ - - - - - - - Using external SD - - external - - - - - - - - - - Using external SD - - external - - - - - - - - - - Using internal storage - - internal - - - - - - - - - - Using internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=install + selectstorage + @@ -856,15 +835,6 @@ - - - - - - - - - @@ -1263,220 +1233,92 @@ - + - - - - Mount Menu - - - - - - - Mount USB Storage - - usb_mount + + + +
+ + Select Storage: + + + + + +
- - - - - Mount System - - /system + + + main - - - - - Unmount System - - /system + + + + %tw_back% + - - - - - Mount Data - - /data - + + - - - - - Unmount Data - - /data - + + - - - - - Mount Cache - - /cache + + + + Mount Menu - - - - - Unmount Cache - - /cache + + + +
+ + Select Partitions to Mount: + + + + +
- - - - - - - Mount SDCard - - EXTERNAL - - - - - - - - - - Unmount SDCard - - EXTERNAL - - - - - - - - - - - Mount Internal Storage - - INTERNAL - - - - - - - - - - - Unmount Internal Storage - - INTERNAL - - - - - - - - - - Mount SD-Ext - - /sd-ext - - - - - - - Unmount SD-Ext - - /sd-ext - - - - - - - - - Mount Boot - - /boot - - - - - - - - - - Unmount Boot - - /boot - - - - - - - - - - Using external SD - - external - - - - - - - - + + - Using external SD - - external + + + Decrypt Data + + decrypt - - - - - - - Using internal storage - - internal + + + + Mount USB Storage + + usb_mount - - - - - - - Using internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=mount + selectstorage + @@ -1541,191 +1383,133 @@ - Wipe Menu + Factory Reset: Wipes Data, Cache, and Dalvik + + + + + + + .android_secure + + + + + + + (not including internal storage) + + + + + + + SD-EXT + + + + + + Most of the time this is the only wipe that you need. - + - Cache + Advanced Wipe - - tw_back=wipe - tw_action=wipe - tw_action_param=/cache - tw_text1=Wipe Cache? - tw_action_text1=Wiping Cache... - tw_complete_text1=Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + advancedwipe + + + + - + - Dalvik Cache + Format Data - tw_back=wipe - tw_action=wipe - tw_action_param=dalvik - tw_text1=Wipe Dalvik-Cache? - tw_action_text1=Wiping Dalvik-Cache... - tw_complete_text1=Dalvik-Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action + formatdata - - - - - Factory Reset - + + + + Press back button to cancel. + + + + + tw_back=wipe tw_action=wipe tw_action_param=data - tw_text1=Factory Reset? - tw_text2=(Wipes Data and Cache) tw_action_text1=Factory Reset... tw_complete_text1=Factory Reset Complete - tw_slider_text=Swipe to Wipe - confirm_action + action_page - - - - - System - - - tw_back=wipe - tw_action=wipe - tw_action_param=/system - tw_text1=Wipe System? - tw_text2=This will wipe your ROM - tw_action_text1=Wiping System... - tw_complete_text1=System Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Swipe to Factory Reset - - - - - - External Storage - - - tw_back=wipe - tw_action=wipe - tw_action_param=EXTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe External Storage (SD card)? - tw_action_text1=Wiping External Storage... - tw_complete_text1=External Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + main - - - - - - Internal Storage - - - tw_back=wipe - tw_action=wipe - tw_action_param=INTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe Internal Storage? - tw_action_text1=Wiping Internal Storage... - tw_complete_text1=Internal Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + main - - - - - - - - - Format Data - - - tw_back=wipe - tw_action=wipe - tw_action_param=DATAMEDIA - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Format Data? (This wipes all media - tw_text2=including backups & removes encryption) - tw_text3=Most of the time you do not need to do this. - tw_action_text1=Formatting Data... - tw_complete_text1=Data Format Complete - tw_slider_text=Swipe to Format - tw_show_exclamation=1 - confirm_action - + + + + + + + + + +
+ + Select Partitions to Wipe: + + + + + +
- - - - - - Android Secure - + + + - tw_back=wipe + tw_back=advancedwipe tw_action=wipe - tw_action_param=ANDROIDSECURE - tw_text1=Wipe Android Secure? - tw_action_text1=Wiping Android Secure... - tw_complete_text1=Wipe Android Secure Complete - tw_slider_text=Swipe to Format - confirm_action + tw_action_param=LIST + tw_text1=Wipe Selected Partition(s)? + tw_action_text1=Wiping Partition(s)... + tw_complete_text1=Wipe Complete + action_page - - - - - - SD Ext - - - tw_back=wipe - tw_action=wipe - tw_action_param=/sd-ext - tw_text1=Wipe SD-Ext? - tw_action_text1=Wiping SD-Ext... - tw_complete_text1=SD-Ext Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Swipe to Wipe @@ -1735,182 +1519,160 @@ - main + wipe - + - Back Up Device + Format Data will wipe all of your apps, backups, pictures, - - Free Space: %tw_storage_free_size% MB + + videos, media, and removes encryption on internal storage. - - Backup Name: %tw_backup_name% + + This cannot be undone. Press back to cancel. - - - - System (%tw_backup_system_size% MB) - - + + + + Type yes to continue. - - + + + + - Data (%tw_backup_data_size% MB) - - + %tw_confirm_formatdata% + + + formatdata_confirm - - - - - Boot (%tw_backup_boot_size% MB) - - - + - - - - - Recovery (%tw_backup_recovery_size% MB) - - + + + main - - - - Cache (%tw_backup_cache_size% MB) - - + + + wipe - - - - - .android_secure (%tw_backup_andsec_size% MB) - - - + + - - - - - sd-ext (%tw_backup_sdext_size% MB) - - + + + + + tw_back=formatdata + tw_action=wipe + tw_action_param=DATAMEDIA + tw_action_text1=Formatting Data... + tw_complete_text1=Data Format Complete + action_page + - - - - - %tw_sp1_name% (%tw_backup_sp1_size% MB) - - + + + formatdata + - - - - - %tw_sp2_name% (%tw_backup_sp2_size% MB) - - - + + - - - - - %tw_sp3_name% (%tw_backup_sp3_size% MB) - - + + + + Back Up Device - - - - Enable Compression (Requires more time) - - + + + +
+ + Select Partitions to Back Up: + + + + + +
- - - - Skip MD5 generation on backups - - + + + + Backup Name: %tw_backup_name% - - - - - - - Using external SD - - external + + + + Refresh Sizes + + - - - - - - - Using external SD - - external + + + + Set Backup Name + + + tw_fileexists=0 + backupname1 + - + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=backup + selectstorage + + + + + - - - - - Using internal storage - - internal + Enable Compression (Requires more time) + + - + - - - - - Using internal storage - - internal + Skip MD5 generation on backups + + @@ -1928,27 +1690,6 @@ Swipe to Back Up - - - - - Refresh Sizes - - - - - - - - - Set Backup Name - - - tw_fileexists=0 - backupname1 - - - main @@ -2072,51 +1813,15 @@ - - - - - - - Using external SD - - external - - - - - - - - - - Using external SD - - external - - - - - - - - - - Using internal storage - - internal - - - - - - - - - - Using internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=restore + selectstorage + @@ -2146,19 +1851,6 @@ - - - - - - - - - Decrypt Data - - decrypt - - main @@ -2187,89 +1879,22 @@ Package Date: %tw_restore_file_date% - - - - System - - - - - - - - - Data - - - - - - - - - Boot - - - - - - - - - Cache - - - - - - - - - .android_secure - - - - - - - - - sd-ext - - - - - - - - - %tw_sp1_name% - - - - - - - - - %tw_sp2_name% - - - - - - - - - %tw_sp3_name% - - - + + + +
+ + Select Partitions to Restore: + + + + + +
- + Enable MD5 checking of backup files @@ -2291,7 +1916,7 @@ - + Delete Backup diff --git a/gui/devices/320x480/res/images/exclamation150.png b/gui/devices/320x480/res/images/exclamation150.png deleted file mode 100644 index 6e05987c1..000000000 Binary files a/gui/devices/320x480/res/images/exclamation150.png and /dev/null differ diff --git a/gui/devices/320x480/res/ui.xml b/gui/devices/320x480/res/ui.xml index 887505c6b..c85db3a23 100644 --- a/gui/devices/320x480/res/ui.xml +++ b/gui/devices/320x480/res/ui.xml @@ -39,7 +39,6 @@ - @@ -124,7 +123,7 @@ - + @@ -158,15 +157,26 @@ - - - + + + + + + + + + + + + + + @@ -465,56 +475,20 @@ - - - - - - - Use external SD - - external - - - - - - - - - - Use external SD - - external - - - - - - - - - - Use internal storage - - internal - - - - - - - - - - Use internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=install + selectstorage + - +
%tw_zip_location% @@ -826,15 +800,6 @@ - - - - - - - - - @@ -1111,352 +1076,303 @@ - - Wipe Menu + + Factory Reset - - - - - Cache - - - tw_back=wipe - tw_action=wipe - tw_action_param=/cache - tw_text1=Wipe Cache? - tw_action_text1=Wiping Cache... - tw_complete_text1=Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Wipes Data, Cache, and Dalvik - - - - - Dalvik Cache - - - tw_back=wipe - tw_action=wipe - tw_action_param=dalvik - tw_text1=Wipe Dalvik-Cache? - tw_action_text1=Wiping Dalvik-Cache... - tw_complete_text1=Dalvik-Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + + .android_secure - - - - - Factory Reset - - - tw_back=wipe - tw_action=wipe - tw_action_param=data - tw_text1=Factory Reset? - tw_text2=(Wipes Data and Cache) - tw_action_text1=Factory Reset... - tw_complete_text1=Factory Reset Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + + (not including internal storage) - - - - - System - - - tw_back=wipe - tw_action=wipe - tw_action_param=/system - tw_text1=Wipe System? - tw_text2=This will wipe your ROM - tw_action_text1=Wiping System... - tw_complete_text1=System Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + + SD-EXT - - - - - - External Storage - - - tw_back=wipe - tw_action=wipe - tw_action_param=EXTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe External Storage (SD Card)? - tw_action_text1=Wiping External Storage... - tw_complete_text1=External Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Most of the time this is + + + + + + the only wipe that you need. + + + + + + Press back button to cancel. - - + - Internal Storage + Advanced Wipe - - tw_back=wipe - tw_action=wipe - tw_action_param=INTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe Internal Storage? - tw_action_text1=Wiping Internal Storage... - tw_complete_text1=Internal Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + advancedwipe - - + + Format Data - tw_back=wipe - tw_action=wipe - tw_action_param=DATAMEDIA - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Format Data? (This wipes all internal storage - tw_text2=including backups & removes encryption) - tw_text3=Most of the time you do not need to do this. - tw_action_text1=Formatting Data... - tw_complete_text1=Data Format Complete - tw_slider_text=Swipe to Format - tw_show_exclamation=1 - confirm_action + formatdata - - - - - - Android Secure - + + + tw_back=wipe tw_action=wipe - tw_action_param=ANDROIDSECURE - tw_text1=Wipe Android Secure? - tw_action_text1=Wiping Android Secure... - tw_complete_text1=Wipe Android Secure Complete - tw_slider_text=Swipe to Format - confirm_action + tw_action_param=data + tw_action_text1=Factory Reset... + tw_complete_text1=Factory Reset Complete + action_page - - - - - - SD Ext - - - tw_back=wipe - tw_action=wipe - tw_action_param=/sd-ext - tw_text1=Wipe SD-Ext? - tw_action_text1=Wiping SD-Ext... - tw_complete_text1=SD-Ext Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Swipe to Factory Reset - + main - + main - + - Backup Name: %tw_backup_name% + Wipe Menu - - - - Backup Device + + + +
+ + Select Partitions to Wipe: + + + + + +
- + - backup_run + + tw_back=advancedwipe + tw_action=wipe + tw_action_param=LIST + tw_text1=Wipe Selected Partition(s)? + tw_action_text1=Wiping Partition(s)... + tw_complete_text1=Wipe Complete + action_page + - Swipe to Back Up + Swipe to Wipe - - - - - Refresh Sizes - - + + + main - - - - - Set Backup Name - - - tw_fileexists=0 - backupname1 - + + + wipe - - - - System (%tw_backup_system_size% MB) - - + + + + + + + + + + Format Data will wipe all of your apps, - - - - Data (%tw_backup_data_size% MB) - - + + + + backups, pictures, videos, media, and - - - - - Boot (%tw_backup_boot_size% MB) - - + + + + removes encryption on internal storage. - - - - - Recovery (%tw_backup_recovery_size% MB) - - + + + + This cannot be undone. Press back to cancel. - - - - Cache (%tw_backup_cache_size% MB) - - + + + + Type yes to continue. - - - + + + + - .android_secure (%tw_backup_andsec_size% MB) - - - + %tw_confirm_formatdata% + + + formatdata_confirm - - - - - sd-ext (%tw_backup_sdext_size% MB) - - - + + + + + main - - - - - %tw_sp1_name% (%tw_backup_sp1_size% MB) - - + + + wipe - - - - - %tw_sp2_name% (%tw_backup_sp2_size% MB) - - + + + + + + + + tw_back=formatdata + tw_action=wipe + tw_action_param=DATAMEDIA + tw_action_text1=Formatting Data... + tw_complete_text1=Data Format Complete + action_page + - - - - - %tw_sp3_name% (%tw_backup_sp3_size% MB) - - + + + formatdata + + + + - - Free Space: %tw_storage_free_size% MB + + Backup Name: %tw_backup_name% + + + + + +
+ + Select Partitions to Back Up: + + + + + + +
+ + + + + + + Set Backup Name + + tw_fileexists=0 + backupname1 + + + + + + + + + Refresh Sizes + + + + + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=backup + selectstorage + - + Enable compression. @@ -1464,59 +1380,23 @@ - + Skip MD5 generation during backup. - - - - - - - - Use external SD - - external - - - - - - - - - - Use external SD - - external - - - - - - - - - - Use internal storage - - internal + + + + backup_run - - - - - - - - Use internal storage - - internal + + + + Swipe to Back Up @@ -1640,56 +1520,20 @@ - - - - - - - Use external SD - - external - - - - - - - - - - Use external SD - - external - - - - - - - - - - Use internal storage - - internal - - - - - - - - - - Use internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=restore + selectstorage + - +
Select Package to Restore: @@ -1730,18 +1574,26 @@ - - - + + + +
+ Restoring: %tw_restore_name% + + + + + +
- + + Rename Backup - tw_backup_rename= tw_fileexists=0 @@ -1751,10 +1603,10 @@ - + + Delete Backup - tw_back=restore tw_action=cmd @@ -1768,111 +1620,30 @@ - - - - restore_run - - - - - - Swipe to Restore - - - - - System - - - - - - - - - Data - - - - - - - - - Boot - - - - - - - - - Cache - - - - - - - - - .android_secure - - - - - - - - - sd-ext - - - - - - - - - %tw_sp1_name% - - - - - - - + - %tw_sp2_name% - - + Enable MD5 verification of backup files. + - - - - %tw_sp3_name% - - - + + + + Package Date: %tw_restore_file_date% - - - - Enable MD5 verification of backup files. - - + + + + restore_run - - Package Date: %tw_restore_file_date% + + Swipe to Restore @@ -1980,216 +1751,70 @@ - + - - - - Mount Menu - - - - - - - Mount System - - /system - - - - - - - Unmount System - - /system - - - - - - - Mount Data - - /data - - - - - - - Unmount Data - - /data - - - - - - - Mount Cache - - /cache - - - - - - - Unmount Cache - - /cache - - - - - - - - - - Mount SD Card - - EXTERNAL - - - - - - - - - - Unmount SD Card - - EXTERNAL - - - - - - - - - - - Mount Internal - - INTERNAL - - - - - - - - - - - Unmount Internal - - INTERNAL - - - - - - - - - - Mount SD-Ext - - /sd-ext - - - - - - - Unmount SD-Ext - - /sd-ext + + + +
+ + Select Storage: + + + + + +
- - - - - - - - Mount Boot - - /boot + + + main - - - - - - - - Unmount Boot - - /boot + + + + %tw_back% + - - - - - - - - Use external SD - - external - + + - - - - - - - - Use external SD - - external - + + - - - - - - - - Use internal storage - - internal + + + +
+ + Select Partitions to Mount: + + + + +
- - - - - - - Use internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=mount + selectstorage + - + Mount USB Storage @@ -2202,7 +1827,7 @@ - + Decrypt Data diff --git a/gui/devices/480x800/res/images/exclamation200.png b/gui/devices/480x800/res/images/exclamation200.png deleted file mode 100644 index 96258a1c3..000000000 Binary files a/gui/devices/480x800/res/images/exclamation200.png and /dev/null differ diff --git a/gui/devices/480x800/res/ui.xml b/gui/devices/480x800/res/ui.xml index ab4be70ff..6efca350c 100644 --- a/gui/devices/480x800/res/ui.xml +++ b/gui/devices/480x800/res/ui.xml @@ -39,7 +39,6 @@ - @@ -123,7 +122,7 @@ - + @@ -164,8 +163,20 @@ - - + + + + + + + + + + + + + + @@ -464,56 +475,20 @@ - - - - - - - Use external SD - - external - - - - - - - - - - Use external SD - - external - - - - - - - - - - Use internal storage - - internal - - - - - - - - - - Use internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=install + selectstorage + - +
%tw_zip_location% @@ -825,15 +800,6 @@ - - - - - - - - - @@ -1110,352 +1076,303 @@ - - Wipe Menu + + Factory Reset - - - - - Cache - - - tw_back=wipe - tw_action=wipe - tw_action_param=/cache - tw_text1=Wipe Cache? - tw_action_text1=Wiping Cache... - tw_complete_text1=Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Wipes Data, Cache, and Dalvik - - - - - Dalvik Cache - - - tw_back=wipe - tw_action=wipe - tw_action_param=dalvik - tw_text1=Wipe Dalvik-Cache? - tw_action_text1=Wiping Dalvik-Cache... - tw_complete_text1=Dalvik-Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + + .android_secure - - - - - Factory Reset - - - tw_back=wipe - tw_action=wipe - tw_action_param=data - tw_text1=Factory Reset? - tw_text2=(Wipes Data and Cache) - tw_action_text1=Factory Reset... - tw_complete_text1=Factory Reset Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + + (not including internal storage) - - - - - System - - - tw_back=wipe - tw_action=wipe - tw_action_param=/system - tw_text1=Wipe System? - tw_text2=This will wipe your ROM - tw_action_text1=Wiping System... - tw_complete_text1=System Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + + SD-EXT - - - - - - External Storage - - - tw_back=wipe - tw_action=wipe - tw_action_param=EXTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe External Storage (SD Card)? - tw_action_text1=Wiping External Storage... - tw_complete_text1=External Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Most of the time this is + + + + + + the only wipe that you need. + + + + + + Press back button to cancel. - - + - Internal Storage + Advanced Wipe - - tw_back=wipe - tw_action=wipe - tw_action_param=INTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe Internal Storage? - tw_action_text1=Wiping Internal Storage... - tw_complete_text1=Internal Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + advancedwipe - - + + Format Data - tw_back=wipe - tw_action=wipe - tw_action_param=DATAMEDIA - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Format Data? (This wipes all internal storage - tw_text2=including backups & removes encryption) - tw_text3=Most of the time you do not need to do this. - tw_action_text1=Formatting Data... - tw_complete_text1=Data Format Complete - tw_slider_text=Swipe to Format - tw_show_exclamation=1 - confirm_action + formatdata - - - - - - Android Secure - + + + tw_back=wipe tw_action=wipe - tw_action_param=ANDROIDSECURE - tw_text1=Wipe Android Secure? - tw_action_text1=Wiping Android Secure... - tw_complete_text1=Wipe Android Secure Complete - tw_slider_text=Swipe to Format - confirm_action + tw_action_param=data + tw_action_text1=Factory Reset... + tw_complete_text1=Factory Reset Complete + action_page - - - - - - SD Ext - - - tw_back=wipe - tw_action=wipe - tw_action_param=/sd-ext - tw_text1=Wipe SD-Ext? - tw_action_text1=Wiping SD-Ext... - tw_complete_text1=SD-Ext Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Swipe to Factory Reset - + main - + main - + - Backup Name: %tw_backup_name% + Wipe Menu - - - - Backup Device + + + +
+ + Select Partitions to Wipe: + + + + + +
- + - backup_run + + tw_back=advancedwipe + tw_action=wipe + tw_action_param=LIST + tw_text1=Wipe Selected Partition(s)? + tw_action_text1=Wiping Partition(s)... + tw_complete_text1=Wipe Complete + action_page + - Swipe to Back Up + Swipe to Wipe - - - - - Refresh Sizes - - + + + main - - - - - Set Backup Name - - - tw_fileexists=0 - backupname1 - + + + wipe - - - - System (%tw_backup_system_size% MB) - - + + + + + + + + + + Format Data will wipe all of your apps, - - - - Data (%tw_backup_data_size% MB) - - + + + + backups, pictures, videos, media, and - - - - - Boot (%tw_backup_boot_size% MB) - - + + + + removes encryption on internal storage. - - - - - Recovery (%tw_backup_recovery_size% MB) - - + + + + This cannot be undone. Press back to cancel. - - - - Cache (%tw_backup_cache_size% MB) - - + + + + Type yes to continue. - - - + + + + - .android_secure (%tw_backup_andsec_size% MB) - - - + %tw_confirm_formatdata% + + + formatdata_confirm - - - - - sd-ext (%tw_backup_sdext_size% MB) - - - + + + + + main - - - - - %tw_sp1_name% (%tw_backup_sp1_size% MB) - - + + + wipe - - - - - %tw_sp2_name% (%tw_backup_sp2_size% MB) - - + + + + + + + + tw_back=formatdata + tw_action=wipe + tw_action_param=DATAMEDIA + tw_action_text1=Formatting Data... + tw_complete_text1=Data Format Complete + action_page + - - - - - %tw_sp3_name% (%tw_backup_sp3_size% MB) - - + + + formatdata + + + + - - Free Space: %tw_storage_free_size% MB + + Backup Name: %tw_backup_name% + + + + + +
+ + Select Partitions to Back Up: + + + + + + +
+ + + + + + + Set Backup Name + + tw_fileexists=0 + backupname1 + + + + + + + + + Refresh Sizes + + + + + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=backup + selectstorage + - + Enable compression. @@ -1463,59 +1380,23 @@ - + Skip MD5 generation during backup. - - - - - - - - Use external SD - - external - - - - - - - - - - Use external SD - - external - - - - - - - - - - Use internal storage - - internal + + + + backup_run - - - - - - - - Use internal storage - - internal + + + + Swipe to Back Up @@ -1639,56 +1520,20 @@ - - - - - - - Use external SD - - external - - - - - - - - - - Use external SD - - external - - - - - - - - - - Use internal storage - - internal - - - - - - - - - - Use internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=restore + selectstorage + - +
Select Package to Restore: @@ -1729,18 +1574,26 @@ - - - + + + +
+ Restoring: %tw_restore_name% + + + + + +
- + + Rename Backup - tw_backup_rename= tw_fileexists=0 @@ -1750,10 +1603,10 @@ - + + Delete Backup - tw_back=restore tw_action=cmd @@ -1767,111 +1620,30 @@ - - - - restore_run - - - - - - Swipe to Restore - - - - - System - - - - - - - - - Data - - - - - - - - - Boot - - - - - - - - - Cache - - - - - - - - - .android_secure - - - - - - - - - sd-ext - - - - - - - - - %tw_sp1_name% - - - - - - - + - %tw_sp2_name% - - + Enable MD5 verification of backup files. + - - - - %tw_sp3_name% - - - + + + + Package Date: %tw_restore_file_date% - - - - Enable MD5 verification of backup files. - - + + + + restore_run - - Package Date: %tw_restore_file_date% + + Swipe to Restore @@ -1979,216 +1751,70 @@ - + - - - - Mount Menu - - - - - - - Mount System - - /system - - - - - - - Unmount System - - /system - - - - - - - Mount Data - - /data - - - - - - - Unmount Data - - /data - - - - - - - Mount Cache - - /cache - - - - - - - Unmount Cache - - /cache - - - - - - - - - - Mount SD Card - - EXTERNAL - - - - - - - - - - Unmount SD Card - - EXTERNAL - - - - - - - - - - - Mount Internal - - INTERNAL - - - - - - - - - - - Unmount Internal - - INTERNAL - - - - - - - - - - Mount SD-Ext - - /sd-ext - - - - - - - Unmount SD-Ext - - /sd-ext + + + +
+ + Select Storage: + + + + + +
- - - - - - - - Mount Boot - - /boot + + + main - - - - - - - - Unmount Boot - - /boot + + + + %tw_back% + - - - - - - - - Use external SD - - external - + + - - - - - - - - Use external SD - - external - + + - - - - - - - - Use internal storage - - internal + + + +
+ + Select Partitions to Mount: + + + + +
- - - - - - - Use internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=mount + selectstorage + - + Mount USB Storage @@ -2201,7 +1827,7 @@ - + Decrypt Data diff --git a/gui/devices/480x854/res/images/exclamation200.png b/gui/devices/480x854/res/images/exclamation200.png deleted file mode 100644 index 96258a1c3..000000000 Binary files a/gui/devices/480x854/res/images/exclamation200.png and /dev/null differ diff --git a/gui/devices/480x854/res/ui.xml b/gui/devices/480x854/res/ui.xml index 1147b77f3..de4d15944 100644 --- a/gui/devices/480x854/res/ui.xml +++ b/gui/devices/480x854/res/ui.xml @@ -39,7 +39,6 @@ - @@ -122,7 +121,7 @@ - + @@ -163,8 +162,20 @@ - - + + + + + + + + + + + + + + @@ -463,56 +474,20 @@ - - - - - - - Use external SD - - external - - - - - - - - - - Use external SD - - external - - - - - - - - - - Use internal storage - - internal - - - - - - - - - - Use internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=install + selectstorage + - +
%tw_zip_location% @@ -824,15 +799,6 @@ - - - - - - - - - @@ -1109,352 +1075,303 @@ - - Wipe Menu + + Factory Reset - - - - - Cache - - - tw_back=wipe - tw_action=wipe - tw_action_param=/cache - tw_text1=Wipe Cache? - tw_action_text1=Wiping Cache... - tw_complete_text1=Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Wipes Data, Cache, and Dalvik - - - - - Dalvik Cache - - - tw_back=wipe - tw_action=wipe - tw_action_param=dalvik - tw_text1=Wipe Dalvik-Cache? - tw_action_text1=Wiping Dalvik-Cache... - tw_complete_text1=Dalvik-Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + + .android_secure - - - - - Factory Reset - - - tw_back=wipe - tw_action=wipe - tw_action_param=data - tw_text1=Factory Reset? - tw_text2=(Wipes Data and Cache) - tw_action_text1=Factory Reset... - tw_complete_text1=Factory Reset Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + + (not including internal storage) - - - - - System - - - tw_back=wipe - tw_action=wipe - tw_action_param=/system - tw_text1=Wipe System? - tw_text2=This will wipe your ROM - tw_action_text1=Wiping System... - tw_complete_text1=System Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + + SD-EXT - - - - - - External Storage - - - tw_back=wipe - tw_action=wipe - tw_action_param=EXTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe External Storage (SD Card)? - tw_action_text1=Wiping External Storage... - tw_complete_text1=External Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Most of the time this is + + + + + + the only wipe that you need. + + + + + + Press back button to cancel. - - + - Internal Storage + Advanced Wipe - - tw_back=wipe - tw_action=wipe - tw_action_param=INTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe Internal Storage? - tw_action_text1=Wiping Internal Storage... - tw_complete_text1=Internal Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + advancedwipe - - + + Format Data - tw_back=wipe - tw_action=wipe - tw_action_param=DATAMEDIA - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Format Data? (This wipes all internal storage - tw_text2=including backups & removes encryption) - tw_text3=Most of the time you do not need to do this. - tw_action_text1=Formatting Data... - tw_complete_text1=Data Format Complete - tw_slider_text=Swipe to Format - tw_show_exclamation=1 - confirm_action + formatdata - - - - - - Android Secure - + + + tw_back=wipe tw_action=wipe - tw_action_param=ANDROIDSECURE - tw_text1=Wipe Android Secure? - tw_action_text1=Wiping Android Secure... - tw_complete_text1=Wipe Android Secure Complete - tw_slider_text=Swipe to Format - confirm_action + tw_action_param=data + tw_action_text1=Factory Reset... + tw_complete_text1=Factory Reset Complete + action_page - - - - - - SD Ext - - - tw_back=wipe - tw_action=wipe - tw_action_param=/sd-ext - tw_text1=Wipe SD-Ext? - tw_action_text1=Wiping SD-Ext... - tw_complete_text1=SD-Ext Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Swipe to Factory Reset - + main - + main - + - Backup Name: %tw_backup_name% + Wipe Menu - - - - Backup Device + + + +
+ + Select Partitions to Wipe: + + + + + +
- + - backup_run + + tw_back=advancedwipe + tw_action=wipe + tw_action_param=LIST + tw_text1=Wipe Selected Partition(s)? + tw_action_text1=Wiping Partition(s)... + tw_complete_text1=Wipe Complete + action_page + - Swipe to Back Up + Swipe to Wipe - - - - - Refresh Sizes - - + + + main - - - - - Set Backup Name - - - tw_fileexists=0 - backupname1 - + + + wipe - - - - System (%tw_backup_system_size% MB) - - + + + + + + + + + + Format Data will wipe all of your apps, - - - - Data (%tw_backup_data_size% MB) - - + + + + backups, pictures, videos, media, and - - - - - Boot (%tw_backup_boot_size% MB) - - + + + + removes encryption on internal storage. - - - - - Recovery (%tw_backup_recovery_size% MB) - - + + + + This cannot be undone. Press back to cancel. - - - - Cache (%tw_backup_cache_size% MB) - - + + + + Type yes to continue. - - - + + + + - .android_secure (%tw_backup_andsec_size% MB) - - - + %tw_confirm_formatdata% + + + formatdata_confirm - - - - - sd-ext (%tw_backup_sdext_size% MB) - - - + + + + + main - - - - - %tw_sp1_name% (%tw_backup_sp1_size% MB) - - + + + wipe - - - - - %tw_sp2_name% (%tw_backup_sp2_size% MB) - - + + + + + + + + tw_back=formatdata + tw_action=wipe + tw_action_param=DATAMEDIA + tw_action_text1=Formatting Data... + tw_complete_text1=Data Format Complete + action_page + - - - - - %tw_sp3_name% (%tw_backup_sp3_size% MB) - - + + + formatdata + + + + - - Free Space: %tw_storage_free_size% MB + + Backup Name: %tw_backup_name% + + + + + +
+ + Select Partitions to Back Up: + + + + + + +
+ + + + + + + Set Backup Name + + tw_fileexists=0 + backupname1 + + + + + + + + + Refresh Sizes + + + + + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=backup + selectstorage + - + Enable compression. @@ -1462,59 +1379,23 @@ - + Skip MD5 generation during backup. - - - - - - - - Use external SD - - external - - - - - - - - - - Use external SD - - external - - - - - - - - - - Use internal storage - - internal + + + + backup_run - - - - - - - - Use internal storage - - internal + + + + Swipe to Back Up @@ -1638,56 +1519,20 @@ - - - - - - - Use external SD - - external - - - - - - - - - - Use external SD - - external - - - - - - - - - - Use internal storage - - internal - - - - - - - - - - Use internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=restore + selectstorage + - +
Select Package to Restore: @@ -1728,18 +1573,26 @@ - - - + + + +
+ Restoring: %tw_restore_name% + + + + + +
- + + Rename Backup - tw_backup_rename= tw_fileexists=0 @@ -1749,10 +1602,10 @@ - + + Delete Backup - tw_back=restore tw_action=cmd @@ -1766,111 +1619,30 @@ - - - - restore_run - - - - - - Swipe to Restore - - - - - System - - - - - - - - - Data - - - - - - - - - Boot - - - - - - - - - Cache - - - - - - - - - .android_secure - - - - - - - - - sd-ext - - - - - - - - - %tw_sp1_name% - - - - - - - + - %tw_sp2_name% - - + Enable MD5 verification of backup files. + - - - - %tw_sp3_name% - - - + + + + Package Date: %tw_restore_file_date% - - - - Enable MD5 verification of backup files. - - + + + + restore_run - - Package Date: %tw_restore_file_date% + + Swipe to Restore @@ -1978,216 +1750,70 @@ - + - - - - Mount Menu - - - - - - - Mount System - - /system - - - - - - - Unmount System - - /system - - - - - - - Mount Data - - /data - - - - - - - Unmount Data - - /data - - - - - - - Mount Cache - - /cache - - - - - - - Unmount Cache - - /cache - - - - - - - - - - Mount SD Card - - EXTERNAL - - - - - - - - - - Unmount SD Card - - EXTERNAL - - - - - - - - - - - Mount Internal - - INTERNAL - - - - - - - - - - - Unmount Internal - - INTERNAL - - - - - - - - - - Mount SD-Ext - - /sd-ext - - - - - - - Unmount SD-Ext - - /sd-ext + + + +
+ + Select Storage: + + + + + +
- - - - - - - - Mount Boot - - /boot + + + main - - - - - - - - Unmount Boot - - /boot + + + + %tw_back% + - - - - - - - - Use external SD - - external - + + - - - - - - - - Use external SD - - external - + + - - - - - - - - Use internal storage - - internal + + + +
+ + Select Partitions to Mount: + + + + +
- - - - - - - Use internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=mount + selectstorage + - + Mount USB Storage @@ -2200,7 +1826,7 @@ - + Decrypt Data diff --git a/gui/devices/540x960/res/images/exclamation300.png b/gui/devices/540x960/res/images/exclamation300.png deleted file mode 100644 index 1ac400d11..000000000 Binary files a/gui/devices/540x960/res/images/exclamation300.png and /dev/null differ diff --git a/gui/devices/540x960/res/ui.xml b/gui/devices/540x960/res/ui.xml index 7c4967ed1..febc3db14 100644 --- a/gui/devices/540x960/res/ui.xml +++ b/gui/devices/540x960/res/ui.xml @@ -39,7 +39,6 @@ - @@ -123,7 +122,7 @@ - + @@ -164,8 +163,20 @@ - - + + + + + + + + + + + + + + @@ -464,56 +475,20 @@ - - - - - - - Use external SD - - external - - - - - - - - - - Use external SD - - external - - - - - - - - - - Use internal storage - - internal - - - - - - - - - - Use internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=install + selectstorage + - +
%tw_zip_location% @@ -825,15 +800,6 @@ - - - - - - - - - @@ -1110,352 +1076,303 @@ - - Wipe Menu + + Factory Reset - - - - - Cache - - - tw_back=wipe - tw_action=wipe - tw_action_param=/cache - tw_text1=Wipe Cache? - tw_action_text1=Wiping Cache... - tw_complete_text1=Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Wipes Data, Cache, and Dalvik - - - - - Dalvik Cache - - - tw_back=wipe - tw_action=wipe - tw_action_param=dalvik - tw_text1=Wipe Dalvik-Cache? - tw_action_text1=Wiping Dalvik-Cache... - tw_complete_text1=Dalvik-Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + + .android_secure - - - - - Factory Reset - - - tw_back=wipe - tw_action=wipe - tw_action_param=data - tw_text1=Factory Reset? - tw_text2=(Wipes Data and Cache) - tw_action_text1=Factory Reset... - tw_complete_text1=Factory Reset Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + + (not including internal storage) - - - - - System - - - tw_back=wipe - tw_action=wipe - tw_action_param=/system - tw_text1=Wipe System? - tw_text2=This will wipe your ROM - tw_action_text1=Wiping System... - tw_complete_text1=System Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + + SD-EXT - - - - - - External Storage - - - tw_back=wipe - tw_action=wipe - tw_action_param=EXTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe External Storage (SD Card)? - tw_action_text1=Wiping External Storage... - tw_complete_text1=External Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Most of the time this is + + + + + + the only wipe that you need. + + + + + + Press back button to cancel. - - + - Internal Storage + Advanced Wipe - - tw_back=wipe - tw_action=wipe - tw_action_param=INTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe Internal Storage? - tw_action_text1=Wiping Internal Storage... - tw_complete_text1=Internal Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + advancedwipe - - + + Format Data - tw_back=wipe - tw_action=wipe - tw_action_param=DATAMEDIA - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Format Data? (This wipes all internal storage - tw_text2=including backups & removes encryption) - tw_text3=Most of the time you do not need to do this. - tw_action_text1=Formatting Data... - tw_complete_text1=Data Format Complete - tw_slider_text=Swipe to Format - tw_show_exclamation=1 - confirm_action + formatdata - - - - - - Android Secure - + + + tw_back=wipe tw_action=wipe - tw_action_param=ANDROIDSECURE - tw_text1=Wipe Android Secure? - tw_action_text1=Wiping Android Secure... - tw_complete_text1=Wipe Android Secure Complete - tw_slider_text=Swipe to Format - confirm_action + tw_action_param=data + tw_action_text1=Factory Reset... + tw_complete_text1=Factory Reset Complete + action_page - - - - - - SD Ext - - - tw_back=wipe - tw_action=wipe - tw_action_param=/sd-ext - tw_text1=Wipe SD-Ext? - tw_action_text1=Wiping SD-Ext... - tw_complete_text1=SD-Ext Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Swipe to Factory Reset - + main - + main - + - Backup Name: %tw_backup_name% + Wipe Menu - - - - Backup Device + + + +
+ + Select Partitions to Wipe: + + + + + +
- + - backup_run + + tw_back=advancedwipe + tw_action=wipe + tw_action_param=LIST + tw_text1=Wipe Selected Partition(s)? + tw_action_text1=Wiping Partition(s)... + tw_complete_text1=Wipe Complete + action_page + - Swipe to Back Up + Swipe to Wipe - - - - - Refresh Sizes - - + + + main - - - - - Set Backup Name - - - tw_fileexists=0 - backupname1 - + + + wipe - - - - System (%tw_backup_system_size% MB) - - + + + + + + + + + + Format Data will wipe all of your apps, - - - - Data (%tw_backup_data_size% MB) - - + + + + backups, pictures, videos, media, and - - - - - Boot (%tw_backup_boot_size% MB) - - + + + + removes encryption on internal storage. - - - - - Recovery (%tw_backup_recovery_size% MB) - - + + + + This cannot be undone. Press back to cancel. - - - - Cache (%tw_backup_cache_size% MB) - - + + + + Type yes to continue. - - - + + + + - .android_secure (%tw_backup_andsec_size% MB) - - - + %tw_confirm_formatdata% + + + formatdata_confirm - - - - - sd-ext (%tw_backup_sdext_size% MB) - - - + + + + + main - - - - - %tw_sp1_name% (%tw_backup_sp1_size% MB) - - + + + wipe - - - - - %tw_sp2_name% (%tw_backup_sp2_size% MB) - - + + + + + + + + tw_back=formatdata + tw_action=wipe + tw_action_param=DATAMEDIA + tw_action_text1=Formatting Data... + tw_complete_text1=Data Format Complete + action_page + - - - - - %tw_sp3_name% (%tw_backup_sp3_size% MB) - - + + + formatdata + + + + - - Free Space: %tw_storage_free_size% MB + + Backup Name: %tw_backup_name% + + + + + +
+ + Select Partitions to Back Up: + + + + + + +
+ + + + + + + Set Backup Name + + tw_fileexists=0 + backupname1 + + + + + + + + + Refresh Sizes + + + + + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=backup + selectstorage + - + Enable compression. @@ -1463,59 +1380,23 @@ - + Skip MD5 generation during backup. - - - - - - - - Use external SD - - external - - - - - - - - - - Use external SD - - external - - - - - - - - - - Use internal storage - - internal + + + + backup_run - - - - - - - - Use internal storage - - internal + + + + Swipe to Back Up @@ -1639,56 +1520,20 @@ - - - - - - - Use external SD - - external - - - - - - - - - - Use external SD - - external - - - - - - - - - - Use internal storage - - internal - - - - - - - - - - Use internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=restore + selectstorage + - +
Select Package to Restore: @@ -1729,18 +1574,26 @@ - - - + + + +
+ Restoring: %tw_restore_name% + + + + + +
- + + Rename Backup - tw_backup_rename= tw_fileexists=0 @@ -1750,10 +1603,10 @@ - + + Delete Backup - tw_back=restore tw_action=cmd @@ -1767,111 +1620,30 @@ - - - - restore_run - - - - - - Swipe to Restore - - - - - System - - - - - - - - - Data - - - - - - - - - Boot - - - - - - - - - Cache - - - - - - - - - .android_secure - - - - - - - - - sd-ext - - - - - - - - - %tw_sp1_name% - - - - - - - + - %tw_sp2_name% - - + Enable MD5 verification of backup files. + - - - - %tw_sp3_name% - - - + + + + Package Date: %tw_restore_file_date% - - - - Enable MD5 verification of backup files. - - + + + + restore_run - - Package Date: %tw_restore_file_date% + + Swipe to Restore @@ -1979,216 +1751,70 @@ - + - - - - Mount Menu - - - - - - - Mount System - - /system - - - - - - - Unmount System - - /system - - - - - - - Mount Data - - /data - - - - - - - Unmount Data - - /data - - - - - - - Mount Cache - - /cache - - - - - - - Unmount Cache - - /cache - - - - - - - - - - Mount SD Card - - EXTERNAL - - - - - - - - - - Unmount SD Card - - EXTERNAL - - - - - - - - - - - Mount Internal - - INTERNAL - - - - - - - - - - - Unmount Internal - - INTERNAL - - - - - - - - - - Mount SD-Ext - - /sd-ext - - - - - - - Unmount SD-Ext - - /sd-ext + + + +
+ + Select Storage: + + + + + +
- - - - - - - - Mount Boot - - /boot + + + main - - - - - - - - Unmount Boot - - /boot + + + + %tw_back% + - - - - - - - - Use external SD - - external - + + - - - - - - - - Use external SD - - external - + + - - - - - - - - Use internal storage - - internal + + + +
+ + Select Partitions to Mount: + + + + +
- - - - - - - Use internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=mount + selectstorage + - + Mount USB Storage @@ -2201,7 +1827,7 @@ - + Decrypt Data diff --git a/gui/devices/720x1280/res/images/exclamation400.png b/gui/devices/720x1280/res/images/exclamation400.png deleted file mode 100644 index f3a8aabb6..000000000 Binary files a/gui/devices/720x1280/res/images/exclamation400.png and /dev/null differ diff --git a/gui/devices/720x1280/res/ui.xml b/gui/devices/720x1280/res/ui.xml index 5d94483c9..e2a02b1e8 100644 --- a/gui/devices/720x1280/res/ui.xml +++ b/gui/devices/720x1280/res/ui.xml @@ -39,12 +39,11 @@ - - + @@ -128,7 +127,7 @@ - + @@ -169,8 +168,20 @@ - - + + + + + + + + + + + + + + @@ -477,56 +488,20 @@ - - - - - - - Use external SD - - external - - - - - - - - - - Use external SD - - external - - - - - - - - - - Use internal storage - - internal - - - - - - - - - - Use internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=install + selectstorage + - +
%tw_zip_location% @@ -838,15 +813,6 @@ - - - - - - - - - @@ -1123,352 +1089,303 @@ - - Wipe Menu + + Factory Reset - - - - - Cache - - - tw_back=wipe - tw_action=wipe - tw_action_param=/cache - tw_text1=Wipe Cache? - tw_action_text1=Wiping Cache... - tw_complete_text1=Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Wipes Data, Cache, and Dalvik - - - - - Dalvik Cache - - - tw_back=wipe - tw_action=wipe - tw_action_param=dalvik - tw_text1=Wipe Dalvik-Cache? - tw_action_text1=Wiping Dalvik-Cache... - tw_complete_text1=Dalvik-Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + + .android_secure - - - - - Factory Reset - - - tw_back=wipe - tw_action=wipe - tw_action_param=data - tw_text1=Factory Reset? - tw_text2=(Wipes Data and Cache) - tw_action_text1=Factory Reset... - tw_complete_text1=Factory Reset Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + + (not including internal storage) - - - - - System - - - tw_back=wipe - tw_action=wipe - tw_action_param=/system - tw_text1=Wipe System? - tw_text2=This will wipe your ROM - tw_action_text1=Wiping System... - tw_complete_text1=System Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + + SD-EXT - - - - - - External Storage - - - tw_back=wipe - tw_action=wipe - tw_action_param=EXTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe External Storage (SD Card)? - tw_action_text1=Wiping External Storage... - tw_complete_text1=External Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Most of the time this is + + + + + + the only wipe that you need. + + + + + + Press back button to cancel. - - + - Internal Storage + Advanced Wipe - - tw_back=wipe - tw_action=wipe - tw_action_param=INTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe Internal Storage? - tw_action_text1=Wiping Internal Storage... - tw_complete_text1=Internal Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + advancedwipe - - + + Format Data - tw_back=wipe - tw_action=wipe - tw_action_param=DATAMEDIA - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Format Data? (This wipes all internal storage - tw_text2=including backups & removes encryption) - tw_text3=Most of the time you do not need to do this. - tw_action_text1=Formatting Data... - tw_complete_text1=Data Format Complete - tw_slider_text=Swipe to Format - tw_show_exclamation=1 - confirm_action + formatdata - - - - - - Android Secure - + + + tw_back=wipe tw_action=wipe - tw_action_param=ANDROIDSECURE - tw_text1=Wipe Android Secure? - tw_action_text1=Wiping Android Secure... - tw_complete_text1=Wipe Android Secure Complete - tw_slider_text=Swipe to Format - confirm_action + tw_action_param=data + tw_action_text1=Factory Reset... + tw_complete_text1=Factory Reset Complete + action_page - - - - - - SD Ext - - - tw_back=wipe - tw_action=wipe - tw_action_param=/sd-ext - tw_text1=Wipe SD-Ext? - tw_action_text1=Wiping SD-Ext... - tw_complete_text1=SD-Ext Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Swipe to Factory Reset - + main - + main - + - Backup Name: %tw_backup_name% + Wipe Menu - - - - Backup Device + + + +
+ + Select Partitions to Wipe: + + + + + +
- + - backup_run + + tw_back=advancedwipe + tw_action=wipe + tw_action_param=LIST + tw_text1=Wipe Selected Partition(s)? + tw_action_text1=Wiping Partition(s)... + tw_complete_text1=Wipe Complete + action_page + - Swipe to Back Up + Swipe to Wipe - - - - - Refresh Sizes - - + + + main - - - - - Set Backup Name - - - tw_fileexists=0 - backupname1 - + + + wipe - - - - System (%tw_backup_system_size% MB) - - + + + + + + + + + + Format Data will wipe all of your apps, - - - - Data (%tw_backup_data_size% MB) - - + + + + backups, pictures, videos, media, and - - - - - Boot (%tw_backup_boot_size% MB) - - + + + + removes encryption on internal storage. - - - - - Recovery (%tw_backup_recovery_size% MB) - - + + + + This cannot be undone. Press back to cancel. - - - - Cache (%tw_backup_cache_size% MB) - - + + + + Type yes to continue. - - - + + + + - .android_secure (%tw_backup_andsec_size% MB) - - - + %tw_confirm_formatdata% + + + formatdata_confirm - - - - - sd-ext (%tw_backup_sdext_size% MB) - - - + + + + + main - - - - - %tw_sp1_name% (%tw_backup_sp1_size% MB) - - + + + wipe - - - - - %tw_sp2_name% (%tw_backup_sp2_size% MB) - - + + + + + + + + tw_back=formatdata + tw_action=wipe + tw_action_param=DATAMEDIA + tw_action_text1=Formatting Data... + tw_complete_text1=Data Format Complete + action_page + - - - - - %tw_sp3_name% (%tw_backup_sp3_size% MB) - - + + + formatdata + + + + - - Free Space: %tw_storage_free_size% MB + + Backup Name: %tw_backup_name% + + + + + +
+ + Select Partitions to Back Up: + + + + + + +
+ + + + + + + Set Backup Name + + tw_fileexists=0 + backupname1 + + + + + + + + + Refresh Sizes + + + + + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=backup + selectstorage + - + Enable compression. @@ -1476,59 +1393,23 @@ - + Skip MD5 generation during backup. - - - - - - - - Use external SD - - external - - - - - - - - - - Use external SD - - external - - - - - - - - - - Use internal storage - - internal + + + + backup_run - - - - - - - - Use internal storage - - internal + + + + Swipe to Back Up @@ -1652,56 +1533,20 @@ - - - - - - - Use external SD - - external - - - - - - - - - - Use external SD - - external - - - - - - - - - - Use internal storage - - internal - - - - - - - - - - Use internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=restore + selectstorage + - +
Select Package to Restore: @@ -1742,18 +1587,26 @@ - - - + + + +
+ Restoring: %tw_restore_name% + + + + + +
- + + Rename Backup - tw_backup_rename= tw_fileexists=0 @@ -1763,10 +1616,10 @@ - + + Delete Backup - tw_back=restore tw_action=cmd @@ -1780,111 +1633,30 @@ - - - - restore_run - - - - - - Swipe to Restore - - - - - System - - - - - - - - - Data - - - - - - - - - Boot - - - - - - - - - Cache - - - - - - - - - .android_secure - - - - - - - - - sd-ext - - - - - - - - - %tw_sp1_name% - - - - - - - + - %tw_sp2_name% - - + Enable MD5 verification of backup files. + - - - - %tw_sp3_name% - - - + + + + Package Date: %tw_restore_file_date% - - - - Enable MD5 verification of backup files. - - + + + + restore_run - - Package Date: %tw_restore_file_date% + + Swipe to Restore @@ -1992,216 +1764,70 @@ - + - - - - Mount Menu - - - - - - - Mount System - - /system - - - - - - - Unmount System - - /system - - - - - - - Mount Data - - /data - - - - - - - Unmount Data - - /data - - - - - - - Mount Cache - - /cache - - - - - - - Unmount Cache - - /cache - - - - - - - - - - Mount SD Card - - EXTERNAL - - - - - - - - - - Unmount SD Card - - EXTERNAL - - - - - - - - - - - Mount Internal - - INTERNAL - - - - - - - - - - - Unmount Internal - - INTERNAL - - - - - - - - - - Mount SD-Ext - - /sd-ext - - - - - - - Unmount SD-Ext - - /sd-ext + + + +
+ + Select Storage: + + + + + +
- - - - - - - - Mount Boot - - /boot + + + main - - - - - - - - Unmount Boot - - /boot + + + + %tw_back% + - - - - - - - - Use external SD - - external - + + - - - - - - - - Use external SD - - external - + + - - - - - - - - Use internal storage - - internal + + + +
+ + Select Partitions to Mount: + + + + +
- - - - - - - Use internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=mount + selectstorage + - + Mount USB Storage @@ -2214,7 +1840,7 @@ - + Decrypt Data diff --git a/gui/devices/800x1280/res/images/exclamation400.png b/gui/devices/800x1280/res/images/exclamation400.png deleted file mode 100644 index f3a8aabb6..000000000 Binary files a/gui/devices/800x1280/res/images/exclamation400.png and /dev/null differ diff --git a/gui/devices/800x1280/res/ui.xml b/gui/devices/800x1280/res/ui.xml index 9e2e2b8e7..7282c929b 100755 --- a/gui/devices/800x1280/res/ui.xml +++ b/gui/devices/800x1280/res/ui.xml @@ -39,12 +39,11 @@ - - - + + @@ -123,7 +122,7 @@ - + @@ -142,7 +141,7 @@ - + @@ -165,8 +164,20 @@ - - + + + + + + + + + + + + + + @@ -465,56 +476,20 @@ - - - - - - - Use external SD - - external - - - - - - - - - - Use external SD - - external - - - - - - - - - - Use internal storage - - internal - - - - - - - - - - Use internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=install + selectstorage + - +
%tw_zip_location% @@ -826,15 +801,6 @@ - - - - - - - - - @@ -1111,352 +1077,303 @@ - - Wipe Menu + + Factory Reset - - - - - Cache - - - tw_back=wipe - tw_action=wipe - tw_action_param=/cache - tw_text1=Wipe Cache? - tw_action_text1=Wiping Cache... - tw_complete_text1=Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Wipes Data, Cache, and Dalvik - - - - - Dalvik Cache - - - tw_back=wipe - tw_action=wipe - tw_action_param=dalvik - tw_text1=Wipe Dalvik-Cache? - tw_action_text1=Wiping Dalvik-Cache... - tw_complete_text1=Dalvik-Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + + .android_secure - - - - - Factory Reset - - - tw_back=wipe - tw_action=wipe - tw_action_param=data - tw_text1=Factory Reset? - tw_text2=(Wipes Data and Cache) - tw_action_text1=Factory Reset... - tw_complete_text1=Factory Reset Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + + (not including internal storage) - - - - - System - - - tw_back=wipe - tw_action=wipe - tw_action_param=/system - tw_text1=Wipe System? - tw_text2=This will wipe your ROM - tw_action_text1=Wiping System... - tw_complete_text1=System Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + + SD-EXT - - - - - - External Storage - - - tw_back=wipe - tw_action=wipe - tw_action_param=EXTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe External Storage (SD Card)? - tw_action_text1=Wiping External Storage... - tw_complete_text1=External Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Most of the time this is + + + + + + the only wipe that you need. + + + + + + Press back button to cancel. - - + - Internal Storage + Advanced Wipe - - tw_back=wipe - tw_action=wipe - tw_action_param=INTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe Internal Storage? - tw_action_text1=Wiping Internal Storage... - tw_complete_text1=Internal Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + advancedwipe - - + + Format Data - tw_back=wipe - tw_action=wipe - tw_action_param=DATAMEDIA - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Format Data? (This wipes all internal storage - tw_text2=including backups & removes encryption) - tw_text3=Most of the time you do not need to do this. - tw_action_text1=Formatting Data... - tw_complete_text1=Data Format Complete - tw_slider_text=Swipe to Format - tw_show_exclamation=1 - confirm_action + formatdata - - - - - - Android Secure - + + + tw_back=wipe tw_action=wipe - tw_action_param=ANDROIDSECURE - tw_text1=Wipe Android Secure? - tw_action_text1=Wiping Android Secure... - tw_complete_text1=Wipe Android Secure Complete - tw_slider_text=Swipe to Format - confirm_action + tw_action_param=data + tw_action_text1=Factory Reset... + tw_complete_text1=Factory Reset Complete + action_page - - - - - - SD Ext - - - tw_back=wipe - tw_action=wipe - tw_action_param=/sd-ext - tw_text1=Wipe SD-Ext? - tw_action_text1=Wiping SD-Ext... - tw_complete_text1=SD-Ext Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Swipe to Factory Reset - + main - + main - + - Backup Name: %tw_backup_name% + Wipe Menu - - - - Backup Device + + + +
+ + Select Partitions to Wipe: + + + + + +
- + - backup_run + + tw_back=advancedwipe + tw_action=wipe + tw_action_param=LIST + tw_text1=Wipe Selected Partition(s)? + tw_action_text1=Wiping Partition(s)... + tw_complete_text1=Wipe Complete + action_page + - Swipe to Back Up + Swipe to Wipe - - - - - Refresh Sizes - - + + + main - - - - - Set Backup Name - - - tw_fileexists=0 - backupname1 - + + + wipe - - - - System (%tw_backup_system_size% MB) - - + + + + + + + + + + Format Data will wipe all of your apps, - - - - Data (%tw_backup_data_size% MB) - - + + + + backups, pictures, videos, media, and - - - - - Boot (%tw_backup_boot_size% MB) - - + + + + removes encryption on internal storage. - - - - - Recovery (%tw_backup_recovery_size% MB) - - + + + + This cannot be undone. Press back to cancel. - - - - Cache (%tw_backup_cache_size% MB) - - + + + + Type yes to continue. - - - + + + + - .android_secure (%tw_backup_andsec_size% MB) - - - + %tw_confirm_formatdata% + + + formatdata_confirm - - - - - sd-ext (%tw_backup_sdext_size% MB) - - - + + + + + main - - - - - %tw_sp1_name% (%tw_backup_sp1_size% MB) - - + + + wipe - - - - - %tw_sp2_name% (%tw_backup_sp2_size% MB) - - + + + + + + + + tw_back=formatdata + tw_action=wipe + tw_action_param=DATAMEDIA + tw_action_text1=Formatting Data... + tw_complete_text1=Data Format Complete + action_page + - - - - - %tw_sp3_name% (%tw_backup_sp3_size% MB) - - + + + formatdata + + + + - - Free Space: %tw_storage_free_size% MB + + Backup Name: %tw_backup_name% + + + + + +
+ + Select Partitions to Back Up: + + + + + + +
+ + + + + + + Set Backup Name + + tw_fileexists=0 + backupname1 + + + + + + + + + Refresh Sizes + + + + + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=backup + selectstorage + - + Enable compression. @@ -1464,59 +1381,23 @@ - + Skip MD5 generation during backup. - - - - - - - - Use external SD - - external - - - - - - - - - - Use external SD - - external - - - - - - - - - - Use internal storage - - internal + + + + backup_run - - - - - - - - Use internal storage - - internal + + + + Swipe to Back Up @@ -1640,56 +1521,20 @@ - - - - - - - Use external SD - - external - - - - - - - - - - Use external SD - - external - - - - - - - - - - Use internal storage - - internal - - - - - - - - - - Use internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=restore + selectstorage + - +
Select Package to Restore: @@ -1730,18 +1575,26 @@ - - - + + + +
+ Restoring: %tw_restore_name% + + + + + +
- + + Rename Backup - tw_backup_rename= tw_fileexists=0 @@ -1751,10 +1604,10 @@ - + + Delete Backup - tw_back=restore tw_action=cmd @@ -1768,111 +1621,30 @@ - - - - restore_run - - - - - - Swipe to Restore - - - - - System - - - - - - - - - Data - - - - - - - - - Boot - - - - - - - - - Cache - - - - - - - - - .android_secure - - - - - - - - - sd-ext - - - - - - - - - %tw_sp1_name% - - - - - - - + - %tw_sp2_name% - - + Enable MD5 verification of backup files. + - - - - %tw_sp3_name% - - - + + + + Package Date: %tw_restore_file_date% - - - - Enable MD5 verification of backup files. - - + + + + restore_run - - Package Date: %tw_restore_file_date% + + Swipe to Restore @@ -1980,216 +1752,70 @@ - + - - - - Mount Menu - - - - - - - Mount System - - /system - - - - - - - Unmount System - - /system - - - - - - - Mount Data - - /data - - - - - - - Unmount Data - - /data - - - - - - - Mount Cache - - /cache - - - - - - - Unmount Cache - - /cache - - - - - - - - - - Mount SD Card - - EXTERNAL - - - - - - - - - - Unmount SD Card - - EXTERNAL - - - - - - - - - - - Mount Internal - - INTERNAL - - - - - - - - - - - Unmount Internal - - INTERNAL - - - - - - - - - - Mount SD-Ext - - /sd-ext - - - - - - - Unmount SD-Ext - - /sd-ext + + + +
+ + Select Storage: + + + + + +
- - - - - - - - Mount Boot - - /boot + + + main - - - - - - - - Unmount Boot - - /boot + + + + %tw_back% + - - - - - - - - Use external SD - - external - + + - - - - - - - - Use external SD - - external - + + - - - - - - - - Use internal storage - - internal + + + +
+ + Select Partitions to Mount: + + + + +
- - - - - - - Use internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=mount + selectstorage + - + Mount USB Storage @@ -2202,7 +1828,7 @@ - + Decrypt Data diff --git a/gui/devices/800x480/res/images/exclamation150.png b/gui/devices/800x480/res/images/exclamation150.png deleted file mode 100644 index 6e05987c1..000000000 Binary files a/gui/devices/800x480/res/images/exclamation150.png and /dev/null differ diff --git a/gui/devices/800x480/res/ui.xml b/gui/devices/800x480/res/ui.xml index 82423709f..97fdf44cd 100755 --- a/gui/devices/800x480/res/ui.xml +++ b/gui/devices/800x480/res/ui.xml @@ -41,7 +41,6 @@ - @@ -180,8 +179,24 @@ - - + + + + + + + + + + + + + + + + + + @@ -515,51 +530,15 @@ - - - - - - - Using external SD - - external - - - - - - - - - - Using external SD - - external - - - - - - - - - - Using internal storage - - internal - - - - - - - - - - Using internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=install + selectstorage + @@ -864,15 +843,6 @@ - - - - - - - - - @@ -1271,220 +1241,92 @@ - + - - - - Mount Menu - - - - - - - Mount USB Storage - - usb_mount + + + +
+ + Select Storage: + + + + + +
- - - - - Mount System - - /system + + + main - - - - - Unmount System - - /system + + + + %tw_back% + - - - - - Mount Data - - /data - + + - - - - - Unmount Data - - /data - + + - - - - - Mount Cache - - /cache + + + + Mount Menu - - - - - Unmount Cache - - /cache + + + +
+ + Select Partitions to Mount: + + + + +
- - - - - - - Mount SDCard - - EXTERNAL - - - - - - - - - - Unmount SDCard - - EXTERNAL - - - - - - - - - - - Mount Internal Storage - - INTERNAL - - - - - - - - - - - Unmount Internal Storage - - INTERNAL - - - - - - - - - - Mount SD-Ext - - /sd-ext - - - - - - - Unmount SD-Ext - - /sd-ext - - - - - - - - - Mount Boot - - /boot - - - - - - - - - - Unmount Boot - - /boot - - - - - - - - - - Using external SD - - external - - - - - - - - + + - Using external SD - - external + + + Decrypt Data + + decrypt - - - - - - - Using internal storage - - internal + + + + Mount USB Storage + + usb_mount - - - - - - - Using internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=mount + selectstorage + @@ -1549,191 +1391,133 @@ - Wipe Menu + Factory Reset: Wipes Data, Cache, and Dalvik + + + + + + + .android_secure + + + + + + + (not including internal storage) + + + + + + + SD-EXT + + + + + + Most of the time this is the only wipe that you need. - + - Cache + Advanced Wipe - - tw_back=wipe - tw_action=wipe - tw_action_param=/cache - tw_text1=Wipe Cache? - tw_action_text1=Wiping Cache... - tw_complete_text1=Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + advancedwipe + + + + - + - Dalvik Cache + Format Data - tw_back=wipe - tw_action=wipe - tw_action_param=dalvik - tw_text1=Wipe Dalvik-Cache? - tw_action_text1=Wiping Dalvik-Cache... - tw_complete_text1=Dalvik-Cache Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action + formatdata - - - - - Factory Reset - + + + + Press back button to cancel. + + + + + tw_back=wipe tw_action=wipe tw_action_param=data - tw_text1=Factory Reset? - tw_text2=(Wipes Data and Cache) tw_action_text1=Factory Reset... tw_complete_text1=Factory Reset Complete - tw_slider_text=Swipe to Wipe - confirm_action + action_page - - - - - System - - - tw_back=wipe - tw_action=wipe - tw_action_param=/system - tw_text1=Wipe System? - tw_text2=This will wipe your ROM - tw_action_text1=Wiping System... - tw_complete_text1=System Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Swipe to Factory Reset - - - - - - External Storage - - - tw_back=wipe - tw_action=wipe - tw_action_param=EXTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe External Storage (SD card)? - tw_action_text1=Wiping External Storage... - tw_complete_text1=External Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + main - - - - - - Internal Storage - - - tw_back=wipe - tw_action=wipe - tw_action_param=INTERNAL - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Wipe Internal Storage? - tw_action_text1=Wiping Internal Storage... - tw_complete_text1=Internal Storage Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + main - - - - - - - - - Format Data - - - tw_back=wipe - tw_action=wipe - tw_action_param=DATAMEDIA - tw_has_action2=1 - tw_action2=set - tw_action2_param=tw_zip_location=/sdcard - tw_text1=Format Data? (This wipes all media - tw_text2=including backups & removes encryption) - tw_text3=Most of the time you do not need to do this. - tw_action_text1=Formatting Data... - tw_complete_text1=Data Format Complete - tw_slider_text=Swipe to Format - tw_show_exclamation=1 - confirm_action - + + + + + + + + + +
+ + Select Partitions to Wipe: + + + + + +
- - - - - - Android Secure - + + + - tw_back=wipe + tw_back=advancedwipe tw_action=wipe - tw_action_param=ANDROIDSECURE - tw_text1=Wipe Android Secure? - tw_action_text1=Wiping Android Secure... - tw_complete_text1=Wipe Android Secure Complete - tw_slider_text=Swipe to Format - confirm_action + tw_action_param=LIST + tw_text1=Wipe Selected Partition(s)? + tw_action_text1=Wiping Partition(s)... + tw_complete_text1=Wipe Complete + action_page - - - - - - SD Ext - - - tw_back=wipe - tw_action=wipe - tw_action_param=/sd-ext - tw_text1=Wipe SD-Ext? - tw_action_text1=Wiping SD-Ext... - tw_complete_text1=SD-Ext Wipe Complete - tw_slider_text=Swipe to Wipe - confirm_action - + + + + Swipe to Wipe @@ -1743,182 +1527,160 @@ - main + wipe - + - Back Up Device + Format Data will wipe all of your apps, backups, pictures, - - Free Space: %tw_storage_free_size% MB + + videos, media, and removes encryption on internal storage. - - Backup Name: %tw_backup_name% + + This cannot be undone. Press back to cancel. - - - - System (%tw_backup_system_size% MB) - - + + + + Type yes to continue. - - + + + + - Data (%tw_backup_data_size% MB) - - + %tw_confirm_formatdata% + + + formatdata_confirm - - - - - Boot (%tw_backup_boot_size% MB) - - - + - - - - - Recovery (%tw_backup_recovery_size% MB) - - + + + main - - - - Cache (%tw_backup_cache_size% MB) - - + + + wipe - - - - - .android_secure (%tw_backup_andsec_size% MB) - - - + + - - - - - sd-ext (%tw_backup_sdext_size% MB) - - + + + + + tw_back=formatdata + tw_action=wipe + tw_action_param=DATAMEDIA + tw_action_text1=Formatting Data... + tw_complete_text1=Data Format Complete + action_page + - - - - - %tw_sp1_name% (%tw_backup_sp1_size% MB) - - + + + formatdata + - - - - - %tw_sp2_name% (%tw_backup_sp2_size% MB) - - - + + - - - - - %tw_sp3_name% (%tw_backup_sp3_size% MB) - - + + + + Back Up Device - - - - Enable Compression (Requires more time) - - + + + +
+ + Select Partitions to Back Up: + + + + + +
- - - - Skip MD5 generation on backups - - + + + + Backup Name: %tw_backup_name% - - - - - - - Using external SD - - external + + + + Refresh Sizes + + - - - - - - - Using external SD - - external + + + + Set Backup Name + + + tw_fileexists=0 + backupname1 + - + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=backup + selectstorage + + + + + - - - - - Using internal storage - - internal + Enable Compression (Requires more time) + + - + - - - - - Using internal storage - - internal + Skip MD5 generation on backups + + @@ -1936,27 +1698,6 @@ Swipe to Back Up - - - - - Refresh Sizes - - - - - - - - - Set Backup Name - - - tw_fileexists=0 - backupname1 - - - main @@ -2080,51 +1821,15 @@ - - - - - - - Using external SD - - external - - - - - - - - - - Using external SD - - external - - - - - - - - - - Using internal storage - - internal - - - - - - - - - - Using internal storage - - internal + + + + + Storage: %tw_storage_display_name% (%tw_storage_free_size% MB) + + tw_back=restore + selectstorage + @@ -2154,19 +1859,6 @@ - - - - - - - - - Decrypt Data - - decrypt - - main @@ -2195,89 +1887,22 @@ Package Date: %tw_restore_file_date% - - - - System - - - - - - - - - Data - - - - - - - - - Boot - - - - - - - - - Cache - - - - - - - - - .android_secure - - - - - - - - - sd-ext - - - - - - - - - %tw_sp1_name% - - - - - - - - - %tw_sp2_name% - - - - - - - - - %tw_sp3_name% - - - + + + +
+ + Select Partitions to Restore: + + + + + +
- + Enable MD5 checking of backup files @@ -2299,7 +1924,7 @@ - + Delete Backup diff --git a/gui/fileselector.cpp b/gui/fileselector.cpp index 8b5804494..d2be865b3 100644 --- a/gui/fileselector.cpp +++ b/gui/fileselector.cpp @@ -1,4 +1,20 @@ -// FileSelector.cpp - GUIFileSelector object +/* + Copyright 2012 bigbiff/Dees_Troy TeamWin + This file is part of TWRP/TeamWin Recovery Project. + + TWRP is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + TWRP is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with TWRP. If not, see . +*/ #include #include @@ -1003,4 +1019,4 @@ void GUIFileSelector::SetPageFocus(int inFocus) scrollingSpeed = 0; mUpdate = 1; } -} \ No newline at end of file +} diff --git a/gui/fill.cpp b/gui/fill.cpp index 094814e0f..11b700fc5 100644 --- a/gui/fill.cpp +++ b/gui/fill.cpp @@ -35,8 +35,10 @@ GUIFill::GUIFill(xml_node<>* node) return; attr = node->first_attribute("color"); - if (!attr) + if (!attr) { + LOGE("No color specified for fill\n"); return; + } std::string color = attr->value(); ConvertStrToColor(color, &mColor); diff --git a/gui/listbox.cpp b/gui/listbox.cpp index 605172348..910a6a399 100644 --- a/gui/listbox.cpp +++ b/gui/listbox.cpp @@ -1,4 +1,20 @@ -// FileSelector.cpp - GUIFileSelector object +/* + Copyright 2013 bigbiff/Dees_Troy TeamWin + This file is part of TWRP/TeamWin Recovery Project. + + TWRP is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + TWRP is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with TWRP. If not, see . +*/ #include #include diff --git a/gui/objects.hpp b/gui/objects.hpp index 3a39fe565..973c3cfe9 100644 --- a/gui/objects.hpp +++ b/gui/objects.hpp @@ -1,3 +1,20 @@ +/* + Copyright 2013 bigbiff/Dees_Troy TeamWin + This file is part of TWRP/TeamWin Recovery Project. + + TWRP is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + TWRP is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with TWRP. If not, see . +*/ // objects.h - Base classes for object manager of GUI #ifndef _OBJECTS_HEADER @@ -17,6 +34,7 @@ using namespace rapidxml; #include "../data.hpp" #include "resources.hpp" #include "pages.hpp" +#include "../partitions.hpp" class RenderObject { @@ -357,6 +375,8 @@ protected: bool mRendered; bool hasHighlightColor; bool renderHighlight; + bool hasFill; + COLOR mFillColor; COLOR mHighlightColor; }; @@ -586,6 +606,92 @@ protected: int touchDebounce; }; +class GUIPartitionList : public RenderObject, public ActionObject +{ +public: + GUIPartitionList(xml_node<>* node); + virtual ~GUIPartitionList(); + +public: + // Render - Render the full object to the GL surface + // Return 0 on success, <0 on error + virtual int Render(void); + + // Update - Update any UI component animations (called <= 30 FPS) + // Return 0 if nothing to update, 1 on success and contiue, >1 if full render required, and <0 on error + virtual int Update(void); + + // NotifyTouch - Notify of a touch event + // Return 0 on success, >0 to ignore remainder of touch, and <0 on error + virtual int NotifyTouch(TOUCH_STATE state, int x, int y); + + // NotifyVarChange - Notify of a variable change + virtual int NotifyVarChange(std::string varName, std::string value); + + // SetPos - Update the position of the render object + // Return 0 on success, <0 on error + virtual int SetRenderPos(int x, int y, int w = 0, int h = 0); + + // SetPageFocus - Notify when a page gains or loses focus + virtual void SetPageFocus(int inFocus); + +protected: + +protected: + virtual int GetSelection(int x, int y); + virtual void MatchList(void); + +protected: + std::vector mList; + std::string ListType; + std::string mVariable; + std::string selectedList; + std::string currentValue; + std::string mHeaderText; + std::string mLastValue; + int actualLineHeight; + int mStart; + int startY; + int mSeparatorH, mHeaderSeparatorH; + int mLineSpacing; + int mUpdate; + int mBackgroundX, mBackgroundY, mBackgroundW, mBackgroundH, mHeaderH; + int mFastScrollW; + int mFastScrollLineW; + int mFastScrollRectW; + int mFastScrollRectH; + int mFastScrollRectX; + int mFastScrollRectY; + int mIconWidth, mIconHeight, mSelectedIconWidth, mSelectedIconHeight, mUnselectedIconWidth, mUnselectedIconHeight, mHeaderIconHeight, mHeaderIconWidth; + int scrollingSpeed; + int scrollingY; + static int mSortOrder; + unsigned mFontHeight; + unsigned mLineHeight; + Resource* mHeaderIcon; + Resource* mIconSelected; + Resource* mIconUnselected; + Resource* mBackground; + Resource* mFont; + COLOR mBackgroundColor; + COLOR mFontColor; + COLOR mHeaderBackgroundColor; + COLOR mHeaderFontColor; + COLOR mSeparatorColor; + COLOR mHeaderSeparatorColor; + COLOR mFastScrollLineColor; + COLOR mFastScrollRectColor; + bool hasHighlightColor; + bool hasFontHighlightColor; + bool isHighlighted; + COLOR mHighlightColor; + COLOR mFontHighlightColor; + int mHeaderIsStatic; + int startSelection; + int touchDebounce; + bool updateList; +}; + // GUIAnimation - Used for animations class GUIAnimation : public RenderObject { diff --git a/gui/pages.cpp b/gui/pages.cpp index c4a65b43a..40de44f79 100644 --- a/gui/pages.cpp +++ b/gui/pages.cpp @@ -1,4 +1,21 @@ -// base_objects.cpp - Source to manage GUI base objects +/* + Copyright 2013 bigbiff/Dees_Troy TeamWin + This file is part of TWRP/TeamWin Recovery Project. + + TWRP is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + TWRP is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with TWRP. If not, see . +*/ +// pages.cpp - Source to manage GUI base objects #include #include @@ -276,6 +293,12 @@ bool Page::ProcessNode(xml_node<>* page, xml_node<>* templates /* = NULL */, int mActions.push_back(element); mInputs.push_back(element); } + else if (type == "partitionlist") + { + GUIPartitionList* element = new GUIPartitionList(child); + mRenders.push_back(element); + mActions.push_back(element); + } else if (type == "template") { if (!templates || !child->first_attribute("name")) diff --git a/gui/partitionlist.cpp b/gui/partitionlist.cpp new file mode 100644 index 000000000..9f9321c0b --- /dev/null +++ b/gui/partitionlist.cpp @@ -0,0 +1,926 @@ +/* + Copyright 2013 bigbiff/Dees_Troy TeamWin + This file is part of TWRP/TeamWin Recovery Project. + + TWRP is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + TWRP is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with TWRP. If not, see . +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +extern "C" { +#include "../common.h" +#include "../roots.h" +#include "../minuitwrp/minui.h" +#include "../recovery_ui.h" +} + +#include "rapidxml.hpp" +#include "objects.hpp" +#include "../data.hpp" +#include "../twrp-functions.hpp" +#include "../partitions.hpp" + +#define SCROLLING_SPEED_DECREMENT 6 +#define SCROLLING_FLOOR 10 +#define SCROLLING_MULTIPLIER 6 + +GUIPartitionList::GUIPartitionList(xml_node<>* node) +{ + xml_attribute<>* attr; + xml_node<>* child; + int header_separator_color_specified = 0, header_separator_height_specified = 0, header_text_color_specified = 0, header_background_color_specified = 0; + + mStart = mLineSpacing = startY = mFontHeight = mSeparatorH = scrollingY = scrollingSpeed = 0; + mIconWidth = mIconHeight = mSelectedIconHeight = mSelectedIconWidth = mUnselectedIconHeight = mUnselectedIconWidth = mHeaderIconHeight = mHeaderIconWidth = 0; + mHeaderSeparatorH = mLineHeight = mHeaderIsStatic = mHeaderH = actualLineHeight = 0; + mIconSelected = mIconUnselected = mBackground = mFont = mHeaderIcon = NULL; + mBackgroundX = mBackgroundY = mBackgroundW = mBackgroundH = 0; + mFastScrollW = mFastScrollLineW = mFastScrollRectW = mFastScrollRectH = 0; + mFastScrollRectX = mFastScrollRectY = -1; + mUpdate = 0; + touchDebounce = 6; + ConvertStrToColor("black", &mBackgroundColor); + ConvertStrToColor("black", &mHeaderBackgroundColor); + ConvertStrToColor("black", &mSeparatorColor); + ConvertStrToColor("black", &mHeaderSeparatorColor); + ConvertStrToColor("white", &mFontColor); + ConvertStrToColor("white", &mHeaderFontColor); + ConvertStrToColor("white", &mFastScrollLineColor); + ConvertStrToColor("white", &mFastScrollRectColor); + hasHighlightColor = false; + hasFontHighlightColor = false; + isHighlighted = false; + updateList = false; + startSelection = -1; + + // Load header text + child = node->first_node("header"); + if (child) + { + attr = child->first_attribute("icon"); + if (attr) + mHeaderIcon = PageManager::FindResource(attr->value()); + + attr = child->first_attribute("background"); + if (attr) + { + std::string color = attr->value(); + ConvertStrToColor(color, &mHeaderBackgroundColor); + header_background_color_specified = -1; + } + attr = child->first_attribute("textcolor"); + if (attr) + { + std::string color = attr->value(); + ConvertStrToColor(color, &mHeaderFontColor); + header_text_color_specified = -1; + } + attr = child->first_attribute("separatorcolor"); + if (attr) + { + std::string color = attr->value(); + ConvertStrToColor(color, &mHeaderSeparatorColor); + header_separator_color_specified = -1; + } + attr = child->first_attribute("separatorheight"); + if (attr) { + string parsevalue = gui_parse_text(attr->value()); + mHeaderSeparatorH = atoi(parsevalue.c_str()); + header_separator_height_specified = -1; + } + } + child = node->first_node("text"); + if (child) mHeaderText = child->value(); + + memset(&mHighlightColor, 0, sizeof(COLOR)); + child = node->first_node("highlight"); + if (child) { + attr = child->first_attribute("color"); + if (attr) { + hasHighlightColor = true; + std::string color = attr->value(); + ConvertStrToColor(color, &mHighlightColor); + } + } + + // Simple way to check for static state + mLastValue = gui_parse_text(mHeaderText); + if (mLastValue != mHeaderText) + mHeaderIsStatic = 0; + else + mHeaderIsStatic = -1; + + child = node->first_node("icon"); + if (child) + { + attr = child->first_attribute("selected"); + if (attr) + mIconSelected = PageManager::FindResource(attr->value()); + attr = child->first_attribute("unselected"); + if (attr) + mIconUnselected = PageManager::FindResource(attr->value()); + } + child = node->first_node("background"); + if (child) + { + attr = child->first_attribute("resource"); + if (attr) + mBackground = PageManager::FindResource(attr->value()); + attr = child->first_attribute("color"); + if (attr) + { + std::string color = attr->value(); + ConvertStrToColor(color, &mBackgroundColor); + if (!header_background_color_specified) + ConvertStrToColor(color, &mHeaderBackgroundColor); + } + } + + // Load the placement + LoadPlacement(node->first_node("placement"), &mRenderX, &mRenderY, &mRenderW, &mRenderH); + SetActionPos(mRenderX, mRenderY, mRenderW, mRenderH); + + // Load the font, and possibly override the color + child = node->first_node("font"); + if (child) + { + attr = child->first_attribute("resource"); + if (attr) + mFont = PageManager::FindResource(attr->value()); + + attr = child->first_attribute("color"); + if (attr) + { + std::string color = attr->value(); + ConvertStrToColor(color, &mFontColor); + if (!header_text_color_specified) + ConvertStrToColor(color, &mHeaderFontColor); + } + + attr = child->first_attribute("spacing"); + if (attr) { + string parsevalue = gui_parse_text(attr->value()); + mLineSpacing = atoi(parsevalue.c_str()); + } + + attr = child->first_attribute("highlightcolor"); + memset(&mFontHighlightColor, 0, sizeof(COLOR)); + if (attr) + { + std::string color = attr->value(); + ConvertStrToColor(color, &mFontHighlightColor); + hasFontHighlightColor = true; + } + } + + // Load the separator if it exists + child = node->first_node("separator"); + if (child) + { + attr = child->first_attribute("color"); + if (attr) + { + std::string color = attr->value(); + ConvertStrToColor(color, &mSeparatorColor); + if (!header_separator_color_specified) + ConvertStrToColor(color, &mHeaderSeparatorColor); + } + + attr = child->first_attribute("height"); + if (attr) { + string parsevalue = gui_parse_text(attr->value()); + mSeparatorH = atoi(parsevalue.c_str()); + if (!header_separator_height_specified) + mHeaderSeparatorH = mSeparatorH; + } + } + + // Handle the result variable + child = node->first_node("data"); + if (child) + { + attr = child->first_attribute("name"); + if (attr) + mVariable = attr->value(); + attr = child->first_attribute("selectedlist"); + if (attr) + selectedList = attr->value(); + } + + // Fast scroll colors + child = node->first_node("fastscroll"); + if (child) + { + attr = child->first_attribute("linecolor"); + if(attr) + ConvertStrToColor(attr->value(), &mFastScrollLineColor); + + attr = child->first_attribute("rectcolor"); + if(attr) + ConvertStrToColor(attr->value(), &mFastScrollRectColor); + + attr = child->first_attribute("w"); + if (attr) { + string parsevalue = gui_parse_text(attr->value()); + mFastScrollW = atoi(parsevalue.c_str()); + } + + attr = child->first_attribute("linew"); + if (attr) { + string parsevalue = gui_parse_text(attr->value()); + mFastScrollLineW = atoi(parsevalue.c_str()); + } + + attr = child->first_attribute("rectw"); + if (attr) { + string parsevalue = gui_parse_text(attr->value()); + mFastScrollRectW = atoi(parsevalue.c_str()); + } + + attr = child->first_attribute("recth"); + if (attr) { + string parsevalue = gui_parse_text(attr->value()); + mFastScrollRectH = atoi(parsevalue.c_str()); + } + } + + // Retrieve the line height + gr_getFontDetails(mFont ? mFont->GetResource() : NULL, &mFontHeight, NULL); + mLineHeight = mFontHeight; + mHeaderH = mFontHeight; + + if (mIconSelected && mIconSelected->GetResource()) + { + mSelectedIconWidth = gr_get_width(mIconSelected->GetResource()); + mSelectedIconHeight = gr_get_height(mIconSelected->GetResource()); + if (mSelectedIconHeight > (int)mLineHeight) + mLineHeight = mSelectedIconHeight; + mIconWidth = mSelectedIconWidth; + } + + if (mIconUnselected && mIconUnselected->GetResource()) + { + mUnselectedIconWidth = gr_get_width(mIconUnselected->GetResource()); + mUnselectedIconHeight = gr_get_height(mIconUnselected->GetResource()); + if (mUnselectedIconHeight > (int)mLineHeight) + mLineHeight = mUnselectedIconHeight; + if (mUnselectedIconWidth > mIconWidth) + mIconWidth = mUnselectedIconWidth; + } + + if (mHeaderIcon && mHeaderIcon->GetResource()) + { + mHeaderIconWidth = gr_get_width(mHeaderIcon->GetResource()); + mHeaderIconHeight = gr_get_height(mHeaderIcon->GetResource()); + if (mHeaderIconHeight > mHeaderH) + mHeaderH = mHeaderIconHeight; + if (mHeaderIconWidth > mIconWidth) + mIconWidth = mHeaderIconWidth; + } + + mHeaderH += mLineSpacing + mHeaderSeparatorH; + actualLineHeight = mLineHeight + mLineSpacing + mSeparatorH; + if (mHeaderH < actualLineHeight) + mHeaderH = actualLineHeight; + + if (actualLineHeight / 3 > 6) + touchDebounce = actualLineHeight / 3; + + if (mBackground && mBackground->GetResource()) + { + mBackgroundW = gr_get_width(mBackground->GetResource()); + mBackgroundH = gr_get_height(mBackground->GetResource()); + } + + child = node->first_node("listtype"); + if (child) { + attr = child->first_attribute("name"); + if (attr) { + ListType = attr->value(); + PartitionManager.Get_Partition_List(ListType, &mList); + } else { + mList.clear(); + LOGE("No partition listtype name specified for partitionlist GUI element\n"); + return; + } + } else { + mList.clear(); + LOGE("No partition listtype specified for partitionlist GUI element\n"); + return; + } +} + +GUIPartitionList::~GUIPartitionList() +{ +} + +int GUIPartitionList::Render(void) +{ + // First step, fill background + gr_color(mBackgroundColor.red, mBackgroundColor.green, mBackgroundColor.blue, 255); + gr_fill(mRenderX, mRenderY + mHeaderH, mRenderW, mRenderH - mHeaderH); + + // Next, render the background resource (if it exists) + if (mBackground && mBackground->GetResource()) + { + mBackgroundX = mRenderX + ((mRenderW - mBackgroundW) / 2); + mBackgroundY = mRenderY + ((mRenderH - mBackgroundH) / 2); + gr_blit(mBackground->GetResource(), 0, 0, mBackgroundW, mBackgroundH, mBackgroundX, mBackgroundY); + } + + // This tells us how many lines we can actually render + int lines = (mRenderH - mHeaderH) / (actualLineHeight); + int line; + + if (updateList) { + mList.clear(); + PartitionManager.Get_Partition_List(ListType, &mList); + updateList = false; + if (ListType == "backup") + MatchList(); + } + + int listSize = mList.size(); + int listW = mRenderW; + + if (listSize < lines) { + lines = listSize; + scrollingY = 0; + mFastScrollRectX = mFastScrollRectY = -1; + } else { + lines++; + if (lines < listSize) + lines++; + if (listSize >= lines) + listW -= mFastScrollW; // space for fast scrollbar + else + mFastScrollRectX = mFastScrollRectY = -1; // no fast scrollbar + } + + void* fontResource = NULL; + if (mFont) fontResource = mFont->GetResource(); + + int yPos = mRenderY + mHeaderH + scrollingY; + int fontOffsetY = (int)((actualLineHeight - mFontHeight) / 2); + int currentIconHeight = 0, currentIconWidth = 0; + int currentIconOffsetY = 0, currentIconOffsetX = 0; + int UnselectedIconOffsetY = (int)((actualLineHeight - mUnselectedIconHeight) / 2), SelectedIconOffsetY = (int)((actualLineHeight - mSelectedIconHeight) / 2); + int UnselectedIconOffsetX = (mIconWidth - mUnselectedIconWidth) / 2, SelectedIconOffsetX = (mIconWidth - mSelectedIconWidth) / 2; + int actualSelection = mStart; + + if (isHighlighted) { + int selectY = scrollingY; + + // Locate the correct line for highlighting + while (selectY + actualLineHeight < startSelection) { + selectY += actualLineHeight; + actualSelection++; + } + if (hasHighlightColor) { + // Highlight the area + gr_color(mHighlightColor.red, mHighlightColor.green, mHighlightColor.blue, 255); + int HighlightHeight = actualLineHeight; + if (mRenderY + mHeaderH + selectY + actualLineHeight > mRenderH + mRenderY) { + HighlightHeight = actualLineHeight - (mRenderY + mHeaderH + selectY + actualLineHeight - mRenderH - mRenderY); + } + gr_fill(mRenderX, mRenderY + mHeaderH + selectY, mRenderW, HighlightHeight); + } + } + + for (line = 0; line < lines; line++) + { + Resource* icon; + std::string label; + + if (line + mStart >= listSize) + continue; + + label = mList.at(line + mStart).Display_Name; + if (isHighlighted && hasFontHighlightColor && line + mStart == actualSelection) { + // Use the highlight color for the font + gr_color(mFontHighlightColor.red, mFontHighlightColor.green, mFontHighlightColor.blue, 255); + } else { + // Set the color for the font + gr_color(mFontColor.red, mFontColor.green, mFontColor.blue, 255); + } + + if (mList.at(line + mStart).selected != 0) + { + icon = mIconSelected; + currentIconHeight = mSelectedIconHeight; + currentIconWidth = mSelectedIconWidth; + currentIconOffsetY = SelectedIconOffsetY; + currentIconOffsetX = SelectedIconOffsetX; + } + else + { + icon = mIconUnselected; + currentIconHeight = mSelectedIconHeight; + currentIconWidth = mSelectedIconWidth; + currentIconOffsetY = SelectedIconOffsetY; + currentIconOffsetX = SelectedIconOffsetX; + } + + if (icon && icon->GetResource()) + { + int rect_y = 0, image_y = (yPos + currentIconOffsetY); + if (image_y + currentIconHeight > mRenderY + mRenderH) + rect_y = mRenderY + mRenderH - image_y; + else + rect_y = currentIconHeight; + gr_blit(icon->GetResource(), 0, 0, currentIconWidth, rect_y, mRenderX + currentIconOffsetX, image_y); + } + gr_textExWH(mRenderX + mIconWidth + 5, yPos + fontOffsetY, label.c_str(), fontResource, mRenderX + listW, mRenderY + mRenderH); + + // Add the separator + if (yPos + actualLineHeight < mRenderH + mRenderY) { + gr_color(mSeparatorColor.red, mSeparatorColor.green, mSeparatorColor.blue, 255); + gr_fill(mRenderX, yPos + actualLineHeight - mSeparatorH, listW, mSeparatorH); + } + + // Move the yPos + yPos += actualLineHeight; + } + + // Render the Header (last so that it overwrites the top most row for per pixel scrolling) + // First step, fill background + gr_color(mHeaderBackgroundColor.red, mHeaderBackgroundColor.green, mHeaderBackgroundColor.blue, 255); + gr_fill(mRenderX, mRenderY, mRenderW, mHeaderH); + + // Now, we need the header (icon + text) + yPos = mRenderY; + { + Resource* headerIcon; + int mIconOffsetX = 0; + + // render the icon if it exists + headerIcon = mHeaderIcon; + if (headerIcon && headerIcon->GetResource()) + { + gr_blit(headerIcon->GetResource(), 0, 0, mHeaderIconWidth, mHeaderIconHeight, mRenderX + ((mHeaderIconWidth - mIconWidth) / 2), (yPos + (int)((mHeaderH - mHeaderIconHeight) / 2))); + mIconOffsetX = mIconWidth; + } + + // render the text + gr_color(mHeaderFontColor.red, mHeaderFontColor.green, mHeaderFontColor.blue, 255); + gr_textExWH(mRenderX + mIconOffsetX + 5, yPos + (int)((mHeaderH - mFontHeight) / 2), mLastValue.c_str(), fontResource, mRenderX + mRenderW, mRenderY + mRenderH); + + // Add the separator + gr_color(mHeaderSeparatorColor.red, mHeaderSeparatorColor.green, mHeaderSeparatorColor.blue, 255); + gr_fill(mRenderX, yPos + mHeaderH - mHeaderSeparatorH, mRenderW, mHeaderSeparatorH); + } + + // render fast scroll + lines = (mRenderH - mHeaderH) / (actualLineHeight); + if(mFastScrollW > 0 && listSize > lines) + { + int startX = listW + mRenderX; + int fWidth = mRenderW - listW; + int fHeight = mRenderH - mHeaderH; + + // line + gr_color(mFastScrollLineColor.red, mFastScrollLineColor.green, mFastScrollLineColor.blue, 255); + gr_fill(startX + fWidth/2, mRenderY + mHeaderH, mFastScrollLineW, mRenderH - mHeaderH); + + // rect + int pct = ((mStart*actualLineHeight - scrollingY)*100)/((listSize)*actualLineHeight-lines*actualLineHeight); + mFastScrollRectX = startX + (fWidth - mFastScrollRectW)/2; + mFastScrollRectY = mRenderY+mHeaderH + ((fHeight - mFastScrollRectH)*pct)/100; + + gr_color(mFastScrollRectColor.red, mFastScrollRectColor.green, mFastScrollRectColor.blue, 255); + gr_fill(mFastScrollRectX, mFastScrollRectY, mFastScrollRectW, mFastScrollRectH); + } + + mUpdate = 0; + return 0; +} + +int GUIPartitionList::Update(void) +{ + if (!mHeaderIsStatic) { + std::string newValue = gui_parse_text(mHeaderText); + if (mLastValue != newValue) { + mLastValue = newValue; + mUpdate = 1; + } + } + + // Check for changes in mount points if the list type is mount and update the list and render if needed + if (ListType == "mount") { + int listSize = mList.size(); + for (int i = 0; i < listSize; i++) { + if (PartitionManager.Is_Mounted_By_Path(mList.at(i).Mount_Point) && !mList.at(i).selected) { + mList.at(i).selected = 1; + mUpdate = 1; + } else if (!PartitionManager.Is_Mounted_By_Path(mList.at(i).Mount_Point) && mList.at(i).selected) { + mList.at(i).selected = 0; + mUpdate = 1; + } + } + } + + if (mUpdate) + { + mUpdate = 0; + if (Render() == 0) + return 2; + } + + // Handle kinetic scrolling + if (scrollingSpeed == 0) { + // Do nothing + } else if (scrollingSpeed > 0) { + if (scrollingSpeed < ((int) (actualLineHeight * 2.5))) { + scrollingY += scrollingSpeed; + scrollingSpeed -= SCROLLING_SPEED_DECREMENT; + } else { + scrollingY += ((int) (actualLineHeight * 2.5)); + scrollingSpeed -= SCROLLING_SPEED_DECREMENT; + } + while (mStart && scrollingY > 0) { + mStart--; + scrollingY -= actualLineHeight; + } + if (mStart == 0 && scrollingY > 0) { + scrollingY = 0; + scrollingSpeed = 0; + } else if (scrollingSpeed < SCROLLING_FLOOR) + scrollingSpeed = 0; + mUpdate = 1; + } else if (scrollingSpeed < 0) { + int totalSize = mList.size(); + int lines = (mRenderH - mHeaderH) / (actualLineHeight); + + if (totalSize > lines) { + int bottom_offset = ((int)(mRenderH) - mHeaderH) - (lines * actualLineHeight); + + bottom_offset -= actualLineHeight; + + if (abs(scrollingSpeed) < ((int) (actualLineHeight * 2.5))) { + scrollingY += scrollingSpeed; + scrollingSpeed += SCROLLING_SPEED_DECREMENT; + } else { + scrollingY -= ((int) (actualLineHeight * 2.5)); + scrollingSpeed += SCROLLING_SPEED_DECREMENT; + } + while (mStart + lines + (bottom_offset ? 1 : 0) < totalSize && abs(scrollingY) > actualLineHeight) { + mStart++; + scrollingY += actualLineHeight; + } + if (bottom_offset != 0 && mStart + lines + 1 >= totalSize && scrollingY <= bottom_offset) { + mStart = totalSize - lines - 1; + scrollingY = bottom_offset; + } else if (mStart + lines >= totalSize && scrollingY < 0) { + mStart = totalSize - lines; + scrollingY = 0; + } else if (scrollingSpeed * -1 < SCROLLING_FLOOR) + scrollingSpeed = 0; + mUpdate = 1; + } + } + + return 0; +} + +int GUIPartitionList::GetSelection(int x, int y) +{ + // We only care about y position + if (y < mRenderY || y - mRenderY <= mHeaderH || y - mRenderY > mRenderH) return -1; + return (y - mRenderY - mHeaderH); +} + +int GUIPartitionList::NotifyTouch(TOUCH_STATE state, int x, int y) +{ + static int lastY = 0, last2Y = 0; + int selection = 0; + + switch (state) + { + case TOUCH_START: + if (scrollingSpeed != 0) + startSelection = -1; + else + startSelection = GetSelection(x,y); + isHighlighted = (startSelection > -1); + if (isHighlighted) + mUpdate = 1; + startY = lastY = last2Y = y; + scrollingSpeed = 0; + break; + + case TOUCH_DRAG: + // Check if we dragged out of the selection window + if (GetSelection(x, y) == -1) { + last2Y = lastY = 0; + if (isHighlighted) { + isHighlighted = false; + mUpdate = 1; + } + break; + } + + // Fast scroll + if(mFastScrollRectX != -1 && x >= mRenderX + mRenderW - mFastScrollW) + { + int pct = ((y-mRenderY-mHeaderH)*100)/(mRenderH-mHeaderH); + int totalSize = mList.size(); + int lines = (mRenderH - mHeaderH) / (actualLineHeight); + + float l = float((totalSize-lines)*pct)/100; + if(l + lines >= totalSize) + { + mStart = totalSize - lines; + scrollingY = 0; + } + else + { + mStart = l; + scrollingY = -(l - int(l))*actualLineHeight; + } + + startSelection = -1; + mUpdate = 1; + scrollingSpeed = 0; + isHighlighted = false; + break; + } + + // Provide some debounce on initial touches + if (startSelection != -1 && abs(y - startY) < touchDebounce) { + isHighlighted = true; + mUpdate = 1; + break; + } + + isHighlighted = false; + last2Y = lastY; + lastY = y; + startSelection = -1; + + // Handle scrolling + scrollingY += y - startY; + startY = y; + while(mStart && scrollingY > 0) { + mStart--; + scrollingY -= actualLineHeight; + } + if (mStart == 0 && scrollingY > 0) + scrollingY = 0; + { + int totalSize = mList.size(); + int lines = (mRenderH - mHeaderH) / (actualLineHeight); + + if (totalSize > lines) { + int bottom_offset = ((int)(mRenderH) - mHeaderH) - (lines * actualLineHeight); + + bottom_offset -= actualLineHeight; + + while (mStart + lines + (bottom_offset ? 1 : 0) < totalSize && abs(scrollingY) > actualLineHeight) { + mStart++; + scrollingY += actualLineHeight; + } + if (bottom_offset != 0 && mStart + lines + 1 >= totalSize && scrollingY <= bottom_offset) { + mStart = totalSize - lines - 1; + scrollingY = bottom_offset; + } else if (mStart + lines >= totalSize && scrollingY < 0) { + mStart = totalSize - lines; + scrollingY = 0; + } + } else + scrollingY = 0; + } + mUpdate = 1; + break; + + case TOUCH_RELEASE: + isHighlighted = false; + if (startSelection >= 0) + { + // We've selected an item! + int listSize = mList.size(); + int selectY = scrollingY, actualSelection = mStart; + + // Move the selection to the proper place in the array + while (selectY + actualLineHeight < startSelection) { + selectY += actualLineHeight; + actualSelection++; + } + + if (actualSelection < listSize && ListType == "mount") { + if (!mList.at(actualSelection).selected) { + if (PartitionManager.Mount_By_Path(mList.at(actualSelection).Mount_Point, true)) { + mList.at(actualSelection).selected = 1; + mUpdate = 1; + } + } else { + if (PartitionManager.UnMount_By_Path(mList.at(actualSelection).Mount_Point, true)) { + mList.at(actualSelection).selected = 0; + mUpdate = 1; + } + } + } else if (actualSelection < listSize && !mVariable.empty()) { + if (ListType == "storage") { + int i; + std::string str = mList.at(actualSelection).Mount_Point; + bool update_size = false; + TWPartition* Part = PartitionManager.Find_Partition_By_Path(str); + if (Part == NULL) { + LOGE("Unable to locate partition for '%s'\n", str.c_str()); + return 0; + } + if (!Part->Is_Mounted() && Part->Removable) + update_size = true; + if (!Part->Mount(true)) { + // Do Nothing + } else if (update_size && !Part->Update_Size(true)) { + // Do Nothing + } else { + for (i=0; iFree / 1024 / 1024); + mList.at(actualSelection).Display_Name = Part->Storage_Name + " ("; + mList.at(actualSelection).Display_Name += free_space; + mList.at(actualSelection).Display_Name += "MB)"; + } + mList.at(actualSelection).selected = 1; + mUpdate = 1; + + DataManager::SetValue(mVariable, str); + } + } else { + if (mList.at(actualSelection).selected) + mList.at(actualSelection).selected = 0; + else + mList.at(actualSelection).selected = 1; + + int i; + string variablelist; + for (i=0; i SCROLLING_FLOOR) + scrollingSpeed *= SCROLLING_MULTIPLIER; + else + scrollingSpeed = 0; + } + case TOUCH_REPEAT: + case TOUCH_HOLD: + break; + } + return 0; +} + +int GUIPartitionList::NotifyVarChange(std::string varName, std::string value) +{ + if (!mHeaderIsStatic) { + std::string newValue = gui_parse_text(mHeaderText); + if (mLastValue != newValue) { + mLastValue = newValue; + mStart = 0; + scrollingY = 0; + scrollingSpeed = 0; + mUpdate = 1; + } + } + if (varName == mVariable && !mUpdate) + { + if (ListType == "storage") { + int i, listSize = mList.size(), selected_index = 0; + + currentValue = value; + + for (i=0; i mStart + lines - 1) { + mStart = selected_index; + } else if (selected_index < mStart) { + mStart = selected_index; + } + } else if (ListType == "backup") { + MatchList(); + } else if (ListType == "restore") { + updateList = true; + } + + mUpdate = 1; + return 0; + } + return 0; +} + +int GUIPartitionList::SetRenderPos(int x, int y, int w /* = 0 */, int h /* = 0 */) +{ + mRenderX = x; + mRenderY = y; + if (w || h) + { + mRenderW = w; + mRenderH = h; + } + SetActionPos(mRenderX, mRenderY, mRenderW, mRenderH); + mUpdate = 1; + return 0; +} + +void GUIPartitionList::SetPageFocus(int inFocus) +{ + if (inFocus) { + if (ListType == "storage") { + int i, listSize = mList.size(), selected_index = 0; + + DataManager::GetValue(mVariable, currentValue); + + for (i=0; i mStart + lines - 1) { + mStart = selected_index; + } else if (selected_index < mStart) { + mStart = selected_index; + } + } + updateList = true; + mUpdate = 1; + } +} + +void GUIPartitionList::MatchList(void) { + int i, listSize = mList.size(); + string variablelist, searchvalue; + size_t pos; + + DataManager::GetValue(mVariable, variablelist); + + for (i=0; iGetResource(); h = mFontHeight; + mLastValue = parseText(); w = gr_measureEx(mLastValue.c_str(), fontResource); return 0; } diff --git a/openrecoveryscript.cpp b/openrecoveryscript.cpp index e319a9c61..5a23c1d4a 100644 --- a/openrecoveryscript.cpp +++ b/openrecoveryscript.cpp @@ -215,52 +215,41 @@ int OpenRecoveryScript::run_script_file(void) { DataManager::SetValue("tw_restore", folder_path); PartitionManager.Set_Restore_Files(folder_path); + string Partition_List; + DataManager::GetValue("tw_restore_list", Partition_List); if (strlen(partitions) != 0) { - int tw_restore_system = 0; - int tw_restore_data = 0; - int tw_restore_cache = 0; - int tw_restore_recovery = 0; - int tw_restore_boot = 0; - int tw_restore_andsec = 0; - int tw_restore_sdext = 0; - int tw_restore_sp1 = 0; - int tw_restore_sp2 = 0; - int tw_restore_sp3 = 0; + string Restore_List; memset(value2, 0, sizeof(value2)); strcpy(value2, partitions); ui_print("Setting restore options: '%s':\n", value2); line_len = strlen(value2); for (i=0; i 0) { - tw_restore_system = 1; + if ((value2[i] == 'S' || value2[i] == 's') && Partition_List.find("/system;") != string::npos) { + Restore_List += "/system;"; ui_print("System\n"); - } else if ((value2[i] == 'D' || value2[i] == 'd') && DataManager::GetIntValue(TW_RESTORE_DATA_VAR) > 0) { - tw_restore_data = 1; + } else if ((value2[i] == 'D' || value2[i] == 'd') && Partition_List.find("/data;") != string::npos) { + Restore_List += "/data;"; ui_print("Data\n"); - } else if ((value2[i] == 'C' || value2[i] == 'c') && DataManager::GetIntValue(TW_RESTORE_CACHE_VAR) > 0) { - tw_restore_cache = 1; + } else if ((value2[i] == 'C' || value2[i] == 'c') && Partition_List.find("/cache;") != string::npos) { + Restore_List += "/cache;"; ui_print("Cache\n"); - } else if ((value2[i] == 'R' || value2[i] == 'r') && DataManager::GetIntValue(TW_RESTORE_RECOVERY_VAR) > 0) { - tw_restore_recovery = 1; - ui_print("Recovery\n"); + } else if ((value2[i] == 'R' || value2[i] == 'r') && Partition_List.find("/recovery;") != string::npos) { + ui_print("Recovery -- Not allowed to restore recovery\n"); } else if (value2[i] == '1' && DataManager::GetIntValue(TW_RESTORE_SP1_VAR) > 0) { - tw_restore_sp1 = 1; - ui_print("%s\n", "Special1"); + ui_print("%s\n", "Special1 -- No Longer Supported..."); } else if (value2[i] == '2' && DataManager::GetIntValue(TW_RESTORE_SP2_VAR) > 0) { - tw_restore_sp2 = 1; - ui_print("%s\n", "Special2"); + ui_print("%s\n", "Special2 -- No Longer Supported..."); } else if (value2[i] == '3' && DataManager::GetIntValue(TW_RESTORE_SP3_VAR) > 0) { - tw_restore_sp3 = 1; - ui_print("%s\n", "Special3"); - } else if ((value2[i] == 'B' || value2[i] == 'b') && DataManager::GetIntValue(TW_RESTORE_BOOT_VAR) > 0) { - tw_restore_boot = 1; + ui_print("%s\n", "Special3 -- No Longer Supported..."); + } else if ((value2[i] == 'B' || value2[i] == 'b') && Partition_List.find("/boot;") != string::npos) { + Restore_List += "/boot;"; ui_print("Boot\n"); - } else if ((value2[i] == 'A' || value2[i] == 'a') && DataManager::GetIntValue(TW_RESTORE_ANDSEC_VAR) > 0) { - tw_restore_andsec = 1; + } else if ((value2[i] == 'A' || value2[i] == 'a') && Partition_List.find("/and-sec;") != string::npos) { + Restore_List += "/and-sec;"; ui_print("Android Secure\n"); - } else if ((value2[i] == 'E' || value2[i] == 'e') && DataManager::GetIntValue(TW_RESTORE_SDEXT_VAR) > 0) { - tw_restore_sdext = 1; + } else if ((value2[i] == 'E' || value2[i] == 'e') && Partition_List.find("/sd-ext;") != string::npos) { + Restore_List += "/sd-ext;"; ui_print("SD-Ext\n"); } else if (value2[i] == 'M' || value2[i] == 'm') { DataManager::SetValue(TW_SKIP_MD5_CHECK_VAR, 1); @@ -268,29 +257,14 @@ int OpenRecoveryScript::run_script_file(void) { } } - if (DataManager::GetIntValue(TW_RESTORE_SYSTEM_VAR) && !tw_restore_system) - DataManager::SetValue(TW_RESTORE_SYSTEM_VAR, 0); - if (DataManager::GetIntValue(TW_RESTORE_DATA_VAR) && !tw_restore_data) - DataManager::SetValue(TW_RESTORE_DATA_VAR, 0); - if (DataManager::GetIntValue(TW_RESTORE_CACHE_VAR) && !tw_restore_cache) - DataManager::SetValue(TW_RESTORE_CACHE_VAR, 0); - if (DataManager::GetIntValue(TW_RESTORE_RECOVERY_VAR) && !tw_restore_recovery) - DataManager::SetValue(TW_RESTORE_RECOVERY_VAR, 0); - if (DataManager::GetIntValue(TW_RESTORE_BOOT_VAR) && !tw_restore_boot) - DataManager::SetValue(TW_RESTORE_BOOT_VAR, 0); - if (DataManager::GetIntValue(TW_RESTORE_ANDSEC_VAR) && !tw_restore_andsec) - DataManager::SetValue(TW_RESTORE_ANDSEC_VAR, 0); - if (DataManager::GetIntValue(TW_RESTORE_SDEXT_VAR) && !tw_restore_sdext) - DataManager::SetValue(TW_RESTORE_SDEXT_VAR, 0); - if (DataManager::GetIntValue(TW_RESTORE_SP1_VAR) && !tw_restore_sp1) - DataManager::SetValue(TW_RESTORE_SP1_VAR, 0); - if (DataManager::GetIntValue(TW_RESTORE_SP2_VAR) && !tw_restore_sp2) - DataManager::SetValue(TW_RESTORE_SP2_VAR, 0); - if (DataManager::GetIntValue(TW_RESTORE_SP3_VAR) && !tw_restore_sp3) - DataManager::SetValue(TW_RESTORE_SP3_VAR, 0); + DataManager::SetValue("tw_restore_selected", Restore_List); + } else { + DataManager::SetValue("tw_restore_selected", Partition_List); } - PartitionManager.Run_Restore(folder_path); - ui_print("Restore complete!\n"); + if (!PartitionManager.Run_Restore(folder_path)) + ret_val = 1; + else + ui_print("Restore complete!\n"); } else if (strcmp(command, "mount") == 0) { // Mount DataManager::SetValue("tw_action_text2", "Mounting"); @@ -493,20 +467,10 @@ string OpenRecoveryScript::Locate_Zip_File(string Zip, string Storage_Root) { int OpenRecoveryScript::Backup_Command(string Options) { char value1[SCRIPT_COMMAND_SIZE]; int line_len, i; + string Backup_List; strcpy(value1, Options.c_str()); - DataManager::SetValue(TW_BACKUP_SYSTEM_VAR, 0); - DataManager::SetValue(TW_BACKUP_DATA_VAR, 0); - DataManager::SetValue(TW_BACKUP_CACHE_VAR, 0); - DataManager::SetValue(TW_BACKUP_RECOVERY_VAR, 0); - DataManager::SetValue(TW_BACKUP_SP1_VAR, 0); - DataManager::SetValue(TW_BACKUP_SP2_VAR, 0); - DataManager::SetValue(TW_BACKUP_SP3_VAR, 0); - DataManager::SetValue(TW_BACKUP_BOOT_VAR, 0); - DataManager::SetValue(TW_BACKUP_ANDSEC_VAR, 0); - DataManager::SetValue(TW_BACKUP_SDEXT_VAR, 0); - DataManager::SetValue(TW_BACKUP_SDEXT_VAR, 0); DataManager::SetValue(TW_USE_COMPRESSION_VAR, 0); DataManager::SetValue(TW_SKIP_MD5_GENERATE_VAR, 0); @@ -514,34 +478,31 @@ int OpenRecoveryScript::Backup_Command(string Options) { line_len = Options.size(); for (i=0; i= flags_len) continue; ptr = flags + index; + ptr_len = strlen(ptr); if (strcmp(ptr, "removable") == 0) { Removable = true; } else if (strcmp(ptr, "storage") == 0) { Is_Storage = true; + } else if (strcmp(ptr, "settingsstorage") == 0) { + Is_Storage = true; } else if (strcmp(ptr, "canbewiped") == 0) { Can_Be_Wiped = true; + } else if (ptr_len > 7 && strncmp(ptr, "backup=", 7) == 0) { + ptr += 7; + if (*ptr == '1' || *ptr == 'y' || *ptr == 'Y') + Can_Be_Backed_Up = true; + else + Can_Be_Backed_Up = false; } else if (strcmp(ptr, "wipeingui") == 0) { Can_Be_Wiped = true; Wipe_Available_in_GUI = true; @@ -349,7 +403,7 @@ bool TWPartition::Process_Flags(string Flags, bool Display_Error) { Can_Be_Wiped = true; Wipe_Available_in_GUI = true; Wipe_During_Factory_Reset = true; - } else if (strlen(ptr) > 15 && strncmp(ptr, "subpartitionof=", 15) == 0) { + } else if (ptr_len > 15 && strncmp(ptr, "subpartitionof=", 15) == 0) { ptr += 15; Is_SubPartition = true; SubPartition_Of = ptr; @@ -357,16 +411,37 @@ bool TWPartition::Process_Flags(string Flags, bool Display_Error) { Ignore_Blkid = true; } else if (strcmp(ptr, "retainlayoutversion") == 0) { Retain_Layout_Version = true; - } else if (strlen(ptr) > 8 && strncmp(ptr, "symlink=", 8) == 0) { + } else if (ptr_len > 8 && strncmp(ptr, "symlink=", 8) == 0) { ptr += 8; Symlink_Path = ptr; - } else if (strlen(ptr) > 8 && strncmp(ptr, "display=", 8) == 0) { + } else if (ptr_len > 8 && strncmp(ptr, "display=", 8) == 0) { + has_display_name = true; ptr += 8; + if (*ptr == '\"') ptr++; Display_Name = ptr; - } else if (strlen(ptr) > 10 && strncmp(ptr, "blocksize=", 10) == 0) { + if (Display_Name.substr(Display_Name.size() - 1, 1) == "\"") { + Display_Name.resize(Display_Name.size() - 1); + } + } else if (ptr_len > 11 && strncmp(ptr, "storagename=", 11) == 0) { + has_storage_name = true; + ptr += 11; + if (*ptr == '\"') ptr++; + Storage_Name = ptr; + if (Storage_Name.substr(Storage_Name.size() - 1, 1) == "\"") { + Storage_Name.resize(Storage_Name.size() - 1); + } + } else if (ptr_len > 11 && strncmp(ptr, "backupname=", 10) == 0) { + has_backup_name = true; + ptr += 10; + if (*ptr == '\"') ptr++; + Backup_Display_Name = ptr; + if (Backup_Display_Name.substr(Backup_Display_Name.size() - 1, 1) == "\"") { + Backup_Display_Name.resize(Backup_Display_Name.size() - 1); + } + } else if (ptr_len > 10 && strncmp(ptr, "blocksize=", 10) == 0) { ptr += 10; Format_Block_Size = atoi(ptr); - } else if (strlen(ptr) > 7 && strncmp(ptr, "length=", 7) == 0) { + } else if (ptr_len > 7 && strncmp(ptr, "length=", 7) == 0) { ptr += 7; Length = atoi(ptr); } else { @@ -378,6 +453,14 @@ bool TWPartition::Process_Flags(string Flags, bool Display_Error) { while (index < flags_len && flags[index] != '\0') index++; } + if (has_display_name && !has_storage_name) + Storage_Name = Display_Name; + if (!has_display_name && has_storage_name) + Display_Name = Storage_Name; + if (has_display_name && !has_backup_name) + Backup_Display_Name = Display_Name; + if (!has_display_name && has_backup_name) + Display_Name = Backup_Display_Name; return true; } @@ -452,7 +535,9 @@ void TWPartition::Setup_Image(bool Display_Error) { } void TWPartition::Setup_AndSec(void) { + Backup_Display_Name = "Android Secure"; Backup_Name = "and-sec"; + Can_Be_Backed_Up = true; Has_Android_Secure = true; Symlink_Path = Mount_Point + "/.android_secure"; Symlink_Mount_Point = "/and-sec"; @@ -924,7 +1009,7 @@ bool TWPartition::Wipe_AndSec(void) { if (!Mount(true)) return false; - ui_print("Wiping .android_secure\n"); + ui_print("Wiping %s\n", Backup_Display_Name.c_str()); TWFunc::removeDir(Mount_Point + "/.android_secure/", true); return true; } @@ -1293,13 +1378,8 @@ bool TWPartition::Backup_Tar(string backup_folder) { if (!Mount(true)) return false; - if (Backup_Path == "/and-sec") { - TWFunc::GUI_Operation_Text(TW_BACKUP_TEXT, "Android Secure", "Backing Up"); - ui_print("Backing up %s...\n", "Android Secure"); - } else { - TWFunc::GUI_Operation_Text(TW_BACKUP_TEXT, Display_Name, "Backing Up"); - ui_print("Backing up %s...\n", Display_Name.c_str()); - } + TWFunc::GUI_Operation_Text(TW_BACKUP_TEXT, Backup_Display_Name, "Backing Up"); + ui_print("Backing up %s...\n", Backup_Display_Name.c_str()); DataManager::GetValue(TW_USE_COMPRESSION_VAR, use_compression); @@ -1398,7 +1478,6 @@ bool TWPartition::Restore_Tar(string restore_folder, string Restore_File_System) char split_index[5]; if (Has_Android_Secure) { - ui_print("Wiping android secure...\n"); if (!Wipe_AndSec()) return false; } else { @@ -1406,12 +1485,12 @@ bool TWPartition::Restore_Tar(string restore_folder, string Restore_File_System) if (!Wipe(Restore_File_System)) return false; } + TWFunc::GUI_Operation_Text(TW_RESTORE_TEXT, Backup_Display_Name, "Restoring"); + ui_print("Restoring %s...\n", Backup_Display_Name.c_str()); if (!Mount(true)) return false; - TWFunc::GUI_Operation_Text(TW_RESTORE_TEXT, Display_Name, "Restoring"); - ui_print("Restoring %s...\n", Display_Name.c_str()); Full_FileName = restore_folder + "/" + Backup_FileName; if (!TWFunc::Path_Exists(Full_FileName)) { if (!TWFunc::Path_Exists(Full_FileName)) { @@ -1575,11 +1654,11 @@ void TWPartition::Recreate_Media_Folder(void) { void TWPartition::Recreate_AndSec_Folder(void) { if (!Has_Android_Secure) return; - LOGI("Creating .android_secure: %s\n", Symlink_Path.c_str()); + LOGI("Creating %s: %s\n", Backup_Display_Name.c_str(), Symlink_Path.c_str()); if (!Mount(true)) { - LOGE("Unable to recreate android secure folder.\n"); + LOGE("Unable to recreate %s folder.\n", Backup_Name.c_str()); } else if (!TWFunc::Path_Exists(Symlink_Path)) { - LOGI("Recreating android secure folder.\n"); + LOGI("Recreating %s folder.\n", Backup_Name.c_str()); PartitionManager.Mount_By_Path(Symlink_Mount_Point, true); mkdir(Symlink_Path.c_str(), S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); PartitionManager.UnMount_By_Path(Symlink_Mount_Point, true); diff --git a/partitionmanager.cpp b/partitionmanager.cpp index 4364a2252..f40b35eeb 100644 --- a/partitionmanager.cpp +++ b/partitionmanager.cpp @@ -56,6 +56,7 @@ extern RecoveryUI* ui; int TWPartitionManager::Process_Fstab(string Fstab_Filename, bool Display_Error) { FILE *fstabFile; char fstab_line[MAX_FSTAB_LINE_LENGTH]; + bool Found_Settings_Storage = false; fstabFile = fopen(Fstab_Filename.c_str(), "rt"); if (fstabFile == NULL) { @@ -75,12 +76,36 @@ int TWPartitionManager::Process_Fstab(string Fstab_Filename, bool Display_Error) memset(fstab_line, 0, sizeof(fstab_line)); if (partition->Process_Fstab_Line(line, Display_Error)) { - Partitions.push_back(partition); + if (!Found_Settings_Storage && partition->Is_Settings_Storage) { + Found_Settings_Storage = true; + Partitions.push_back(partition); + DataManager::SetValue("tw_settings_path", partition->Storage_Path); + DataManager::SetValue("tw_storage_path", partition->Storage_Path); + LOGI("Settings storage is '%s'\n", partition->Storage_Path.c_str()); + } else { + partition->Is_Settings_Storage = false; + Partitions.push_back(partition); + } } else { delete partition; } } fclose(fstabFile); + if (!Found_Settings_Storage) { + std::vector::iterator iter; + for (iter = Partitions.begin(); iter != Partitions.end(); iter++) { + if ((*iter)->Is_Storage) { + (*iter)->Is_Settings_Storage = true; + Found_Settings_Storage = true; + DataManager::SetValue("tw_settings_path", (*iter)->Storage_Path); + DataManager::SetValue("tw_storage_path", (*iter)->Storage_Path); + LOGI("Settings storage is '%s'\n", (*iter)->Storage_Path.c_str()); + break; + } + } + if (!Found_Settings_Storage) + LOGE("Unable to locate storage partition for storing settings file.\n"); + } if (!Write_Fstab()) { if (Display_Error) LOGE("Error creating fstab\n"); @@ -136,8 +161,12 @@ void TWPartitionManager::Output_Partition(TWPartition* Part) { printf(" Used: %iMB Free: %iMB Backup Size: %iMB", (int)(Part->Used / mb), (int)(Part->Free / mb), (int)(Part->Backup_Size / mb)); } printf("\n Flags: "); + if (Part->Can_Be_Mounted) + printf("Can_Be_Mounted "); if (Part->Can_Be_Wiped) printf("Can_Be_Wiped "); + if (Part->Can_Be_Backed_Up) + printf("Can_Be_Backed_Up "); if (Part->Wipe_During_Factory_Reset) printf("Wipe_During_Factory_Reset "); if (Part->Wipe_Available_in_GUI) @@ -162,6 +191,8 @@ void TWPartitionManager::Output_Partition(TWPartition* Part) { printf("Has_Android_Secure "); if (Part->Is_Storage) printf("Is_Storage "); + if (Part->Is_Settings_Storage) + printf("Is_Settings_Storage "); if (Part->Ignore_Blkid) printf("Ignore_Blkid "); if (Part->Retain_Layout_Version) @@ -183,10 +214,14 @@ void TWPartitionManager::Output_Partition(TWPartition* Part) { printf(" Length: %i\n", Part->Length); if (!Part->Display_Name.empty()) printf(" Display_Name: %s\n", Part->Display_Name.c_str()); + if (!Part->Storage_Name.empty()) + printf(" Storage_Name: %s\n", Part->Storage_Name.c_str()); if (!Part->Backup_Path.empty()) printf(" Backup_Path: %s\n", Part->Backup_Path.c_str()); if (!Part->Backup_Name.empty()) printf(" Backup_Name: %s\n", Part->Backup_Name.c_str()); + if (!Part->Backup_Display_Name.empty()) + printf(" Backup_Display_Name: %s\n", Part->Backup_Display_Name.c_str()); if (!Part->Backup_FileName.empty()) printf(" Backup_FileName: %s\n", Part->Backup_FileName.c_str()); if (!Part->Storage_Path.empty()) @@ -441,7 +476,7 @@ int TWPartitionManager::Check_Backup_Name(bool Display_Error) { // Check each character strncpy(backup_name, Backup_Name.c_str(), copy_size); - if (strcmp(backup_name, "0") == 0) + if (copy_size == 1 && strncmp(backup_name, "0", 1) == 0) return 0; // A "0" (zero) means to use the current timestamp for the backup name for (index=0; index::iterator subpart; for (subpart = Partitions.begin(); subpart != Partitions.end(); subpart++) { - if ((*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == Part->Mount_Point) { + if ((*subpart)->Can_Be_Backed_Up && (*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == Part->Mount_Point) { if (!(*subpart)->Backup(Backup_Folder)) return false; if (!Make_MD5(generate_md5, Backup_Folder, (*subpart)->Backup_FileName)) @@ -602,23 +636,15 @@ bool TWPartitionManager::Backup_Partition(TWPartition* Part, string Backup_Folde int TWPartitionManager::Run_Backup(void) { int check, do_md5, partition_count = 0; - string Backup_Folder, Backup_Name, Full_Backup_Path; + string Backup_Folder, Backup_Name, Full_Backup_Path, Backup_List, backup_path; unsigned long long total_bytes = 0, file_bytes = 0, img_bytes = 0, free_space = 0, img_bytes_remaining, file_bytes_remaining, subpart_size; unsigned long img_time = 0, file_time = 0; - TWPartition* backup_sys = NULL; - TWPartition* backup_data = NULL; - TWPartition* backup_cache = NULL; - TWPartition* backup_recovery = NULL; - TWPartition* backup_boot = NULL; - TWPartition* backup_andsec = NULL; - TWPartition* backup_sdext = NULL; - TWPartition* backup_sp1 = NULL; - TWPartition* backup_sp2 = NULL; - TWPartition* backup_sp3 = NULL; + TWPartition* backup_part = NULL; TWPartition* storage = NULL; std::vector::iterator subpart; struct tm *t; time_t start, stop, seconds, total_start, total_stop; + size_t start_pos = 0, end_pos = 0; seconds = time(0); t = localtime(&seconds); @@ -647,162 +673,38 @@ int TWPartitionManager::Run_Backup(void) { LOGI("Full_Backup_Path is: '%s'\n", Full_Backup_Path.c_str()); LOGI("Calculating backup details...\n"); - DataManager::GetValue(TW_BACKUP_SYSTEM_VAR, check); - if (check) { - backup_sys = Find_Partition_By_Path("/system"); - if (backup_sys != NULL) { - partition_count++; - if (backup_sys->Backup_Method == 1) { - file_bytes += backup_sys->Backup_Size; - } - else - img_bytes += backup_sys->Backup_Size; - } else { - LOGE("Unable to locate system partition.\n"); - DataManager::SetValue(TW_BACKUP_SYSTEM_VAR, 0); - } - } - DataManager::GetValue(TW_BACKUP_DATA_VAR, check); - if (check) { - backup_data = Find_Partition_By_Path("/data"); - if (backup_data != NULL) { - partition_count++; - subpart_size = 0; - if (backup_data->Has_SubPartition) { - for (subpart = Partitions.begin(); subpart != Partitions.end(); subpart++) { - if ((*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == backup_data->Mount_Point) - subpart_size += (*subpart)->Backup_Size; + DataManager::GetValue("tw_backup_list", Backup_List); + if (!Backup_List.empty()) { + end_pos = Backup_List.find(";", start_pos); + while (end_pos != string::npos && start_pos < Backup_List.size()) { + backup_path = Backup_List.substr(start_pos, end_pos - start_pos); + backup_part = Find_Partition_By_Path(backup_path); + if (backup_part != NULL) { + partition_count++; + if (backup_part->Backup_Method == 1) + file_bytes += backup_part->Backup_Size; + else + img_bytes += backup_part->Backup_Size; + if (backup_part->Has_SubPartition) { + std::vector::iterator subpart; + + for (subpart = Partitions.begin(); subpart != Partitions.end(); subpart++) { + if ((*subpart)->Can_Be_Backed_Up && (*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == backup_part->Mount_Point) { + partition_count++; + if ((*subpart)->Backup_Method == 1) + file_bytes += (*subpart)->Backup_Size; + else + img_bytes += (*subpart)->Backup_Size; + } + } } + } else { + LOGE("Unable to locate '%s' partition for backup calculations.\n", backup_path.c_str()); } - if (backup_data->Backup_Method == 1) - file_bytes += backup_data->Backup_Size + subpart_size; - else - img_bytes += backup_data->Backup_Size + subpart_size; - } else { - LOGE("Unable to locate data partition.\n"); - DataManager::SetValue(TW_BACKUP_DATA_VAR, 0); - } - } - DataManager::GetValue(TW_BACKUP_CACHE_VAR, check); - if (check) { - backup_cache = Find_Partition_By_Path("/cache"); - if (backup_cache != NULL) { - partition_count++; - if (backup_cache->Backup_Method == 1) - file_bytes += backup_cache->Backup_Size; - else - img_bytes += backup_cache->Backup_Size; - } else { - LOGE("Unable to locate cache partition.\n"); - DataManager::SetValue(TW_BACKUP_CACHE_VAR, 0); - } - } - DataManager::GetValue(TW_BACKUP_RECOVERY_VAR, check); - if (check) { - backup_recovery = Find_Partition_By_Path("/recovery"); - if (backup_recovery != NULL) { - partition_count++; - if (backup_recovery->Backup_Method == 1) - file_bytes += backup_recovery->Backup_Size; - else - img_bytes += backup_recovery->Backup_Size; - } else { - LOGE("Unable to locate recovery partition.\n"); - DataManager::SetValue(TW_BACKUP_RECOVERY_VAR, 0); - } - } -#ifndef TW_HAS_NO_BOOT_PARTITION - DataManager::GetValue(TW_BACKUP_BOOT_VAR, check); - if (check) { - backup_boot = Find_Partition_By_Path("/boot"); - if (backup_boot != NULL) { - partition_count++; - if (backup_boot->Backup_Method == 1) - file_bytes += backup_boot->Backup_Size; - else - img_bytes += backup_boot->Backup_Size; - } else { - LOGE("Unable to locate boot partition.\n"); - DataManager::SetValue(TW_BACKUP_BOOT_VAR, 0); + start_pos = end_pos + 1; + end_pos = Backup_List.find(";", start_pos); } } -#endif - DataManager::GetValue(TW_BACKUP_ANDSEC_VAR, check); - if (check) { - backup_andsec = Find_Partition_By_Path("/and-sec"); - if (backup_andsec != NULL) { - partition_count++; - if (backup_andsec->Backup_Method == 1) - file_bytes += backup_andsec->Backup_Size; - else - img_bytes += backup_andsec->Backup_Size; - } else { - LOGE("Unable to locate android secure partition.\n"); - DataManager::SetValue(TW_BACKUP_ANDSEC_VAR, 0); - } - } - DataManager::GetValue(TW_BACKUP_SDEXT_VAR, check); - if (check) { - backup_sdext = Find_Partition_By_Path("/sd-ext"); - if (backup_sdext != NULL) { - partition_count++; - if (backup_sdext->Backup_Method == 1) - file_bytes += backup_sdext->Backup_Size; - else - img_bytes += backup_sdext->Backup_Size; - } else { - LOGE("Unable to locate sd-ext partition.\n"); - DataManager::SetValue(TW_BACKUP_SDEXT_VAR, 0); - } - } -#ifdef SP1_NAME - DataManager::GetValue(TW_BACKUP_SP1_VAR, check); - if (check) { - backup_sp1 = Find_Partition_By_Path(EXPAND(SP1_NAME)); - if (backup_sp1 != NULL) { - partition_count++; - if (backup_sp1->Backup_Method == 1) - file_bytes += backup_sp1->Backup_Size; - else - img_bytes += backup_sp1->Backup_Size; - } else { - LOGE("Unable to locate %s partition.\n", EXPAND(SP1_NAME)); - DataManager::SetValue(TW_BACKUP_SP1_VAR, 0); - } - } -#endif -#ifdef SP2_NAME - DataManager::GetValue(TW_BACKUP_SP2_VAR, check); - if (check) { - backup_sp2 = Find_Partition_By_Path(EXPAND(SP2_NAME)); - if (backup_sp2 != NULL) { - partition_count++; - if (backup_sp2->Backup_Method == 1) - file_bytes += backup_sp2->Backup_Size; - else - img_bytes += backup_sp2->Backup_Size; - } else { - LOGE("Unable to locate %s partition.\n", EXPAND(SP2_NAME)); - DataManager::SetValue(TW_BACKUP_SP2_VAR, 0); - } - } -#endif -#ifdef SP3_NAME - DataManager::GetValue(TW_BACKUP_SP3_VAR, check); - if (check) { - backup_sp3 = Find_Partition_By_Path(EXPAND(SP3_NAME)); - if (backup_sp3 != NULL) { - partition_count++; - if (backup_sp3->Backup_Method == 1) - file_bytes += backup_sp3->Backup_Size; - else - img_bytes += backup_sp3->Backup_Size; - } else { - LOGE("Unable to locate %s partition.\n", EXPAND(SP3_NAME)); - DataManager::SetValue(TW_BACKUP_SP3_VAR, 0); - } - } -#endif if (partition_count == 0) { ui_print("No partitions selected for backup.\n"); @@ -836,26 +738,20 @@ int TWPartitionManager::Run_Backup(void) { ui->SetProgress(0.0); - if (!Backup_Partition(backup_sys, Full_Backup_Path, do_md5, &img_bytes_remaining, &file_bytes_remaining, &img_time, &file_time, &img_bytes, &file_bytes)) - return false; - if (!Backup_Partition(backup_data, Full_Backup_Path, do_md5, &img_bytes_remaining, &file_bytes_remaining, &img_time, &file_time, &img_bytes, &file_bytes)) - return false; - if (!Backup_Partition(backup_cache, Full_Backup_Path, do_md5, &img_bytes_remaining, &file_bytes_remaining, &img_time, &file_time, &img_bytes, &file_bytes)) - return false; - if (!Backup_Partition(backup_recovery, Full_Backup_Path, do_md5, &img_bytes_remaining, &file_bytes_remaining, &img_time, &file_time, &img_bytes, &file_bytes)) - return false; - if (!Backup_Partition(backup_boot, Full_Backup_Path, do_md5, &img_bytes_remaining, &file_bytes_remaining, &img_time, &file_time, &img_bytes, &file_bytes)) - return false; - if (!Backup_Partition(backup_andsec, Full_Backup_Path, do_md5, &img_bytes_remaining, &file_bytes_remaining, &img_time, &file_time, &img_bytes, &file_bytes)) - return false; - if (!Backup_Partition(backup_sdext, Full_Backup_Path, do_md5, &img_bytes_remaining, &file_bytes_remaining, &img_time, &file_time, &img_bytes, &file_bytes)) - return false; - if (!Backup_Partition(backup_sp1, Full_Backup_Path, do_md5, &img_bytes_remaining, &file_bytes_remaining, &img_time, &file_time, &img_bytes, &file_bytes)) - return false; - if (!Backup_Partition(backup_sp2, Full_Backup_Path, do_md5, &img_bytes_remaining, &file_bytes_remaining, &img_time, &file_time, &img_bytes, &file_bytes)) - return false; - if (!Backup_Partition(backup_sp3, Full_Backup_Path, do_md5, &img_bytes_remaining, &file_bytes_remaining, &img_time, &file_time, &img_bytes, &file_bytes)) - return false; + start_pos = 0; + end_pos = Backup_List.find(";", start_pos); + while (end_pos != string::npos && start_pos < Backup_List.size()) { + backup_path = Backup_List.substr(start_pos, end_pos - start_pos); + backup_part = Find_Partition_By_Path(backup_path); + if (backup_part != NULL) { + if (!Backup_Partition(backup_part, Full_Backup_Path, do_md5, &img_bytes_remaining, &file_bytes_remaining, &img_time, &file_time, &img_bytes, &file_bytes)) + return false; + } else { + LOGE("Unable to locate '%s' partition for backup process.\n", backup_path.c_str()); + } + start_pos = end_pos + 1; + end_pos = Backup_List.find(";", start_pos); + } // Average BPS if (img_time == 0) @@ -919,23 +815,17 @@ bool TWPartitionManager::Restore_Partition(TWPartition* Part, string Restore_Nam } } time(&Stop); - ui_print("[%s done (%d seconds)]\n\n", Part->Display_Name.c_str(), (int)difftime(Stop, Start)); + ui_print("[%s done (%d seconds)]\n\n", Part->Backup_Display_Name.c_str(), (int)difftime(Stop, Start)); return true; } int TWPartitionManager::Run_Restore(string Restore_Name) { int check_md5, check, partition_count = 0; - TWPartition* restore_sys = NULL; - TWPartition* restore_data = NULL; - TWPartition* restore_cache = NULL; - TWPartition* restore_boot = NULL; - TWPartition* restore_andsec = NULL; - TWPartition* restore_sdext = NULL; - TWPartition* restore_sp1 = NULL; - TWPartition* restore_sp2 = NULL; - TWPartition* restore_sp3 = NULL; + TWPartition* restore_part = NULL; time_t rStart, rStop; time(&rStart); + string Restore_List, restore_path; + size_t start_pos = 0, end_pos; ui_print("\n[RESTORE STARTED]\n\n"); ui_print("Restore folder: '%s'\n", Restore_Name.c_str()); @@ -944,157 +834,65 @@ int TWPartitionManager::Run_Restore(string Restore_Name) { return false; DataManager::GetValue(TW_SKIP_MD5_CHECK_VAR, check_md5); - DataManager::GetValue(TW_RESTORE_SYSTEM_VAR, check); - if (check > 0) { - restore_sys = Find_Partition_By_Path("/system"); - if (restore_sys == NULL) { - LOGE("Unable to locate system partition.\n"); - } else { - partition_count++; - } - } - DataManager::GetValue(TW_RESTORE_DATA_VAR, check); - if (check > 0) { - restore_data = Find_Partition_By_Path("/data"); - if (restore_data == NULL) { - LOGE("Unable to locate data partition.\n"); - } else { - partition_count++; - } - } - DataManager::GetValue(TW_RESTORE_CACHE_VAR, check); - if (check > 0) { - restore_cache = Find_Partition_By_Path("/cache"); - if (restore_cache == NULL) { - LOGE("Unable to locate cache partition.\n"); - } else { - partition_count++; - } - } -#ifndef TW_HAS_NO_BOOT_PARTITION - DataManager::GetValue(TW_RESTORE_BOOT_VAR, check); - if (check > 0) { - restore_boot = Find_Partition_By_Path("/boot"); - if (restore_boot == NULL) { - LOGE("Unable to locate boot partition.\n"); - } else { - partition_count++; - } - } -#endif - DataManager::GetValue(TW_RESTORE_ANDSEC_VAR, check); - if (check > 0) { - restore_andsec = Find_Partition_By_Path("/and-sec"); - if (restore_andsec == NULL) { - LOGE("Unable to locate android secure partition.\n"); - } else { - partition_count++; - } - } - DataManager::GetValue(TW_RESTORE_SDEXT_VAR, check); - if (check > 0) { - restore_sdext = Find_Partition_By_Path("/sd-ext"); - if (restore_sdext == NULL) { - LOGE("Unable to locate sd-ext partition.\n"); - } else { - partition_count++; - } - } -#ifdef SP1_NAME - DataManager::GetValue(TW_RESTORE_SP1_VAR, check); - if (check > 0) { - restore_sp1 = Find_Partition_By_Path(EXPAND(SP1_NAME)); - if (restore_sp1 == NULL) { - LOGE("Unable to locate %s partition.\n", EXPAND(SP1_NAME)); - } else { - partition_count++; - } - } -#endif -#ifdef SP2_NAME - DataManager::GetValue(TW_RESTORE_SP2_VAR, check); - if (check > 0) { - restore_sp2 = Find_Partition_By_Path(EXPAND(SP2_NAME)); - if (restore_sp2 == NULL) { - LOGE("Unable to locate %s partition.\n", EXPAND(SP2_NAME)); - } else { - partition_count++; - } - } -#endif -#ifdef SP3_NAME - DataManager::GetValue(TW_RESTORE_SP3_VAR, check); - if (check > 0) { - restore_sp3 = Find_Partition_By_Path(EXPAND(SP3_NAME)); - if (restore_sp3 == NULL) { - LOGE("Unable to locate %s partition.\n", EXPAND(SP3_NAME)); - } else { - partition_count++; - } - } -#endif - - if (partition_count == 0) { - LOGE("No partitions selected for restore.\n"); - return false; - } - if (check_md5 > 0) { // Check MD5 files first before restoring to ensure that all of them match before starting a restore TWFunc::GUI_Operation_Text(TW_VERIFY_MD5_TEXT, "Verifying MD5"); ui_print("Verifying MD5...\n"); - if (restore_sys != NULL && !restore_sys->Check_MD5(Restore_Name)) - return false; - if (restore_data != NULL && !restore_data->Check_MD5(Restore_Name)) - return false; - if (restore_data != NULL && restore_data->Has_SubPartition) { - std::vector::iterator subpart; - - for (subpart = Partitions.begin(); subpart != Partitions.end(); subpart++) { - if ((*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == restore_data->Mount_Point) { - if (!(*subpart)->Check_MD5(Restore_Name)) - return false; + } else { + ui_print("Skipping MD5 check based on user setting.\n"); + } + DataManager::GetValue("tw_restore_selected", Restore_List); + if (!Restore_List.empty()) { + end_pos = Restore_List.find(";", start_pos); + while (end_pos != string::npos && start_pos < Restore_List.size()) { + restore_path = Restore_List.substr(start_pos, end_pos - start_pos); + restore_part = Find_Partition_By_Path(restore_path); + if (restore_part != NULL) { + partition_count++; + if (check_md5 > 0 && !restore_part->Check_MD5(Restore_Name)) + return false; + if (restore_part->Has_SubPartition) { + std::vector::iterator subpart; + + for (subpart = Partitions.begin(); subpart != Partitions.end(); subpart++) { + if ((*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == restore_part->Mount_Point) { + if (!(*subpart)->Check_MD5(Restore_Name)) + return false; + } + } } + } else { + LOGE("Unable to locate '%s' partition for restoring.\n", restore_path.c_str()); } + start_pos = end_pos + 1; + end_pos = Restore_List.find(";", start_pos); } - if (restore_cache != NULL && !restore_cache->Check_MD5(Restore_Name)) - return false; - if (restore_boot != NULL && !restore_boot->Check_MD5(Restore_Name)) - return false; - if (restore_andsec != NULL && !restore_andsec->Check_MD5(Restore_Name)) - return false; - if (restore_sdext != NULL && !restore_sdext->Check_MD5(Restore_Name)) - return false; - if (restore_sp1 != NULL && !restore_sp1->Check_MD5(Restore_Name)) - return false; - if (restore_sp2 != NULL && !restore_sp2->Check_MD5(Restore_Name)) - return false; - if (restore_sp3 != NULL && !restore_sp3->Check_MD5(Restore_Name)) - return false; - ui_print("Done verifying MD5.\n"); - } else - ui_print("Skipping MD5 check based on user setting.\n"); + } + + if (partition_count == 0) { + LOGE("No partitions selected for restore.\n"); + return false; + } ui_print("Restoring %i partitions...\n", partition_count); ui->SetProgress(0.0); - if (restore_sys != NULL && !Restore_Partition(restore_sys, Restore_Name, partition_count)) - return false; - if (restore_data != NULL && !Restore_Partition(restore_data, Restore_Name, partition_count)) - return false; - if (restore_cache != NULL && !Restore_Partition(restore_cache, Restore_Name, partition_count)) - return false; - if (restore_boot != NULL && !Restore_Partition(restore_boot, Restore_Name, partition_count)) - return false; - if (restore_andsec != NULL && !Restore_Partition(restore_andsec, Restore_Name, partition_count)) - return false; - if (restore_sdext != NULL && !Restore_Partition(restore_sdext, Restore_Name, partition_count)) - return false; - if (restore_sp1 != NULL && !Restore_Partition(restore_sp1, Restore_Name, partition_count)) - return false; - if (restore_sp2 != NULL && !Restore_Partition(restore_sp2, Restore_Name, partition_count)) - return false; - if (restore_sp3 != NULL && !Restore_Partition(restore_sp3, Restore_Name, partition_count)) - return false; + start_pos = 0; + if (!Restore_List.empty()) { + end_pos = Restore_List.find(";", start_pos); + while (end_pos != string::npos && start_pos < Restore_List.size()) { + restore_path = Restore_List.substr(start_pos, end_pos - start_pos); + restore_part = Find_Partition_By_Path(restore_path); + if (restore_part != NULL) { + partition_count++; + if (!Restore_Partition(restore_part, Restore_Name, partition_count)) + return false; + } else { + LOGE("Unable to locate '%s' partition for restoring.\n", restore_path.c_str()); + } + start_pos = end_pos + 1; + end_pos = Restore_List.find(";", start_pos); + } + } TWFunc::GUI_Operation_Text(TW_UPDATE_SYSTEM_DETAILS_TEXT, "Updating System Details"); Update_System_Details(); @@ -1106,16 +904,7 @@ int TWPartitionManager::Run_Restore(string Restore_Name) { void TWPartitionManager::Set_Restore_Files(string Restore_Name) { // Start with the default values - int tw_restore_system = -1; - int tw_restore_data = -1; - int tw_restore_cache = -1; - int tw_restore_recovery = -1; - int tw_restore_boot = -1; - int tw_restore_andsec = -1; - int tw_restore_sdext = -1; - int tw_restore_sp1 = -1; - int tw_restore_sp2 = -1; - int tw_restore_sp3 = -1; + string Restore_List; bool get_date = true; DIR* d; @@ -1170,7 +959,11 @@ void TWPartitionManager::Set_Restore_Files(string Restore_Name) { extn = ptr; } - if (extn == NULL || (strlen(extn) >= 3 && strncmp(extn, "win", 3) != 0)) continue; + if (strcmp(fstype, "log") == 0) continue; + int extnlength = strlen(extn); + if (extn == NULL || (extnlength != 3 && extnlength != 6)) continue; + if (extnlength == 3 && strncmp(extn, "win", 3) != 0) continue; + if (extnlength == 6 && strncmp(extn, "win000", 6) != 0) continue; TWPartition* Part = Find_Partition_By_Path(label); if (Part == NULL) @@ -1184,48 +977,13 @@ void TWPartitionManager::Set_Restore_Files(string Restore_Name) { Part->Backup_FileName.resize(Part->Backup_FileName.size() - strlen(extn) + 3); } - // Now, we just need to find the correct label - if (Part->Backup_Path == "/system") - tw_restore_system = 1; - if (Part->Backup_Path == "/data") - tw_restore_data = 1; - if (Part->Backup_Path == "/cache") - tw_restore_cache = 1; - if (Part->Backup_Path == "/recovery") - tw_restore_recovery = 1; - if (Part->Backup_Path == "/boot") - tw_restore_boot = 1; - if (Part->Backup_Path == "/and-sec") - tw_restore_andsec = 1; - if (Part->Backup_Path == "/sd-ext") - tw_restore_sdext = 1; -#ifdef SP1_NAME - if (Part->Backup_Path == TWFunc::Get_Root_Path(EXPAND(SP1_NAME))) - tw_restore_sp1 = 1; -#endif -#ifdef SP2_NAME - if (Part->Backup_Path == TWFunc::Get_Root_Path(EXPAND(SP2_NAME))) - tw_restore_sp2 = 1; -#endif -#ifdef SP3_NAME - if (Part->Backup_Path == TWFunc::Get_Root_Path(EXPAND(SP3_NAME))) - tw_restore_sp3 = 1; -#endif + Restore_List += Part->Backup_Path + ";"; } closedir(d); - // Set the final values - DataManager::SetValue(TW_RESTORE_SYSTEM_VAR, tw_restore_system); - DataManager::SetValue(TW_RESTORE_DATA_VAR, tw_restore_data); - DataManager::SetValue(TW_RESTORE_CACHE_VAR, tw_restore_cache); - DataManager::SetValue(TW_RESTORE_RECOVERY_VAR, tw_restore_recovery); - DataManager::SetValue(TW_RESTORE_BOOT_VAR, tw_restore_boot); - DataManager::SetValue(TW_RESTORE_ANDSEC_VAR, tw_restore_andsec); - DataManager::SetValue(TW_RESTORE_SDEXT_VAR, tw_restore_sdext); - DataManager::SetValue(TW_RESTORE_SP1_VAR, tw_restore_sp1); - DataManager::SetValue(TW_RESTORE_SP2_VAR, tw_restore_sp2); - DataManager::SetValue(TW_RESTORE_SP3_VAR, tw_restore_sp3); - + // Set the final value + DataManager::SetValue("tw_restore_list", Restore_List); + DataManager::SetValue("tw_restore_selected", Restore_List); return; } @@ -1322,7 +1080,7 @@ int TWPartitionManager::Wipe_Dalvik_Cache(void) { dir.push_back("/cache/dalvik-cache"); dir.push_back("/cache/dc"); ui_print("\nWiping Dalvik Cache Directories...\n"); - for (int i = 0; i < dir.size(); ++i) { + for (unsigned i = 0; i < dir.size(); ++i) { if (stat(dir.at(i).c_str(), &st) == 0) { TWFunc::removeDir(dir.at(i), false); ui_print("Cleaned: %s...\n", dir.at(i).c_str()); @@ -1993,3 +1751,104 @@ int TWPartitionManager::Partition_SDCard(void) { ui_print("Partitioning complete.\n"); return true; } + +void TWPartitionManager::Get_Partition_List(string ListType, std::vector *Partition_List) { + std::vector::iterator iter; + if (ListType == "mount") { + for (iter = Partitions.begin(); iter != Partitions.end(); iter++) { + if ((*iter)->Can_Be_Mounted && !(*iter)->Is_SubPartition) { + struct PartitionList part; + part.Display_Name = (*iter)->Display_Name; + part.Mount_Point = (*iter)->Mount_Point; + part.selected = (*iter)->Is_Mounted(); + Partition_List->push_back(part); + } + } + } else if (ListType == "storage") { + char free_space[255]; + string Current_Storage = DataManager::GetCurrentStoragePath(); + for (iter = Partitions.begin(); iter != Partitions.end(); iter++) { + if ((*iter)->Is_Storage) { + struct PartitionList part; + sprintf(free_space, "%llu", (*iter)->Free / 1024 / 1024); + part.Display_Name = (*iter)->Storage_Name + " ("; + part.Display_Name += free_space; + part.Display_Name += "MB)"; + part.Mount_Point = (*iter)->Storage_Path; + if ((*iter)->Storage_Path == Current_Storage) + part.selected = 1; + else + part.selected = 0; + Partition_List->push_back(part); + } + } + } else if (ListType == "backup") { + char backup_size[255]; + for (iter = Partitions.begin(); iter != Partitions.end(); iter++) { + if ((*iter)->Can_Be_Backed_Up && !(*iter)->Is_SubPartition) { + struct PartitionList part; + sprintf(backup_size, "%llu", (*iter)->Backup_Size / 1024 / 1024); + part.Display_Name = (*iter)->Backup_Display_Name + " ("; + part.Display_Name += backup_size; + part.Display_Name += "MB)"; + part.Mount_Point = (*iter)->Backup_Path; + part.selected = 0; + Partition_List->push_back(part); + } + } + } else if (ListType == "restore") { + string Restore_List, restore_path; + TWPartition* restore_part = NULL; + + DataManager::GetValue("tw_restore_list", Restore_List); + if (!Restore_List.empty()) { + size_t start_pos = 0, end_pos = Restore_List.find(";", start_pos); + while (end_pos != string::npos && start_pos < Restore_List.size()) { + restore_path = Restore_List.substr(start_pos, end_pos - start_pos); + if ((restore_part = Find_Partition_By_Path(restore_path)) != NULL && !restore_part->Is_SubPartition) { + if (restore_part->Backup_Name == "recovery") { + // Don't allow restore of recovery (causes problems on some devices) + } else { + struct PartitionList part; + part.Display_Name = restore_part->Backup_Display_Name; + part.Mount_Point = restore_part->Backup_Path; + part.selected = 1; + Partition_List->push_back(part); + } + } else { + LOGE("Unable to locate '%s' partition for restore.\n", restore_path.c_str()); + } + start_pos = end_pos + 1; + end_pos = Restore_List.find(";", start_pos); + } + } + } else if (ListType == "wipe") { + struct PartitionList dalvik; + dalvik.Display_Name = "Dalvik Cache"; + dalvik.Mount_Point = "DALVIK"; + dalvik.selected = 0; + Partition_List->push_back(dalvik); + for (iter = Partitions.begin(); iter != Partitions.end(); iter++) { + if ((*iter)->Wipe_Available_in_GUI && !(*iter)->Is_SubPartition) { + struct PartitionList part; + part.Display_Name = (*iter)->Display_Name; + part.Mount_Point = (*iter)->Mount_Point; + part.selected = 0; + Partition_List->push_back(part); + } + if ((*iter)->Has_Android_Secure) { + struct PartitionList part; + part.Display_Name = (*iter)->Backup_Display_Name; + part.Mount_Point = (*iter)->Backup_Path; + part.selected = 0; + Partition_List->push_back(part); + } + } + } else { + LOGE("Unknown list type '%s' requested for TWPartitionManager::Get_Partition_List\n", ListType.c_str()); + } +} + +int TWPartitionManager::Fstab_Processed(void) { + return Partitions.size(); +} diff --git a/partitions.hpp b/partitions.hpp index 47436b0ea..704ba68d6 100644 --- a/partitions.hpp +++ b/partitions.hpp @@ -30,6 +30,12 @@ using namespace std; +struct PartitionList { + std::string Display_Name; + std::string Mount_Point; + unsigned int selected; +}; + // Partition class class TWPartition { @@ -67,6 +73,7 @@ public: string Actual_Block_Device; // Actual block device (one of primary, alternate, or decrypted) string MTD_Name; // Name of the partition for MTD devices + protected: bool Process_Fstab_Line(string Line, bool Display_Error); // Processes a fstab line void Find_Actual_Block_Device(); // Determines the correct block device and stores it in Actual_Block_Device @@ -74,6 +81,7 @@ protected: protected: bool Can_Be_Mounted; // Indicates that the partition can be mounted bool Can_Be_Wiped; // Indicates that the partition can be wiped + bool Can_Be_Backed_Up; // Indicates that the partition will show up in the backup list bool Wipe_During_Factory_Reset; // Indicates that this partition is wiped during a factory reset bool Wipe_Available_in_GUI; // Inidcates that the wipe can be user initiated in the GUI system bool Is_SubPartition; // Indicates that this partition is a sub-partition of another partition (e.g. datadata is a sub-partition of data) @@ -98,11 +106,14 @@ protected: bool Is_Decrypted; // This partition has successfully been decrypted string Display_Name; // Display name for the GUI string Backup_Name; // Backup name -- used for backup filenames + string Backup_Display_Name; // Name displayed in the partition list for backup selection + string Storage_Name; // Name displayed in the partition list for storage selection string Backup_FileName; // Actual backup filename Backup_Method_enum Backup_Method; // Method used for backup bool Has_Data_Media; // Indicates presence of /data/media, may affect wiping and backup methods bool Has_Android_Secure; // Indicates the presence of .android_secure on this partition bool Is_Storage; // Indicates if this partition is used for storage for backup, restore, and installing zips + bool Is_Settings_Storage; // Indicates that this storage partition is the location of the .twrps settings file and the location that is used for custom themes string Storage_Path; // Indicates the path to the storage -- root indicates mount point, media/ indicates e.g. /data/media string Fstab_File_System; // File system from the recovery.fstab int Format_Block_Size; // Block size for formatting @@ -143,6 +154,8 @@ private: void Mount_Storage_Retry(void); // Tries multiple times with a half second delay to mount a device in case storage is slow to mount friend class TWPartitionManager; +friend class DataManager; +friend class GUIPartitionList; }; class TWPartitionManager @@ -193,6 +206,9 @@ public: virtual int Partition_SDCard(void); // Repartitions the sdcard virtual int Fix_Permissions(); + virtual void Get_Partition_List(string ListType, std::vector *Partition_List); + virtual int Fstab_Processed(); // Indicates if the fstab has been processed or not + private: bool Make_MD5(bool generate_md5, string Backup_Folder, string Backup_Filename); // Generates an MD5 after a backup is made bool Backup_Partition(TWPartition* Part, string Backup_Folder, bool generate_md5, unsigned long long* img_bytes_remaining, unsigned long long* file_bytes_remaining, unsigned long *img_time, unsigned long *file_time, unsigned long long *img_bytes, unsigned long long *file_bytes); diff --git a/variables.h b/variables.h index 49872f7c6..3808212d4 100644 --- a/variables.h +++ b/variables.h @@ -17,7 +17,7 @@ #ifndef _VARIABLES_HEADER_ #define _VARIABLES_HEADER_ -#define TW_VERSION_STR "2.4.4.0" +#define TW_VERSION_STR "2.5.0.0" #define TW_USE_COMPRESSION_VAR "tw_use_compression" #define TW_FILENAME "tw_filename" -- cgit v1.2.3