From b21cc64ca8f5a9d936d6ece7da120bc0bc65b49f Mon Sep 17 00:00:00 2001 From: Dees Troy Date: Tue, 10 Sep 2013 17:36:41 +0000 Subject: Pull ROM info from build.prop for backup names Change-Id: I7847fca22b5d4f0a35da41625b15bd677a1e9768 --- data.cpp | 2 +- gui/action.cpp | 25 +++++++++++++++++++-- gui/button.cpp | 23 +++++++++---------- gui/devices/1024x600/res/ui.xml | 21 +++++++++++++----- gui/devices/1024x768/res/ui.xml | 21 +++++++++++++----- gui/devices/1080x1920/res/ui.xml | 23 +++++++++++++------ gui/devices/1280x800/res/ui.xml | 21 +++++++++++++----- gui/devices/1920x1200/res/ui.xml | 21 +++++++++++++----- gui/devices/2560x1600/res/ui.xml | 23 +++++++++++++------ gui/devices/320x480/res/ui.xml | 23 +++++++++++++------ gui/devices/480x800/res/ui.xml | 23 +++++++++++++------ gui/devices/480x854/res/ui.xml | 23 +++++++++++++------ gui/devices/540x960/res/ui.xml | 23 +++++++++++++------ gui/devices/720x1280/res/ui.xml | 23 +++++++++++++------ gui/devices/800x1280/res/ui.xml | 23 +++++++++++++------ gui/devices/800x480/res/ui.xml | 21 +++++++++++++----- gui/objects.hpp | 1 + partitionmanager.cpp | 9 ++++---- twrp-functions.cpp | 48 ++++++++++++++++++++++++++++++++++++++++ twrp-functions.hpp | 2 ++ twrp.cpp | 2 +- 21 files changed, 294 insertions(+), 107 deletions(-) diff --git a/data.cpp b/data.cpp index c766f0061..0b0ad1570 100644 --- a/data.cpp +++ b/data.cpp @@ -853,7 +853,7 @@ void DataManager::SetDefaultValues() mValues.insert(make_pair("tw_backup_list", make_pair("/system;/data;/boot;", 1))); #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_NAME, make_pair("(Auto Generate)", 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))); mValues.insert(make_pair(TW_BACKUP_BOOT_VAR, make_pair("1", 1))); diff --git a/gui/action.cpp b/gui/action.cpp index d67e697b0..78e862526 100644 --- a/gui/action.cpp +++ b/gui/action.cpp @@ -701,6 +701,27 @@ int GUIAction::doAction(Action action, int isThreaded /* = 0 */) return 0; } + if (function == "appenddatetobackupname") + { + operation_start("AppendDateToBackupName"); + string Backup_Name; + DataManager::GetValue(TW_BACKUP_NAME, Backup_Name); + Backup_Name += TWFunc::Get_Current_Date(); + if (Backup_Name.size() > MAX_BACKUP_NAME_LEN) + Backup_Name.resize(MAX_BACKUP_NAME_LEN); + DataManager::SetValue(TW_BACKUP_NAME, Backup_Name); + operation_end(0, simulate); + return 0; + } + + if (function == "generatebackupname") + { + operation_start("GenerateBackupName"); + TWFunc::Auto_Generate_Backup_Name(); + operation_end(0, simulate); + return 0; + } + if (isThreaded) { if (function == "fileexists") @@ -893,14 +914,14 @@ int GUIAction::doAction(Action action, int isThreaded /* = 0 */) if (arg == "backup") { string Backup_Name; DataManager::GetValue(TW_BACKUP_NAME, Backup_Name); - if (Backup_Name == "(Current Date)" || Backup_Name == "0" || Backup_Name == "(" || PartitionManager.Check_Backup_Name(true) == 0) { + if (Backup_Name == "(Auto Generate)" || Backup_Name == "(Current Date)" || Backup_Name == "0" || Backup_Name == "(" || PartitionManager.Check_Backup_Name(true) == 0) { ret = PartitionManager.Run_Backup(); } else { operation_end(1, simulate); return -1; } - DataManager::SetValue(TW_BACKUP_NAME, "(Current Date)"); + DataManager::SetValue(TW_BACKUP_NAME, "(Auto Generate)"); } else if (arg == "restore") { string Restore_Name; DataManager::GetValue("tw_restore", Restore_Name); diff --git a/gui/button.cpp b/gui/button.cpp index 9fc85a052..3f9c2df1f 100644 --- a/gui/button.cpp +++ b/gui/button.cpp @@ -110,10 +110,11 @@ GUIButton::GUIButton(xml_node<>* node) } int x, y, w, h; + TextPlacement = TOP_LEFT; if (mButtonImg) { mButtonImg->GetRenderPos(x, y, w, h); } else if (hasFill) { - LoadPlacement(node->first_node("placement"), &x, &y, &w, &h); + LoadPlacement(node->first_node("placement"), &x, &y, &w, &h, &TextPlacement); } SetRenderPos(x, y, w, h); return; @@ -150,14 +151,12 @@ int GUIButton::Render(void) 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) - { + if (TextPlacement == CENTER_X_ONLY) { + mTextX = ((mRenderW - mRenderX) / 2); + } else if (mTextW > mRenderW) { // As a special case, we'll allow large text which automatically moves it to the right. mTextX = mRenderW + mRenderX + 5; mRenderW += mTextW + 5; - } - else - { + } else { mTextX = mRenderX + ((mRenderW - mTextW) / 2); } mButtonLabel->SetRenderPos(mTextX, mTextY); @@ -231,14 +230,12 @@ int GUIButton::SetRenderPos(int x, int y, int w, int h) if (mButtonLabel) mButtonLabel->GetCurrentBounds(mTextW, mTextH); if (mTextW) { - // As a special case, we'll allow large text which automatically moves it to the right. - if (mTextW > mRenderW) - { + if (TextPlacement == CENTER_X_ONLY) { + mTextX = ((mRenderW - mRenderX) / 2); + } else if (mTextW > mRenderW) { // As a special case, we'll allow large text which automatically moves it to the right. mTextX = mRenderW + mRenderX + 5; mRenderW += mTextW + 5; - } - else - { + } else { mTextX = mRenderX + ((mRenderW - mTextW) / 2); } } diff --git a/gui/devices/1024x600/res/ui.xml b/gui/devices/1024x600/res/ui.xml index 2b7d20e2e..bbcaae1f5 100755 --- a/gui/devices/1024x600/res/ui.xml +++ b/gui/devices/1024x600/res/ui.xml @@ -1733,8 +1733,8 @@ - - tw_backup_name= + + @@ -1776,12 +1776,21 @@ - + + + Append Date + + + + + + + Cancel / Clear - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup @@ -1791,7 +1800,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) main @@ -1799,7 +1808,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup diff --git a/gui/devices/1024x768/res/ui.xml b/gui/devices/1024x768/res/ui.xml index b625174a4..97b98c049 100644 --- a/gui/devices/1024x768/res/ui.xml +++ b/gui/devices/1024x768/res/ui.xml @@ -1733,8 +1733,8 @@ - - tw_backup_name= + + @@ -1776,12 +1776,21 @@ - + + + Append Date + + + + + + + Cancel / Clear - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup @@ -1791,7 +1800,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) main @@ -1799,7 +1808,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup diff --git a/gui/devices/1080x1920/res/ui.xml b/gui/devices/1080x1920/res/ui.xml index 25d3ed8ef..5ba884b13 100644 --- a/gui/devices/1080x1920/res/ui.xml +++ b/gui/devices/1080x1920/res/ui.xml @@ -1341,7 +1341,7 @@ - + Backup Name: %tw_backup_name% @@ -1459,8 +1459,8 @@ - - tw_backup_name= + + @@ -1502,12 +1502,21 @@ - + + + Append Date + + + + + + + Cancel - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup @@ -1517,7 +1526,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) main @@ -1525,7 +1534,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup diff --git a/gui/devices/1280x800/res/ui.xml b/gui/devices/1280x800/res/ui.xml index b86f99171..66861f2cb 100644 --- a/gui/devices/1280x800/res/ui.xml +++ b/gui/devices/1280x800/res/ui.xml @@ -1733,8 +1733,8 @@ - - tw_backup_name= + + @@ -1776,12 +1776,21 @@ - + + + Append Date + + + + + + + Cancel / Clear - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup @@ -1791,7 +1800,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) main @@ -1799,7 +1808,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup diff --git a/gui/devices/1920x1200/res/ui.xml b/gui/devices/1920x1200/res/ui.xml index 157005f1a..d1a7829ac 100644 --- a/gui/devices/1920x1200/res/ui.xml +++ b/gui/devices/1920x1200/res/ui.xml @@ -1733,8 +1733,8 @@ - - tw_backup_name= + + @@ -1776,12 +1776,21 @@ - + + + Append Date + + + + + + + Cancel / Clear - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup @@ -1791,7 +1800,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) main @@ -1799,7 +1808,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup diff --git a/gui/devices/2560x1600/res/ui.xml b/gui/devices/2560x1600/res/ui.xml index 3d6b65f5c..23b7c3e02 100644 --- a/gui/devices/2560x1600/res/ui.xml +++ b/gui/devices/2560x1600/res/ui.xml @@ -169,7 +169,7 @@ - + @@ -1733,8 +1733,8 @@ - - tw_backup_name= + + @@ -1776,12 +1776,21 @@ - + + + Append Date + + + + + + + Cancel / Clear - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup @@ -1791,7 +1800,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) main @@ -1799,7 +1808,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup diff --git a/gui/devices/320x480/res/ui.xml b/gui/devices/320x480/res/ui.xml index 0719a942c..893c90cfd 100644 --- a/gui/devices/320x480/res/ui.xml +++ b/gui/devices/320x480/res/ui.xml @@ -1328,7 +1328,7 @@ - + Backup Name: %tw_backup_name% @@ -1446,8 +1446,8 @@ - - tw_backup_name= + + @@ -1489,12 +1489,21 @@ - + + + Append Date + + + + + + + Cancel - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup @@ -1504,7 +1513,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) main @@ -1512,7 +1521,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup diff --git a/gui/devices/480x800/res/ui.xml b/gui/devices/480x800/res/ui.xml index b7b527bb9..690028106 100644 --- a/gui/devices/480x800/res/ui.xml +++ b/gui/devices/480x800/res/ui.xml @@ -1328,7 +1328,7 @@ - + Backup Name: %tw_backup_name% @@ -1446,8 +1446,8 @@ - - tw_backup_name= + + @@ -1489,12 +1489,21 @@ - + + + Append Date + + + + + + + Cancel - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup @@ -1504,7 +1513,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) main @@ -1512,7 +1521,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup diff --git a/gui/devices/480x854/res/ui.xml b/gui/devices/480x854/res/ui.xml index cb6577f20..09c507767 100644 --- a/gui/devices/480x854/res/ui.xml +++ b/gui/devices/480x854/res/ui.xml @@ -1327,7 +1327,7 @@ - + Backup Name: %tw_backup_name% @@ -1445,8 +1445,8 @@ - - tw_backup_name= + + @@ -1488,12 +1488,21 @@ - + + + Append Date + + + + + + + Cancel - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup @@ -1503,7 +1512,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) main @@ -1511,7 +1520,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup diff --git a/gui/devices/540x960/res/ui.xml b/gui/devices/540x960/res/ui.xml index 078f1ae51..f636e2e0e 100644 --- a/gui/devices/540x960/res/ui.xml +++ b/gui/devices/540x960/res/ui.xml @@ -1328,7 +1328,7 @@ - + Backup Name: %tw_backup_name% @@ -1446,8 +1446,8 @@ - - tw_backup_name= + + @@ -1489,12 +1489,21 @@ - + + + Append Date + + + + + + + Cancel - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup @@ -1504,7 +1513,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) main @@ -1512,7 +1521,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup diff --git a/gui/devices/720x1280/res/ui.xml b/gui/devices/720x1280/res/ui.xml index d2896cc94..316b20e78 100644 --- a/gui/devices/720x1280/res/ui.xml +++ b/gui/devices/720x1280/res/ui.xml @@ -1341,7 +1341,7 @@ - + Backup Name: %tw_backup_name% @@ -1459,8 +1459,8 @@ - - tw_backup_name= + + @@ -1502,12 +1502,21 @@ - + + + Append Date + + + + + + + Cancel - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup @@ -1517,7 +1526,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) main @@ -1525,7 +1534,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup diff --git a/gui/devices/800x1280/res/ui.xml b/gui/devices/800x1280/res/ui.xml index ba7dba321..b85084142 100755 --- a/gui/devices/800x1280/res/ui.xml +++ b/gui/devices/800x1280/res/ui.xml @@ -1329,7 +1329,7 @@ - + Backup Name: %tw_backup_name% @@ -1447,8 +1447,8 @@ - - tw_backup_name= + + @@ -1490,12 +1490,21 @@ - + + + Append Date + + + + + + + Cancel - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup @@ -1505,7 +1514,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) main @@ -1513,7 +1522,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup diff --git a/gui/devices/800x480/res/ui.xml b/gui/devices/800x480/res/ui.xml index ba262bcce..cbd3b7da0 100755 --- a/gui/devices/800x480/res/ui.xml +++ b/gui/devices/800x480/res/ui.xml @@ -1741,8 +1741,8 @@ - - tw_backup_name= + + @@ -1784,12 +1784,21 @@ - + + + Append Date + + + + + + + Cancel / Clear - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup @@ -1799,7 +1808,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) main @@ -1807,7 +1816,7 @@ - tw_backup_name=(Current Date) + tw_backup_name=(Auto Generate) backup diff --git a/gui/objects.hpp b/gui/objects.hpp index d37b43e3b..1e272b276 100644 --- a/gui/objects.hpp +++ b/gui/objects.hpp @@ -380,6 +380,7 @@ protected: bool hasFill; COLOR mFillColor; COLOR mHighlightColor; + Placement TextPlacement; }; class GUICheckbox: public RenderObject, public ActionObject, public Conditional diff --git a/partitionmanager.cpp b/partitionmanager.cpp index 78fbfa489..4e72117dd 100644 --- a/partitionmanager.cpp +++ b/partitionmanager.cpp @@ -670,10 +670,11 @@ int TWPartitionManager::Run_Backup(void) { DataManager::GetValue(TW_BACKUPS_FOLDER_VAR, Backup_Folder); DataManager::GetValue(TW_BACKUP_NAME, Backup_Name); - if (Backup_Name == "(Current Date)" || Backup_Name == "0" || Backup_Name.empty()) { - char timestamp[255]; - sprintf(timestamp,"%04d-%02d-%02d--%02d-%02d-%02d",t->tm_year+1900,t->tm_mon+1,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec); - Backup_Name = timestamp; + if (Backup_Name == "(Current Date)") { + Backup_Name = TWFunc::Get_Current_Date(); + } else if (Backup_Name == "(Auto Generate)" || Backup_Name == "0" || Backup_Name.empty()) { + TWFunc::Auto_Generate_Backup_Name(); + DataManager::GetValue(TW_BACKUP_NAME, Backup_Name); } LOGINFO("Backup Name is: '%s'\n", Backup_Name.c_str()); Full_Backup_Path = Backup_Folder + "/" + Backup_Name + "/"; diff --git a/twrp-functions.cpp b/twrp-functions.cpp index 48a9552a5..23299726e 100644 --- a/twrp-functions.cpp +++ b/twrp-functions.cpp @@ -950,3 +950,51 @@ int TWFunc::Wait_For_Child(pid_t pid, int *status, string Child_Name) { } return 0; } + +string TWFunc::Get_Current_Date() { + string Current_Date; + time_t seconds = time(0); + struct tm *t = localtime(&seconds); + char timestamp[255]; + sprintf(timestamp,"%04d-%02d-%02d--%02d-%02d-%02d",t->tm_year+1900,t->tm_mon+1,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec); + Current_Date = timestamp; + return Current_Date; +} + +void TWFunc::Auto_Generate_Backup_Name() { + bool mount_state = PartitionManager.Is_Mounted_By_Path("/system"); + std::vector buildprop; + if (!PartitionManager.Mount_By_Path("/system", true)) { + DataManager::SetValue(TW_BACKUP_NAME, Get_Current_Date()); + return; + } + if (TWFunc::read_file("/system/build.prop", buildprop) != 0) { + LOGINFO("Unable to open /system/build.prop for getting backup name.\n"); + DataManager::SetValue(TW_BACKUP_NAME, ""); + if (!mount_state) + PartitionManager.UnMount_By_Path("/system", false); + return; + } + int line_count = buildprop.size(); + int index; + size_t start_pos = 0, end_pos; + string propname, propvalue; + for (index = 0; index < line_count; index++) { + end_pos = buildprop.at(index).find("=", start_pos); + propname = buildprop.at(index).substr(start_pos, end_pos); + if (propname == "ro.build.display.id") { + propvalue = buildprop.at(index).substr(end_pos + 1, buildprop.at(index).size()); + string Backup_Name = Get_Current_Date(); + Backup_Name += " " + propvalue; + if (Backup_Name.size() > MAX_BACKUP_NAME_LEN) + Backup_Name.resize(MAX_BACKUP_NAME_LEN); + DataManager::SetValue(TW_BACKUP_NAME, Backup_Name); + break; + } + } + if (propvalue.empty()) { + LOGINFO("ro.build.display.id not found in build.prop\n"); + } + if (!mount_state) + PartitionManager.UnMount_By_Path("/system", false); +} \ No newline at end of file diff --git a/twrp-functions.hpp b/twrp-functions.hpp index 4040d2ef0..b3019bd25 100644 --- a/twrp-functions.hpp +++ b/twrp-functions.hpp @@ -55,6 +55,8 @@ public: static int Try_Decrypting_File(string fn, string password); // -1 for some error, 0 for failed to decrypt, 1 for decrypted, 3 for decrypted and found gzip format static bool Try_Decrypting_Backup(string Restore_Path, string Password); // true for success, false for failed to decrypt static int Wait_For_Child(pid_t pid, int *status, string Child_Name); // Waits for pid to exit and checks exit status + static string Get_Current_Date(void); // Returns the current date in ccyy-m-dd--hh-nn-ss format + static void Auto_Generate_Backup_Name(); // Populates TW_BACKUP_NAME with a backup name based on current date and ro.build.display.id from /system/build.prop private: static void Copy_Log(string Source, string Destination); diff --git a/twrp.cpp b/twrp.cpp index d4e861daf..5e1956f23 100644 --- a/twrp.cpp +++ b/twrp.cpp @@ -200,7 +200,7 @@ int main(int argc, char **argv) { bool Keep_Going = true; if (Perform_Backup) { - DataManager::SetValue(TW_BACKUP_NAME, "(Current Date)"); + DataManager::SetValue(TW_BACKUP_NAME, "(Auto Generate)"); if (!OpenRecoveryScript::Insert_ORS_Command("backup BSDCAE\n")) Keep_Going = false; } -- cgit v1.2.3