diff options
Diffstat (limited to 'gui')
-rw-r--r-- | gui/action.cpp | 54 | ||||
-rw-r--r-- | gui/devices/1080x1920/res/ui.xml | 1 | ||||
-rw-r--r-- | gui/devices/320x320/res/ui.xml | 3 | ||||
-rw-r--r-- | gui/devices/480x800/res/ui.xml | 1 | ||||
-rw-r--r-- | gui/devices/landscape/res/landscape.xml | 98 | ||||
-rw-r--r-- | gui/devices/portrait/res/portrait.xml | 113 | ||||
-rw-r--r-- | gui/devices/watch/res/watch.xml | 111 | ||||
-rw-r--r-- | gui/objects.hpp | 2 |
8 files changed, 382 insertions, 1 deletions
diff --git a/gui/action.cpp b/gui/action.cpp index 342551247..7ecd0b46a 100644 --- a/gui/action.cpp +++ b/gui/action.cpp @@ -196,6 +196,8 @@ GUIAction::GUIAction(xml_node<>* node) ADD_ACTION(startmtp); ADD_ACTION(stopmtp); ADD_ACTION(cancelbackup); + ADD_ACTION(checkpartitionlifetimewrites); + ADD_ACTION(mountsystemtoggle); // remember actions that run in the caller thread for (mapFunc::const_iterator it = mf.begin(); it != mf.end(); ++it) @@ -1737,3 +1739,55 @@ int GUIAction::getKeyByName(std::string key) return atol(key.c_str()); } + +int GUIAction::checkpartitionlifetimewrites(std::string arg) +{ + int op_status = 0; + TWPartition* sys = PartitionManager.Find_Partition_By_Path(arg); + + operation_start("Check Partition Lifetime Writes"); + if (sys) { + if (sys->Check_Lifetime_Writes() != 0) + DataManager::SetValue("tw_lifetime_writes", 1); + else + DataManager::SetValue("tw_lifetime_writes", 0); + op_status = 0; // success + } else { + DataManager::SetValue("tw_lifetime_writes", 1); + op_status = 1; // fail + } + + operation_end(op_status); + return 0; +} + +int GUIAction::mountsystemtoggle(std::string arg) +{ + int op_status = 0; + bool remount_system = PartitionManager.Is_Mounted_By_Path("/system"); + + operation_start("Toggle System Mount"); + if (!PartitionManager.UnMount_By_Path("/system", true)) { + op_status = 1; // fail + } else { + TWPartition* Part = PartitionManager.Find_Partition_By_Path("/system"); + if (Part) { + if (DataManager::GetIntValue("tw_mount_system_ro")) { + DataManager::SetValue("tw_mount_system_ro", 0); + Part->Change_Mount_Read_Only(false); + } else { + DataManager::SetValue("tw_mount_system_ro", 1); + Part->Change_Mount_Read_Only(true); + } + if (remount_system) { + Part->Mount(true); + } + op_status = 0; // success + } else { + op_status = 1; // fail + } + } + + operation_end(op_status); + return 0; +} diff --git a/gui/devices/1080x1920/res/ui.xml b/gui/devices/1080x1920/res/ui.xml index 3135a03dc..a611d0582 100644 --- a/gui/devices/1080x1920/res/ui.xml +++ b/gui/devices/1080x1920/res/ui.xml @@ -86,6 +86,7 @@ <variable name="tz_selected_y" value="240" /> <variable name="tz_set_y" value="1500" /> <variable name="tz_current_y" value="1425" /> + <variable name="system_ro_y" value="1770" /> <variable name="col_progressbar_x" value="351" /> <variable name="row_progressbar_y" value="1650" /> <variable name="col1_medium_x" value="10" /> diff --git a/gui/devices/320x320/res/ui.xml b/gui/devices/320x320/res/ui.xml index 5495b7717..1dec40504 100644 --- a/gui/devices/320x320/res/ui.xml +++ b/gui/devices/320x320/res/ui.xml @@ -174,6 +174,7 @@ <variable name="row_offset_medium_y" value="206" /> <variable name="tz_set_y" value="271" /> <variable name="tz_current_y" value="249" /> + <variable name="system_ro_y" value="216" /> <variable name="button_fill_color" value="#303030" /> <variable name="button_fill_full_width" value="308" /> <variable name="button_fill_main_width" value="150" /> @@ -189,7 +190,7 @@ <variable name="backup_button_row1" value="214" /> <variable name="backup_button_row2" value="242" /> <variable name="mount_list_height" value="190" /> - <variable name="mount_storage_row" value="200" /> + <variable name="mount_storage_row" value="193" /> <variable name="storage_list_height" value="134" /> <variable name="wipe_list_height" value="216" /> <variable name="wipe_button_y" value="170" /> diff --git a/gui/devices/480x800/res/ui.xml b/gui/devices/480x800/res/ui.xml index 3c320a7eb..984454109 100644 --- a/gui/devices/480x800/res/ui.xml +++ b/gui/devices/480x800/res/ui.xml @@ -82,6 +82,7 @@ <variable name="tz_selected_y" value="110" /> <variable name="tz_set_y" value="580" /> <variable name="tz_current_y" value="730" /> + <variable name="system_ro_y" value="550" /> <variable name="col_progressbar_x" value="114" /> <variable name="row_progressbar_y" value="720" /> <variable name="col1_medium_x" value="10" /> diff --git a/gui/devices/landscape/res/landscape.xml b/gui/devices/landscape/res/landscape.xml index 25b9b17e7..12c66290b 100644 --- a/gui/devices/landscape/res/landscape.xml +++ b/gui/devices/landscape/res/landscape.xml @@ -989,6 +989,27 @@ </actions> </object> + <object type="button"> + <placement x="%col3_x%" y="%row10_text_y%" /> + <font resource="font" color="%text_color%" /> + <condition var1="tw_mount_system_ro" op="=" var2="0" /> + <text>Only mount system read-only</text> + <image resource="checkbox_false" /> + <action function="mountsystemtoggle"></action> + </object> + + <object type="button"> + <placement x="%col3_x%" y="%row10_text_y%" /> + <font resource="font" color="%text_color%" /> + <condition var1="tw_mount_system_ro" op="!=" var2="0" /> + <text>Only mount system read-only</text> + <image resource="checkbox_true" /> + <actions> + <action function="set">tw_lifetime_writes=2</action> + <action function="page">system_readonly_check</action> + </actions> + </object> + <object type="action"> <touch key="home" /> <action function="page">main</action> @@ -1035,6 +1056,31 @@ <object type="template" name="footer" /> </page> + <page name="system_readonly_check"> + <object type="action"> + <action function="checkpartitionlifetimewrites">/system</action> + </object> + + <object type="action"> + <conditions> + <condition var1="tw_operation_state" var2="1" /> + <condition var1="tw_lifetime_writes" var2="1" /> + </conditions> + <action function="page">mount</action> + </object> + + <object type="action"> + <conditions> + <condition var1="tw_operation_state" var2="1" /> + <condition var1="tw_lifetime_writes" var2="0" /> + </conditions> + <actions> + <action function="set">tw_back=mount</action> + <action function="page">system_readonly</action> + </actions> + </object> + </page> + <page name="wipe"> <object type="template" name="header" /> @@ -3596,5 +3642,57 @@ </actions> </object> </page> + + <page name="system_readonly"> + <object type="template" name="header" /> + + <object type="text"> + <placement x="%center_x%" y="%row1_text_y%" placement="5" /> + <text>TWRP has detected an unmodified system partition.</text> + </object> + + <object type="text"> + <placement x="%center_x%" y="%row2_text_y%" placement="5" /> + <text>TWRP can leave your system partition unmodified to make it easier for you to take official updates.</text> + </object> + + <object type="text"> + <placement x="%center_x%" y="%row3_text_y%" placement="5" /> + <text>TWRP will be unable to prevent the stock ROM from replacing TWRP and will not offer to root your device.</text> + </object> + + <object type="text"> + <placement x="%center_x%" y="%row4_text_y%" placement="5" /> + <text>Installing zips or performing adb operations may still modify the system partition.</text> + </object> + + <object type="checkbox"> + <condition var1="tw_is_encrypted" var2="0" /> + <placement x="%col1_x%" y="%row5_text_y%" /> + <text>Never show this screen during boot again</text> + <data variable="tw_never_show_system_ro_page" /> + </object> + + <object type="button"> + <placement x="%col_center_x%" y="%row7_text_y%" /> + <text>Keep Read Only</text> + <actions> + <action function="set">tw_mount_system_ro=1</action> + <action function="set">tw_page_done=1</action> + <action function="page">%tw_back%</action> + </actions> + </object> + + <object type="slider"> + <text>Swipe to Allow Modifications</text> + <actions> + <action function="set">tw_mount_system_ro=0</action> + <action function="set">tw_page_done=1</action> + <action function="page">%tw_back%</action> + </actions> + </object> + + <object type="template" name="footer" /> + </page> </pages> </recovery> diff --git a/gui/devices/portrait/res/portrait.xml b/gui/devices/portrait/res/portrait.xml index bd235981d..997da9d23 100644 --- a/gui/devices/portrait/res/portrait.xml +++ b/gui/devices/portrait/res/portrait.xml @@ -2105,6 +2105,27 @@ <action function="page">decrypt</action> </object> + <object type="button"> + <placement x="%col1_x%" y="%system_ro_y%" /> + <font resource="font" color="%text_color%" /> + <condition var1="tw_mount_system_ro" op="=" var2="0" /> + <text>Only mount system read-only</text> + <image resource="checkbox_false" /> + <action function="mountsystemtoggle"></action> + </object> + + <object type="button"> + <placement x="%col1_x%" y="%system_ro_y%" /> + <font resource="font" color="%text_color%" /> + <condition var1="tw_mount_system_ro" op="!=" var2="0" /> + <text>Only mount system read-only</text> + <image resource="checkbox_true" /> + <actions> + <action function="set">tw_lifetime_writes=2</action> + <action function="page">system_readonly_check</action> + </actions> + </object> + <object type="action"> <touch key="home" /> <action function="page">main</action> @@ -2161,6 +2182,31 @@ </object> </page> + <page name="system_readonly_check"> + <object type="action"> + <action function="checkpartitionlifetimewrites">/system</action> + </object> + + <object type="action"> + <conditions> + <condition var1="tw_operation_state" var2="1" /> + <condition var1="tw_lifetime_writes" var2="1" /> + </conditions> + <action function="page">mount</action> + </object> + + <object type="action"> + <conditions> + <condition var1="tw_operation_state" var2="1" /> + <condition var1="tw_lifetime_writes" var2="0" /> + </conditions> + <actions> + <action function="set">tw_back=mount</action> + <action function="page">system_readonly</action> + </actions> + </object> + </page> + <page name="reboot"> <object type="template" name="header" /> @@ -3607,5 +3653,72 @@ </actions> </object> </page> + + <page name="system_readonly"> + <object type="template" name="header" /> + + <object type="text"> + <placement x="%center_x%" y="%row1_header_y%" placement="5" /> + <text>TWRP has detected an unmodified system partition.</text> + </object> + + <object type="text"> + <placement x="%center_x%" y="%row2_text_y%" placement="5" /> + <text>TWRP can leave your system partition unmodified</text> + </object> + + <object type="text"> + <placement x="%center_x%" y="%row3_text_y%" placement="5" /> + <text>to make it easier for you to take official updates.</text> + </object> + + <object type="text"> + <placement x="%center_x%" y="%row4_text_y%" placement="5" /> + <text>TWRP will be unable to prevent the stock ROM from</text> + </object> + + <object type="text"> + <placement x="%center_x%" y="%row5_text_y%" placement="5" /> + <text>replacing TWRP and will not offer to root your device.</text> + </object> + + <object type="text"> + <placement x="%center_x%" y="%row6_text_y%" placement="5" /> + <text>Installing zips or performing adb operations may still</text> + </object> + + <object type="text"> + <placement x="%center_x%" y="%row7_text_y%" placement="5" /> + <text>modify the system partition.</text> + </object> + + <object type="checkbox"> + <condition var1="tw_is_encrypted" var2="0" /> + <placement x="%col1_x%" y="%row8_text_y%" /> + <text>Never show this screen during boot again</text> + <data variable="tw_never_show_system_ro_page" /> + </object> + + <object type="button"> + <placement x="%col_center_x%" y="%row10_text_y%" /> + <text>Keep Read Only</text> + <actions> + <action function="set">tw_mount_system_ro=1</action> + <action function="set">tw_page_done=1</action> + <action function="page">%tw_back%</action> + </actions> + </object> + + <object type="slider"> + <text>Swipe to Allow Modifications</text> + <actions> + <action function="set">tw_mount_system_ro=0</action> + <action function="set">tw_page_done=1</action> + <action function="page">%tw_back%</action> + </actions> + </object> + + <object type="template" name="footer" /> + </page> </pages> </recovery> diff --git a/gui/devices/watch/res/watch.xml b/gui/devices/watch/res/watch.xml index 872c47b6b..f0f383dcb 100644 --- a/gui/devices/watch/res/watch.xml +++ b/gui/devices/watch/res/watch.xml @@ -2113,6 +2113,27 @@ <action function="page">decrypt</action> </object> + <object type="button"> + <placement x="%col1_x%" y="%system_ro_y%" /> + <font resource="font" color="%text_color%" /> + <condition var1="tw_mount_system_ro" op="=" var2="0" /> + <text>Only mount system read-only</text> + <image resource="checkbox_false" /> + <action function="mountsystemtoggle"></action> + </object> + + <object type="button"> + <placement x="%col1_x%" y="%system_ro_y%" /> + <font resource="font" color="%text_color%" /> + <condition var1="tw_mount_system_ro" op="!=" var2="0" /> + <text>Only mount system read-only</text> + <image resource="checkbox_true" /> + <actions> + <action function="set">tw_lifetime_writes=2</action> + <action function="page">system_readonly_check</action> + </actions> + </object> + <object type="action"> <touch key="home" /> <action function="page">main</action> @@ -2168,6 +2189,31 @@ </object> </page> + <page name="system_readonly_check"> + <object type="action"> + <action function="checkpartitionlifetimewrites">/system</action> + </object> + + <object type="action"> + <conditions> + <condition var1="tw_operation_state" var2="1" /> + <condition var1="tw_lifetime_writes" var2="1" /> + </conditions> + <action function="page">mount</action> + </object> + + <object type="action"> + <conditions> + <condition var1="tw_operation_state" var2="1" /> + <condition var1="tw_lifetime_writes" var2="0" /> + </conditions> + <actions> + <action function="set">tw_back=mount</action> + <action function="page">system_readonly</action> + </actions> + </object> + </page> + <page name="reboot"> <object type="template" name="header" /> @@ -3596,5 +3642,70 @@ </actions> </object> </page> + + <page name="system_readonly"> + <object type="template" name="header" /> + + <object type="text"> + <placement x="%center_x%" y="%row1_header_y%" placement="5" /> + <text>TWRP has detected an unmodified system partition.</text> + </object> + + <object type="text"> + <placement x="%center_x%" y="%row1_text_y%" placement="5" /> + <text>TWRP can leave your system partition unmodified</text> + </object> + + <object type="text"> + <placement x="%center_x%" y="%row2_text_y%" placement="5" /> + <text>to make it easier for you to take official updates.</text> + </object> + + <object type="text"> + <placement x="%center_x%" y="%row3_text_y%" placement="5" /> + <text>TWRP will be unable to prevent the stock ROM from</text> + </object> + + <object type="text"> + <placement x="%center_x%" y="%row4_text_y%" placement="5" /> + <text>replacing TWRP and will not offer to root your device.</text> + </object> + + <object type="text"> + <placement x="%center_x%" y="%row5_text_y%" placement="5" /> + <text>Installing zips or performing adb operations may still</text> + </object> + + <object type="text"> + <placement x="%center_x%" y="%row6_text_y%" placement="5" /> + <text>modify the system partition.</text> + </object> + + <object type="checkbox"> + <condition var1="tw_is_encrypted" var2="0" /> + <placement x="%col1_x%" y="%row7_text_y%" /> + <text>Never show this screen during boot again</text> + <data variable="tw_never_show_system_ro_page" /> + </object> + + <object type="button"> + <placement x="%col_center_x%" y="%row9_text_y%" /> + <text>Keep Read Only</text> + <actions> + <action function="set">tw_mount_system_ro=1</action> + <action function="set">tw_page_done=1</action> + <action function="page">%tw_back%</action> + </actions> + </object> + + <object type="slider"> + <text>Swipe to Allow Modifications</text> + <actions> + <action function="set">tw_mount_system_ro=0</action> + <action function="set">tw_page_done=1</action> + <action function="page">%tw_back%</action> + </actions> + </object> + </page> </pages> </recovery> diff --git a/gui/objects.hpp b/gui/objects.hpp index e70053e3b..ee0f08b8f 100644 --- a/gui/objects.hpp +++ b/gui/objects.hpp @@ -359,6 +359,8 @@ protected: int stopmtp(std::string arg); int flashimage(std::string arg); int cancelbackup(std::string arg); + int checkpartitionlifetimewrites(std::string arg); + int mountsystemtoggle(std::string arg); int simulate; }; |