Check for root and root perms and offer to install/fix
Also fix sort order for file selector by date and file sizes Change-Id: Idff9fe4232c19d4ed1082e78fabe6f921aa0a114
This commit is contained in:
@@ -855,6 +855,7 @@ void DataManager::SetDefaultValues()
|
||||
mValues.insert(make_pair("tw_background_thread_running", make_pair("0", 0)));
|
||||
mValues.insert(make_pair(TW_RESTORE_FILE_DATE, make_pair("0", 0)));
|
||||
mValues.insert(make_pair("tw_screen_timeout_secs", make_pair("60", 1)));
|
||||
mValues.insert(make_pair("tw_gui_done", make_pair("0", 0)));
|
||||
#ifdef TW_MAX_BRIGHTNESS
|
||||
if (strcmp(EXPAND(TW_BRIGHTNESS_PATH), "/nobrightness") != 0) {
|
||||
LOGI("TW_BRIGHTNESS_PATH := %s\n", EXPAND(TW_BRIGHTNESS_PATH));
|
||||
|
||||
+38
-18
@@ -341,26 +341,16 @@ int GUIAction::doAction(Action action, int isThreaded /* = 0 */)
|
||||
|
||||
DataManager::GetValue(TW_SIMULATE_ACTIONS, simulate);
|
||||
|
||||
if (function == "reboot")
|
||||
{
|
||||
//curtainClose(); this sometimes causes a crash
|
||||
if (function == "reboot")
|
||||
{
|
||||
//curtainClose(); this sometimes causes a crash
|
||||
|
||||
sync();
|
||||
sync();
|
||||
DataManager::SetValue("tw_gui_done", 1);
|
||||
DataManager::SetValue("tw_reboot_arg", arg);
|
||||
|
||||
if (arg == "recovery")
|
||||
TWFunc::tw_reboot(rb_recovery);
|
||||
else if (arg == "poweroff")
|
||||
TWFunc::tw_reboot(rb_poweroff);
|
||||
else if (arg == "bootloader")
|
||||
TWFunc::tw_reboot(rb_bootloader);
|
||||
else if (arg == "download")
|
||||
TWFunc::tw_reboot(rb_download);
|
||||
else
|
||||
TWFunc::tw_reboot(rb_system);
|
||||
|
||||
// This should never occur
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
if (function == "home")
|
||||
{
|
||||
PageManager::SelectPackage("TWRP");
|
||||
@@ -1143,6 +1133,36 @@ int GUIAction::doAction(Action action, int isThreaded /* = 0 */)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (function == "installsu")
|
||||
{
|
||||
int op_status = 0;
|
||||
|
||||
operation_start("Install SuperSU");
|
||||
if (simulate) {
|
||||
simulate_progress_bar();
|
||||
} else {
|
||||
if (!TWFunc::Install_SuperSU())
|
||||
op_status = 1;
|
||||
}
|
||||
|
||||
operation_end(op_status, simulate);
|
||||
return 0;
|
||||
}
|
||||
if (function == "fixsu")
|
||||
{
|
||||
int op_status = 0;
|
||||
|
||||
operation_start("Fixing Superuser Permissions");
|
||||
if (simulate) {
|
||||
simulate_progress_bar();
|
||||
} else {
|
||||
if (!TWFunc::Fix_su_Perms())
|
||||
op_status = 1;
|
||||
}
|
||||
|
||||
operation_end(op_status, simulate);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -649,14 +649,6 @@
|
||||
<image checked="checkbox_true" unchecked="checkbox_false" />
|
||||
</object>
|
||||
|
||||
<object type="checkbox">
|
||||
<placement x="%col2_x%" y="%row8_text_y%" />
|
||||
<font resource="font" color="%text_color%" />
|
||||
<text>Force MD5 check on all zips?</text>
|
||||
<data variable="tw_force_md5_check" />
|
||||
<image checked="checkbox_true" unchecked="checkbox_false" />
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row10_text_y%" placement="5" />
|
||||
@@ -975,6 +967,48 @@
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="singleaction_page">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5" />
|
||||
<text>%tw_action_text1%</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5" />
|
||||
<text>%tw_action_text2%</text>
|
||||
</object>
|
||||
|
||||
<object type="template" name="action_page_console" />
|
||||
|
||||
<object type="template" name="progress_bar" />
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_operation_state" var2="1" />
|
||||
<actions>
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="0" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="1" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
<action function="%tw_action2%">%tw_action2_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="action_complete">
|
||||
<object type="template" name="header" />
|
||||
|
||||
@@ -2682,6 +2716,7 @@
|
||||
<actions>
|
||||
<action function="cmd">echo %tw_brightness_25% > "%tw_brightness_file%"</action>
|
||||
<action function="set">tw_brightness_display=25%</action>
|
||||
<action function="set">tw_brightness=%tw_brightness_25%</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
@@ -2694,6 +2729,7 @@
|
||||
<actions>
|
||||
<action function="cmd">echo %tw_brightness_50% > "%tw_brightness_file%"</action>
|
||||
<action function="set">tw_brightness_display=50%</action>
|
||||
<action function="set">tw_brightness=%tw_brightness_50%</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
@@ -2706,6 +2742,7 @@
|
||||
<actions>
|
||||
<action function="cmd">echo %tw_brightness_75% > "%tw_brightness_file%"</action>
|
||||
<action function="set">tw_brightness_display=75%</action>
|
||||
<action function="set">tw_brightness=%tw_brightness_75%</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
@@ -2718,6 +2755,7 @@
|
||||
<actions>
|
||||
<action function="cmd">echo %tw_brightness_100% > "%tw_brightness_file%"</action>
|
||||
<action function="set">tw_brightness_display=100%</action>
|
||||
<action function="set">tw_brightness=%tw_brightness_100%</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
@@ -3891,5 +3929,107 @@
|
||||
|
||||
<object type="template" name="footer" />
|
||||
</page>
|
||||
|
||||
<page name="installsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5"/>
|
||||
<text>Install SuperSU?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Your device does not appear to be rooted.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Install SuperSU now? This will root your device.</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row2_medium_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Install</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=installsu</action>
|
||||
<action function="set">tw_action_text1=Installing SuperSU</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Install</text>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="fixsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5"/>
|
||||
<text>Fix Superuser Permissions?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Root permissions appear to be lost.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Fix root permissions now?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row4_text_y%" placement="5"/>
|
||||
<text>(Fixes permissions on su binary & app)</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row2_medium_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Fix</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=fixsu</action>
|
||||
<action function="set">tw_action_text1=Fixing Root Permissions</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Fix Root</text>
|
||||
</object>
|
||||
</page>
|
||||
</pages>
|
||||
</recovery>
|
||||
|
||||
@@ -967,6 +967,48 @@
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="singleaction_page">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5" />
|
||||
<text>%tw_action_text1%</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5" />
|
||||
<text>%tw_action_text2%</text>
|
||||
</object>
|
||||
|
||||
<object type="template" name="action_page_console" />
|
||||
|
||||
<object type="template" name="progress_bar" />
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_operation_state" var2="1" />
|
||||
<actions>
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="0" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="1" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
<action function="%tw_action2%">%tw_action2_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="action_complete">
|
||||
<object type="template" name="header" />
|
||||
|
||||
@@ -3887,5 +3929,107 @@
|
||||
|
||||
<object type="template" name="footer" />
|
||||
</page>
|
||||
|
||||
<page name="installsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5"/>
|
||||
<text>Install SuperSU?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Your device does not appear to be rooted.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Install SuperSU now? This will root your device.</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row2_medium_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Install</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=installsu</action>
|
||||
<action function="set">tw_action_text1=Installing SuperSU</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Install</text>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="fixsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5"/>
|
||||
<text>Fix Superuser Permissions?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Root permissions appear to be lost.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Fix root permissions now?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row4_text_y%" placement="5"/>
|
||||
<text>(Fixes permissions on su binary & app)</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row2_medium_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Fix</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=fixsu</action>
|
||||
<action function="set">tw_action_text1=Fixing Root Permissions</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Fix Root</text>
|
||||
</object>
|
||||
</page>
|
||||
</pages>
|
||||
</recovery>
|
||||
|
||||
@@ -967,6 +967,48 @@
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="singleaction_page">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5" />
|
||||
<text>%tw_action_text1%</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5" />
|
||||
<text>%tw_action_text2%</text>
|
||||
</object>
|
||||
|
||||
<object type="template" name="action_page_console" />
|
||||
|
||||
<object type="template" name="progress_bar" />
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_operation_state" var2="1" />
|
||||
<actions>
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="0" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="1" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
<action function="%tw_action2%">%tw_action2_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="action_complete">
|
||||
<object type="template" name="header" />
|
||||
|
||||
@@ -3887,5 +3929,107 @@
|
||||
|
||||
<object type="template" name="footer" />
|
||||
</page>
|
||||
|
||||
<page name="installsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5"/>
|
||||
<text>Install SuperSU?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Your device does not appear to be rooted.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Install SuperSU now? This will root your device.</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row2_medium_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Install</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=installsu</action>
|
||||
<action function="set">tw_action_text1=Installing SuperSU</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Install</text>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="fixsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5"/>
|
||||
<text>Fix Superuser Permissions?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Root permissions appear to be lost.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Fix root permissions now?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row4_text_y%" placement="5"/>
|
||||
<text>(Fixes permissions on su binary & app)</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row2_medium_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Fix</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=fixsu</action>
|
||||
<action function="set">tw_action_text1=Fixing Root Permissions</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Fix Root</text>
|
||||
</object>
|
||||
</page>
|
||||
</pages>
|
||||
</recovery>
|
||||
|
||||
@@ -967,6 +967,48 @@
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="singleaction_page">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5" />
|
||||
<text>%tw_action_text1%</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5" />
|
||||
<text>%tw_action_text2%</text>
|
||||
</object>
|
||||
|
||||
<object type="template" name="action_page_console" />
|
||||
|
||||
<object type="template" name="progress_bar" />
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_operation_state" var2="1" />
|
||||
<actions>
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="0" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="1" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
<action function="%tw_action2%">%tw_action2_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="action_complete">
|
||||
<object type="template" name="header" />
|
||||
|
||||
@@ -3888,5 +3930,107 @@
|
||||
|
||||
<object type="template" name="footer" />
|
||||
</page>
|
||||
|
||||
<page name="installsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5"/>
|
||||
<text>Install SuperSU?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Your device does not appear to be rooted.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Install SuperSU now? This will root your device.</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row2_medium_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Install</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=installsu</action>
|
||||
<action function="set">tw_action_text1=Installing SuperSU</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Install</text>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="fixsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5"/>
|
||||
<text>Fix Superuser Permissions?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Root permissions appear to be lost.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Fix root permissions now?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row4_text_y%" placement="5"/>
|
||||
<text>(Fixes permissions on su binary & app)</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row2_medium_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Fix</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=fixsu</action>
|
||||
<action function="set">tw_action_text1=Fixing Root Permissions</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Fix Root</text>
|
||||
</object>
|
||||
</page>
|
||||
</pages>
|
||||
</recovery>
|
||||
|
||||
@@ -967,6 +967,48 @@
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="singleaction_page">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5" />
|
||||
<text>%tw_action_text1%</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5" />
|
||||
<text>%tw_action_text2%</text>
|
||||
</object>
|
||||
|
||||
<object type="template" name="action_page_console" />
|
||||
|
||||
<object type="template" name="progress_bar" />
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_operation_state" var2="1" />
|
||||
<actions>
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="0" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="1" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
<action function="%tw_action2%">%tw_action2_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="action_complete">
|
||||
<object type="template" name="header" />
|
||||
|
||||
@@ -3887,5 +3929,107 @@
|
||||
|
||||
<object type="template" name="footer" />
|
||||
</page>
|
||||
|
||||
<page name="installsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5"/>
|
||||
<text>Install SuperSU?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Your device does not appear to be rooted.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Install SuperSU now? This will root your device.</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row2_medium_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Install</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=installsu</action>
|
||||
<action function="set">tw_action_text1=Installing SuperSU</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Install</text>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="fixsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5"/>
|
||||
<text>Fix Superuser Permissions?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Root permissions appear to be lost.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Fix root permissions now?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row4_text_y%" placement="5"/>
|
||||
<text>(Fixes permissions on su binary & app)</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row2_medium_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Fix</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=fixsu</action>
|
||||
<action function="set">tw_action_text1=Fixing Root Permissions</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Fix Root</text>
|
||||
</object>
|
||||
</page>
|
||||
</pages>
|
||||
</recovery>
|
||||
|
||||
@@ -938,6 +938,48 @@
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="singleaction_page">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5" />
|
||||
<text>%tw_action_text1%</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5" />
|
||||
<text>%tw_action_text2%</text>
|
||||
</object>
|
||||
|
||||
<object type="template" name="action_page_console" />
|
||||
|
||||
<object type="template" name="progress_bar" />
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_operation_state" var2="1" />
|
||||
<actions>
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="0" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="1" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
<action function="%tw_action2%">%tw_action2_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="action_complete">
|
||||
<object type="template" name="header" />
|
||||
|
||||
@@ -3830,5 +3872,113 @@
|
||||
|
||||
<object type="template" name="footer" />
|
||||
</page>
|
||||
|
||||
<page name="installsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_header_y%" placement="5"/>
|
||||
<text>Install SuperSU?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Your device does not appear to be rooted.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Install SuperSU now?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row4_text_y%" placement="5"/>
|
||||
<text>This will root your device.</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row3_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Install</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=installsu</action>
|
||||
<action function="set">tw_action_text1=Installing SuperSU</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Install</text>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="fixsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_header_y%" placement="5"/>
|
||||
<text>Fix Superuser Permissions?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Root permissions appear to be lost.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Fix root permissions now?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row4_text_y%" placement="5"/>
|
||||
<text>(Fixes permissions on su binary & app)</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row3_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Fix</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=fixsu</action>
|
||||
<action function="set">tw_action_text1=Fixing Root Permissions</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Fix Root</text>
|
||||
</object>
|
||||
</page>
|
||||
</pages>
|
||||
</recovery>
|
||||
|
||||
@@ -937,6 +937,48 @@
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="singleaction_page">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5" />
|
||||
<text>%tw_action_text1%</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5" />
|
||||
<text>%tw_action_text2%</text>
|
||||
</object>
|
||||
|
||||
<object type="template" name="action_page_console" />
|
||||
|
||||
<object type="template" name="progress_bar" />
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_operation_state" var2="1" />
|
||||
<actions>
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="0" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="1" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
<action function="%tw_action2%">%tw_action2_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="action_complete">
|
||||
<object type="template" name="header" />
|
||||
|
||||
@@ -3829,5 +3871,113 @@
|
||||
|
||||
<object type="template" name="footer" />
|
||||
</page>
|
||||
|
||||
<page name="installsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_header_y%" placement="5"/>
|
||||
<text>Install SuperSU?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Your device does not appear to be rooted.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Install SuperSU now?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row4_text_y%" placement="5"/>
|
||||
<text>This will root your device.</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row3_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Install</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=installsu</action>
|
||||
<action function="set">tw_action_text1=Installing SuperSU</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Install</text>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="fixsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_header_y%" placement="5"/>
|
||||
<text>Fix Superuser Permissions?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Root permissions appear to be lost.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Fix root permissions now?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row4_text_y%" placement="5"/>
|
||||
<text>(Fixes permissions on su binary & app)</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row3_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Fix</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=fixsu</action>
|
||||
<action function="set">tw_action_text1=Fixing Root Permissions</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Fix Root</text>
|
||||
</object>
|
||||
</page>
|
||||
</pages>
|
||||
</recovery>
|
||||
|
||||
@@ -936,6 +936,48 @@
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="singleaction_page">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5" />
|
||||
<text>%tw_action_text1%</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5" />
|
||||
<text>%tw_action_text2%</text>
|
||||
</object>
|
||||
|
||||
<object type="template" name="action_page_console" />
|
||||
|
||||
<object type="template" name="progress_bar" />
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_operation_state" var2="1" />
|
||||
<actions>
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="0" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="1" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
<action function="%tw_action2%">%tw_action2_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="action_complete">
|
||||
<object type="template" name="header" />
|
||||
|
||||
@@ -3828,5 +3870,113 @@
|
||||
|
||||
<object type="template" name="footer" />
|
||||
</page>
|
||||
|
||||
<page name="installsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_header_y%" placement="5"/>
|
||||
<text>Install SuperSU?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Your device does not appear to be rooted.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Install SuperSU now?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row4_text_y%" placement="5"/>
|
||||
<text>This will root your device.</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row3_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Install</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=installsu</action>
|
||||
<action function="set">tw_action_text1=Installing SuperSU</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Install</text>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="fixsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_header_y%" placement="5"/>
|
||||
<text>Fix Superuser Permissions?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Root permissions appear to be lost.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Fix root permissions now?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row4_text_y%" placement="5"/>
|
||||
<text>(Fixes permissions on su binary & app)</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row3_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Fix</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=fixsu</action>
|
||||
<action function="set">tw_action_text1=Fixing Root Permissions</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Fix Root</text>
|
||||
</object>
|
||||
</page>
|
||||
</pages>
|
||||
</recovery>
|
||||
|
||||
@@ -950,6 +950,48 @@
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="singleaction_page">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5" />
|
||||
<text>%tw_action_text1%</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5" />
|
||||
<text>%tw_action_text2%</text>
|
||||
</object>
|
||||
|
||||
<object type="template" name="action_page_console" />
|
||||
|
||||
<object type="template" name="progress_bar" />
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_operation_state" var2="1" />
|
||||
<actions>
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="0" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="1" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
<action function="%tw_action2%">%tw_action2_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="action_complete">
|
||||
<object type="template" name="header" />
|
||||
|
||||
@@ -3842,5 +3884,113 @@
|
||||
|
||||
<object type="template" name="footer" />
|
||||
</page>
|
||||
|
||||
<page name="installsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_header_y%" placement="5"/>
|
||||
<text>Install SuperSU?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Your device does not appear to be rooted.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Install SuperSU now?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row4_text_y%" placement="5"/>
|
||||
<text>This will root your device.</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row3_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Install</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=installsu</action>
|
||||
<action function="set">tw_action_text1=Installing SuperSU</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Install</text>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="fixsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_header_y%" placement="5"/>
|
||||
<text>Fix Superuser Permissions?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Root permissions appear to be lost.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Fix root permissions now?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row4_text_y%" placement="5"/>
|
||||
<text>(Fixes permissions on su binary & app)</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row3_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Fix</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=fixsu</action>
|
||||
<action function="set">tw_action_text1=Fixing Root Permissions</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Fix Root</text>
|
||||
</object>
|
||||
</page>
|
||||
</pages>
|
||||
</recovery>
|
||||
|
||||
@@ -938,6 +938,48 @@
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="singleaction_page">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5" />
|
||||
<text>%tw_action_text1%</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5" />
|
||||
<text>%tw_action_text2%</text>
|
||||
</object>
|
||||
|
||||
<object type="template" name="action_page_console" />
|
||||
|
||||
<object type="template" name="progress_bar" />
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_operation_state" var2="1" />
|
||||
<actions>
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="0" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="1" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
<action function="%tw_action2%">%tw_action2_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="action_complete">
|
||||
<object type="template" name="header" />
|
||||
|
||||
@@ -3830,5 +3872,113 @@
|
||||
|
||||
<object type="template" name="footer" />
|
||||
</page>
|
||||
|
||||
<page name="installsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_header_y%" placement="5"/>
|
||||
<text>Install SuperSU?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Your device does not appear to be rooted.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Install SuperSU now?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row4_text_y%" placement="5"/>
|
||||
<text>This will root your device.</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row3_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Install</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=installsu</action>
|
||||
<action function="set">tw_action_text1=Installing SuperSU</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Install</text>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="fixsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_header_y%" placement="5"/>
|
||||
<text>Fix Superuser Permissions?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Root permissions appear to be lost.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Fix root permissions now?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row4_text_y%" placement="5"/>
|
||||
<text>(Fixes permissions on su binary & app)</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row3_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Fix</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=fixsu</action>
|
||||
<action function="set">tw_action_text1=Fixing Root Permissions</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Fix Root</text>
|
||||
</object>
|
||||
</page>
|
||||
</pages>
|
||||
</recovery>
|
||||
|
||||
@@ -975,6 +975,48 @@
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="singleaction_page">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5" />
|
||||
<text>%tw_action_text1%</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5" />
|
||||
<text>%tw_action_text2%</text>
|
||||
</object>
|
||||
|
||||
<object type="template" name="action_page_console" />
|
||||
|
||||
<object type="template" name="progress_bar" />
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_operation_state" var2="1" />
|
||||
<actions>
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="0" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<condition var1="tw_has_action2" var2="1" />
|
||||
<actions>
|
||||
<action function="%tw_action%">%tw_action_param%</action>
|
||||
<action function="%tw_action2%">%tw_action2_param%</action>
|
||||
</actions>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="action_complete">
|
||||
<object type="template" name="header" />
|
||||
|
||||
@@ -3895,5 +3937,107 @@
|
||||
|
||||
<object type="template" name="footer" />
|
||||
</page>
|
||||
|
||||
<page name="installsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5"/>
|
||||
<text>Install SuperSU?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Your device does not appear to be rooted.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Install SuperSU now? This will root your device.</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row2_medium_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Install</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=installsu</action>
|
||||
<action function="set">tw_action_text1=Installing SuperSU</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Install</text>
|
||||
</object>
|
||||
</page>
|
||||
|
||||
<page name="fixsu">
|
||||
<object type="template" name="header" />
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row1_text_y%" placement="5"/>
|
||||
<text>Fix Superuser Permissions?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5"/>
|
||||
<text>Root permissions appear to be lost.</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5"/>
|
||||
<text>Fix root permissions now?</text>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row4_text_y%" placement="5"/>
|
||||
<text>(Fixes permissions on su binary & app)</text>
|
||||
</object>
|
||||
|
||||
<object type="button">
|
||||
<highlight color="%highlight_color%" />
|
||||
<placement x="%col_center_x%" y="%row2_medium_y%" />
|
||||
<font resource="font" color="%button_text_color%" />
|
||||
<text>Do Not Fix</text>
|
||||
<image resource="main_button" />
|
||||
<action function="set">tw_page_done=1</action>
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<placement x="%slider_x%" y="%slider_y%" />
|
||||
<resource base="slider" used="slider-used" touch="slider-touch" />
|
||||
<actions>
|
||||
<action function="set">tw_action=fixsu</action>
|
||||
<action function="set">tw_action_text1=Fixing Root Permissions</action>
|
||||
<action function="set">tw_action_text2=</action>
|
||||
<action function="page">singleaction_page</action>
|
||||
</actions>
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%slider_text_y%" placement="4" />
|
||||
<text>Swipe to Fix Root</text>
|
||||
</object>
|
||||
</page>
|
||||
</pages>
|
||||
</recovery>
|
||||
|
||||
@@ -790,19 +790,19 @@ bool GUIFileSelector::fileSort(FileData d1, FileData d2)
|
||||
case 3: // by size largest first
|
||||
if (d1.fileSize == d2.fileSize || d1.fileType == DT_DIR) // some directories report a different size than others - but this is not the size of the files inside the directory, so we just sort by name on directories
|
||||
return (strcasecmp(d1.fileName.c_str(), d2.fileName.c_str()) < 0);
|
||||
return d1.fileSize > d2.fileSize;
|
||||
return d1.fileSize < d2.fileSize;
|
||||
case -3: // by size smallest first
|
||||
if (d1.fileSize == d2.fileSize || d1.fileType == DT_DIR) // some directories report a different size than others - but this is not the size of the files inside the directory, so we just sort by name on directories
|
||||
return (strcasecmp(d1.fileName.c_str(), d2.fileName.c_str()) > 0);
|
||||
return d1.fileSize < d2.fileSize;
|
||||
return d1.fileSize > d2.fileSize;
|
||||
case 2: // by last modified date newest first
|
||||
if (d1.lastModified == d2.lastModified)
|
||||
return (strcasecmp(d1.fileName.c_str(), d2.fileName.c_str()) < 0);
|
||||
return d1.lastModified > d2.lastModified;
|
||||
return d1.lastModified < d2.lastModified;
|
||||
case -2: // by date oldest first
|
||||
if (d1.lastModified == d2.lastModified)
|
||||
return (strcasecmp(d1.fileName.c_str(), d2.fileName.c_str()) > 0);
|
||||
return d1.lastModified < d2.lastModified;
|
||||
return d1.lastModified > d2.lastModified;
|
||||
case -1: // by name descending
|
||||
return (strcasecmp(d1.fileName.c_str(), d2.fileName.c_str()) > 0);
|
||||
default: // should be a 1 - sort by name ascending
|
||||
|
||||
@@ -423,6 +423,10 @@ runPages (void)
|
||||
PageManager::Render ();
|
||||
flip ();
|
||||
}
|
||||
if (DataManager::GetIntValue("tw_gui_done") != 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
gGuiRunning = 0;
|
||||
|
||||
@@ -185,3 +185,23 @@ ifeq ($(TW_INCLUDE_DUMLOCK), true)
|
||||
LOCAL_SRC_FILES := $(LOCAL_MODULE)
|
||||
include $(BUILD_PREBUILT)
|
||||
endif
|
||||
|
||||
ifneq ($(TW_EXCLUDE_SUPERSU), true)
|
||||
#su binary
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := su
|
||||
LOCAL_MODULE_TAGS := eng
|
||||
LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
|
||||
LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/res/supersu
|
||||
LOCAL_SRC_FILES := $(LOCAL_MODULE)
|
||||
include $(BUILD_PREBUILT)
|
||||
|
||||
#SuperSU special installer APK
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := Superuser.apk
|
||||
LOCAL_MODULE_TAGS := eng
|
||||
LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
|
||||
LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/res/supersu
|
||||
LOCAL_SRC_FILES := $(LOCAL_MODULE)
|
||||
include $(BUILD_PREBUILT)
|
||||
endif
|
||||
Binary file not shown.
Executable
BIN
Binary file not shown.
@@ -977,9 +977,40 @@ main(int argc, char **argv) {
|
||||
//prompt_and_wait(device);
|
||||
}
|
||||
|
||||
// Check for su to see if the device is rooted or not
|
||||
if (PartitionManager.Mount_By_Path("/system", false)) {
|
||||
if (TWFunc::Path_Exists("/res/supersu/su") && !TWFunc::Path_Exists("/system/bin/su") && !TWFunc::Path_Exists("/system/xbin/su") && !TWFunc::Path_Exists("/system/bin/.ext/.su")) {
|
||||
// Device doesn't have su installed
|
||||
DataManager_SetIntValue("tw_busy", 1);
|
||||
if (gui_startPage("installsu") != 0) {
|
||||
LOGE("Failed to start decrypt GUI page.\n");
|
||||
}
|
||||
} else if (TWFunc::Check_su_Perms() > 0) {
|
||||
// su perms are set incorrectly
|
||||
DataManager_SetIntValue("tw_busy", 1);
|
||||
if (gui_startPage("fixsu") != 0) {
|
||||
LOGE("Failed to start decrypt GUI page.\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Otherwise, get ready to boot the main system...
|
||||
finish_recovery(send_intent);
|
||||
ui->Print("Rebooting...\n");
|
||||
char backup_arg_char[50];
|
||||
strcpy(backup_arg_char, DataManager_GetStrValue("tw_reboot_arg"));
|
||||
string backup_arg = backup_arg_char;
|
||||
if (backup_arg == "recovery")
|
||||
TWFunc::tw_reboot(rb_recovery);
|
||||
else if (backup_arg == "poweroff")
|
||||
TWFunc::tw_reboot(rb_poweroff);
|
||||
else if (backup_arg == "bootloader")
|
||||
TWFunc::tw_reboot(rb_bootloader);
|
||||
else if (backup_arg == "download")
|
||||
TWFunc::tw_reboot(rb_download);
|
||||
else
|
||||
TWFunc::tw_reboot(rb_system);
|
||||
|
||||
#ifdef ANDROID_RB_RESTART
|
||||
android_reboot(ANDROID_RB_RESTART, 0, 0);
|
||||
#else
|
||||
|
||||
+265
-62
@@ -48,10 +48,10 @@ int TWFunc::Exec_Cmd(string cmd, string &result) {
|
||||
}
|
||||
|
||||
/* Checks md5 for a path
|
||||
Return values:
|
||||
-1 : MD5 does not exist
|
||||
0 : Failed
|
||||
1 : Success */
|
||||
Return values:
|
||||
-1 : MD5 does not exist
|
||||
0 : Failed
|
||||
1 : Success */
|
||||
int TWFunc::Check_MD5(string File) {
|
||||
int ret;
|
||||
string Command, DirPath, MD5_File, Sline, Filename, MD5_File_Filename, OK;
|
||||
@@ -86,7 +86,7 @@ int TWFunc::Check_MD5(string File) {
|
||||
ret = -1;
|
||||
}
|
||||
|
||||
return ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Returns "file.name" from a full /path/to/file.name
|
||||
@@ -288,30 +288,30 @@ static const char *TEMPORARY_INSTALL_FILE = "/tmp/last_install";
|
||||
|
||||
// close a file, log an error if the error indicator is set
|
||||
void TWFunc::check_and_fclose(FILE *fp, const char *name) {
|
||||
fflush(fp);
|
||||
if (ferror(fp)) LOGE("Error in %s\n(%s)\n", name, strerror(errno));
|
||||
fclose(fp);
|
||||
fflush(fp);
|
||||
if (ferror(fp)) LOGE("Error in %s\n(%s)\n", name, strerror(errno));
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
void TWFunc::copy_log_file(const char* source, const char* destination, int append) {
|
||||
FILE *log = fopen_path(destination, append ? "a" : "w");
|
||||
if (log == NULL) {
|
||||
LOGE("Can't open %s\n", destination);
|
||||
} else {
|
||||
FILE *tmplog = fopen(source, "r");
|
||||
if (tmplog != NULL) {
|
||||
if (append) {
|
||||
fseek(tmplog, tmplog_offset, SEEK_SET); // Since last write
|
||||
}
|
||||
char buf[4096];
|
||||
while (fgets(buf, sizeof(buf), tmplog)) fputs(buf, log);
|
||||
if (append) {
|
||||
tmplog_offset = ftell(tmplog);
|
||||
}
|
||||
check_and_fclose(tmplog, source);
|
||||
}
|
||||
check_and_fclose(log, destination);
|
||||
}
|
||||
FILE *log = fopen_path(destination, append ? "a" : "w");
|
||||
if (log == NULL) {
|
||||
LOGE("Can't open %s\n", destination);
|
||||
} else {
|
||||
FILE *tmplog = fopen(source, "r");
|
||||
if (tmplog != NULL) {
|
||||
if (append) {
|
||||
fseek(tmplog, tmplog_offset, SEEK_SET); // Since last write
|
||||
}
|
||||
char buf[4096];
|
||||
while (fgets(buf, sizeof(buf), tmplog)) fputs(buf, log);
|
||||
if (append) {
|
||||
tmplog_offset = ftell(tmplog);
|
||||
}
|
||||
check_and_fclose(tmplog, source);
|
||||
}
|
||||
check_and_fclose(log, destination);
|
||||
}
|
||||
}
|
||||
|
||||
// clear the recovery command and prepare to boot a (hopefully working) system,
|
||||
@@ -323,10 +323,10 @@ void TWFunc::twfinish_recovery(const char *send_intent) {
|
||||
if (send_intent != NULL) {
|
||||
FILE *fp = fopen_path(INTENT_FILE, "w");
|
||||
if (fp == NULL) {
|
||||
LOGE("Can't open %s\n", INTENT_FILE);
|
||||
LOGE("Can't open %s\n", INTENT_FILE);
|
||||
} else {
|
||||
fputs(send_intent, fp);
|
||||
check_and_fclose(fp, INTENT_FILE);
|
||||
fputs(send_intent, fp);
|
||||
check_and_fclose(fp, INTENT_FILE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -346,7 +346,7 @@ void TWFunc::twfinish_recovery(const char *send_intent) {
|
||||
|
||||
// Remove the command file, so recovery won't repeat indefinitely.
|
||||
if (!PartitionManager.Mount_By_Path("/system", true) || (unlink(COMMAND_FILE) && errno != ENOENT)) {
|
||||
LOGW("Can't unlink %s\n", COMMAND_FILE);
|
||||
LOGW("Can't unlink %s\n", COMMAND_FILE);
|
||||
}
|
||||
|
||||
PartitionManager.UnMount_By_Path("/cache", true);
|
||||
@@ -357,34 +357,34 @@ void TWFunc::twfinish_recovery(const char *send_intent) {
|
||||
int TWFunc::tw_reboot(RebootCommand command)
|
||||
{
|
||||
// Always force a sync before we reboot
|
||||
sync();
|
||||
sync();
|
||||
|
||||
switch (command)
|
||||
{
|
||||
case rb_current:
|
||||
case rb_system:
|
||||
twfinish_recovery("s");
|
||||
switch (command)
|
||||
{
|
||||
case rb_current:
|
||||
case rb_system:
|
||||
twfinish_recovery("s");
|
||||
sync();
|
||||
check_and_run_script("/sbin/rebootsystem.sh", "reboot system");
|
||||
return reboot(RB_AUTOBOOT);
|
||||
case rb_recovery:
|
||||
return reboot(RB_AUTOBOOT);
|
||||
case rb_recovery:
|
||||
check_and_run_script("/sbin/rebootrecovery.sh", "reboot recovery");
|
||||
return __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_RESTART2, (void*) "recovery");
|
||||
case rb_bootloader:
|
||||
return __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_RESTART2, (void*) "recovery");
|
||||
case rb_bootloader:
|
||||
check_and_run_script("/sbin/rebootbootloader.sh", "reboot bootloader");
|
||||
return __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_RESTART2, (void*) "bootloader");
|
||||
case rb_poweroff:
|
||||
return __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_RESTART2, (void*) "bootloader");
|
||||
case rb_poweroff:
|
||||
check_and_run_script("/sbin/poweroff.sh", "power off");
|
||||
android_reboot(ANDROID_RB_POWEROFF, 0, 0);
|
||||
return reboot(RB_POWER_OFF);
|
||||
case rb_download:
|
||||
return reboot(RB_POWER_OFF);
|
||||
case rb_download:
|
||||
check_and_run_script("/sbin/rebootdownload.sh", "reboot download");
|
||||
return __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_RESTART2, (void*) "download");
|
||||
return 1;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
return -1;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void TWFunc::check_and_run_script(const char* script_file, const char* display_name)
|
||||
@@ -503,21 +503,224 @@ int TWFunc::write_file(string fn, string& line) {
|
||||
|
||||
timespec TWFunc::timespec_diff(timespec& start, timespec& end)
|
||||
{
|
||||
timespec temp;
|
||||
if ((end.tv_nsec-start.tv_nsec)<0) {
|
||||
temp.tv_sec = end.tv_sec-start.tv_sec-1;
|
||||
temp.tv_nsec = 1000000000+end.tv_nsec-start.tv_nsec;
|
||||
} else {
|
||||
temp.tv_sec = end.tv_sec-start.tv_sec;
|
||||
temp.tv_nsec = end.tv_nsec-start.tv_nsec;
|
||||
}
|
||||
return temp;
|
||||
timespec temp;
|
||||
if ((end.tv_nsec-start.tv_nsec)<0) {
|
||||
temp.tv_sec = end.tv_sec-start.tv_sec-1;
|
||||
temp.tv_nsec = 1000000000+end.tv_nsec-start.tv_nsec;
|
||||
} else {
|
||||
temp.tv_sec = end.tv_sec-start.tv_sec;
|
||||
temp.tv_nsec = end.tv_nsec-start.tv_nsec;
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
|
||||
int TWFunc::drop_caches(void) {
|
||||
string file = "/proc/sys/vm/drop_caches";
|
||||
string value = "3";
|
||||
if (write_file(file, value) != 0)
|
||||
return -1;
|
||||
return 0;
|
||||
string file = "/proc/sys/vm/drop_caches";
|
||||
string value = "3";
|
||||
if (write_file(file, value) != 0)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int TWFunc::Check_su_Perms(void) {
|
||||
struct stat st;
|
||||
int ret = 0;
|
||||
|
||||
if (!PartitionManager.Mount_By_Path("/system", false))
|
||||
return 0;
|
||||
|
||||
// Check to ensure that perms are 6755 for all 3 file locations
|
||||
if (stat("/system/bin/su", &st) == 0) {
|
||||
if ((st.st_mode & (S_ISUID | S_ISGID | S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) != (S_ISUID | S_ISGID | S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) || st.st_uid != 0 || st.st_gid != 0) {
|
||||
ret = 1;
|
||||
}
|
||||
}
|
||||
if (stat("/system/xbin/su", &st) == 0) {
|
||||
if ((st.st_mode & (S_ISUID | S_ISGID | S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) != (S_ISUID | S_ISGID | S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) || st.st_uid != 0 || st.st_gid != 0) {
|
||||
ret += 2;
|
||||
}
|
||||
}
|
||||
if (stat("/system/bin/.ext/.su", &st) == 0) {
|
||||
if ((st.st_mode & (S_ISUID | S_ISGID | S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) != (S_ISUID | S_ISGID | S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) || st.st_uid != 0 || st.st_gid != 0) {
|
||||
ret += 4;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool TWFunc::Fix_su_Perms(void) {
|
||||
if (!PartitionManager.Mount_By_Path("/system", true))
|
||||
return false;
|
||||
|
||||
string file = "/system/bin/su";
|
||||
if (TWFunc::Path_Exists(file)) {
|
||||
if (chown(file.c_str(), 0, 0) != 0) {
|
||||
LOGE("Failed to chown '%s'\n", file.c_str());
|
||||
return false;
|
||||
}
|
||||
if (tw_chmod(file, "6755") != 0) {
|
||||
LOGE("Failed to chmod '%s'\n", file.c_str());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
file = "/system/xbin/su";
|
||||
if (TWFunc::Path_Exists(file)) {
|
||||
if (chown(file.c_str(), 0, 0) != 0) {
|
||||
LOGE("Failed to chown '%s'\n", file.c_str());
|
||||
return false;
|
||||
}
|
||||
if (tw_chmod(file, "6755") != 0) {
|
||||
LOGE("Failed to chmod '%s'\n", file.c_str());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
file = "/system/bin/.ext/.su";
|
||||
if (TWFunc::Path_Exists(file)) {
|
||||
if (chown(file.c_str(), 0, 0) != 0) {
|
||||
LOGE("Failed to chown '%s'\n", file.c_str());
|
||||
return false;
|
||||
}
|
||||
if (tw_chmod(file, "6755") != 0) {
|
||||
LOGE("Failed to chmod '%s'\n", file.c_str());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
file = "/system/app/Superuser.apk";
|
||||
if (TWFunc::Path_Exists(file)) {
|
||||
if (chown(file.c_str(), 0, 0) != 0) {
|
||||
LOGE("Failed to chown '%s'\n", file.c_str());
|
||||
return false;
|
||||
}
|
||||
if (tw_chmod(file, "0644") != 0) {
|
||||
LOGE("Failed to chmod '%s'\n", file.c_str());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
sync();
|
||||
if (!PartitionManager.UnMount_By_Path("/system", true))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
int TWFunc::tw_chmod(string fn, string mode) {
|
||||
long mask = 0;
|
||||
|
||||
for ( std::string::size_type n = 0; n < mode.length(); ++n) {
|
||||
if (n == 0) {
|
||||
if (mode[n] == '0')
|
||||
continue;
|
||||
if (mode[n] == '1')
|
||||
mask |= S_ISVTX;
|
||||
if (mode[n] == '2')
|
||||
mask |= S_ISGID;
|
||||
if (mode[n] == '4')
|
||||
mask |= S_ISUID;
|
||||
if (mode[n] == '5') {
|
||||
mask |= S_ISVTX;
|
||||
mask |= S_ISUID;
|
||||
}
|
||||
if (mode[n] == '6') {
|
||||
mask |= S_ISGID;
|
||||
mask |= S_ISUID;
|
||||
}
|
||||
if (mode[n] == '7') {
|
||||
mask |= S_ISVTX;
|
||||
mask |= S_ISGID;
|
||||
mask |= S_ISUID;
|
||||
}
|
||||
}
|
||||
else if (n == 1) {
|
||||
if (mode[n] == '7') {
|
||||
mask |= S_IRWXU;
|
||||
}
|
||||
if (mode[n] == '6') {
|
||||
mask |= S_IRUSR;
|
||||
mask |= S_IWUSR;
|
||||
}
|
||||
if (mode[n] == '5') {
|
||||
mask |= S_IRUSR;
|
||||
mask |= S_IXUSR;
|
||||
}
|
||||
if (mode[n] == '4')
|
||||
mask |= S_IRUSR;
|
||||
if (mode[n] == '3') {
|
||||
mask |= S_IWUSR;
|
||||
mask |= S_IRUSR;
|
||||
}
|
||||
if (mode[n] == '2')
|
||||
mask |= S_IWUSR;
|
||||
if (mode[n] == '1')
|
||||
mask |= S_IXUSR;
|
||||
}
|
||||
else if (n == 2) {
|
||||
if (mode[n] == '7') {
|
||||
mask |= S_IRWXG;
|
||||
}
|
||||
if (mode[n] == '6') {
|
||||
mask |= S_IRGRP;
|
||||
mask |= S_IWGRP;
|
||||
}
|
||||
if (mode[n] == '5') {
|
||||
mask |= S_IRGRP;
|
||||
mask |= S_IXGRP;
|
||||
}
|
||||
if (mode[n] == '4')
|
||||
mask |= S_IRGRP;
|
||||
if (mode[n] == '3') {
|
||||
mask |= S_IWGRP;
|
||||
mask |= S_IXGRP;
|
||||
}
|
||||
if (mode[n] == '2')
|
||||
mask |= S_IWGRP;
|
||||
if (mode[n] == '1')
|
||||
mask |= S_IXGRP;
|
||||
}
|
||||
else if (n == 3) {
|
||||
if (mode[n] == '7') {
|
||||
mask |= S_IRWXO;
|
||||
}
|
||||
if (mode[n] == '6') {
|
||||
mask |= S_IROTH;
|
||||
mask |= S_IWOTH;
|
||||
}
|
||||
if (mode[n] == '5') {
|
||||
mask |= S_IROTH;
|
||||
mask |= S_IXOTH;
|
||||
}
|
||||
if (mode[n] == '4')
|
||||
mask |= S_IROTH;
|
||||
if (mode[n] == '3') {
|
||||
mask |= S_IWOTH;
|
||||
mask |= S_IXOTH;
|
||||
}
|
||||
if (mode[n] == '2')
|
||||
mask |= S_IWOTH;
|
||||
if (mode[n] == '1')
|
||||
mask |= S_IXOTH;
|
||||
}
|
||||
}
|
||||
|
||||
if (chmod(fn.c_str(), mask) != 0) {
|
||||
LOGE("Unable to chmod '%s' %l\n", fn.c_str(), mask);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool TWFunc::Install_SuperSU(void) {
|
||||
if (!PartitionManager.Mount_By_Path("/system", true))
|
||||
return false;
|
||||
|
||||
if (copy_file("/res/supersu/su", "/system/xbin/su", 0755) != 0) {
|
||||
LOGE("Failed to copy su binary to /system/bin\n");
|
||||
return false;
|
||||
}
|
||||
if (copy_file("/res/supersu/Superuser.apk", "/system/app/Superuser.apk", 0644) != 0) {
|
||||
LOGE("Failed to copy Superuser app to /system/app\n");
|
||||
return false;
|
||||
}
|
||||
if (!Fix_su_Perms())
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
+58
-54
@@ -1,54 +1,58 @@
|
||||
#ifndef _TWRPFUNCTIONS_HPP
|
||||
#define _TWRPFUNCTIONS_HPP
|
||||
|
||||
#include <string>
|
||||
|
||||
using namespace std;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
rb_current = 0,
|
||||
rb_system,
|
||||
rb_recovery,
|
||||
rb_poweroff,
|
||||
rb_bootloader, // May also be fastboot
|
||||
rb_download,
|
||||
} RebootCommand;
|
||||
|
||||
// Partition class
|
||||
class TWFunc
|
||||
{
|
||||
public:
|
||||
static int Check_MD5(string File);
|
||||
static string Get_Root_Path(string Path); // Trims any trailing folders or filenames from the path, also adds a leading / if not present
|
||||
static string Get_Path(string Path); // Trims everything after the last / in the string
|
||||
static string Get_Filename(string Path); // Trims the path off of a filename
|
||||
|
||||
static void install_htc_dumlock(void); // Installs HTC Dumlock
|
||||
static void htc_dumlock_restore_original_boot(void); // Restores the backup of boot from HTC Dumlock
|
||||
static void htc_dumlock_reflash_recovery_to_boot(void); // Reflashes the current recovery to boot
|
||||
static int Recursive_Mkdir(string Path); // Recursively makes the entire path
|
||||
static unsigned long long Get_Folder_Size(const string& Path, bool Display_Error); // Gets the size of a folder and all of its subfolders using dirent and stat
|
||||
static bool Path_Exists(string Path); // Returns true if the path exists
|
||||
static void GUI_Operation_Text(string Read_Value, string Default_Text); // Updates text for display in the GUI, e.g. Backing up %partition name%
|
||||
static void GUI_Operation_Text(string Read_Value, string Partition_Name, string Default_Text); // Same as above but includes partition name
|
||||
static unsigned long Get_File_Size(string Path); // Returns the size of a file
|
||||
static void twfinish_recovery(const char *send_intent); // Writes the log to last_log
|
||||
static int tw_reboot(RebootCommand command); // Prepares the device for rebooting
|
||||
static void check_and_run_script(const char* script_file, const char* display_name); // checks for the existence of a script, chmods it to 755, then runs it
|
||||
static int Exec_Cmd(string cmd, string &result); //execute a command and return the result as a string by reference
|
||||
static int removeDir(const string path, bool removeParent); //recursively remove a directory
|
||||
static int copy_file(string src, string dst, int mode); //copy file from src to dst with mode permissions
|
||||
static unsigned int Get_D_Type_From_Stat(string Path); // Returns a dirent dt_type value using stat instead of dirent
|
||||
static timespec timespec_diff(timespec& start, timespec& end); // Return a diff for 2 times
|
||||
static int read_file(string fn, string& results); //read from file
|
||||
static int write_file(string fn, string& line); //write from file
|
||||
static int drop_caches(void); //drop linux cache memory
|
||||
|
||||
private:
|
||||
static void check_and_fclose(FILE *fp, const char *name);
|
||||
static void copy_log_file(const char* source, const char* destination, int append);
|
||||
|
||||
};
|
||||
|
||||
#endif // _TWRPFUNCTIONS_HPP
|
||||
#ifndef _TWRPFUNCTIONS_HPP
|
||||
#define _TWRPFUNCTIONS_HPP
|
||||
|
||||
#include <string>
|
||||
|
||||
using namespace std;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
rb_current = 0,
|
||||
rb_system,
|
||||
rb_recovery,
|
||||
rb_poweroff,
|
||||
rb_bootloader, // May also be fastboot
|
||||
rb_download,
|
||||
} RebootCommand;
|
||||
|
||||
// Partition class
|
||||
class TWFunc
|
||||
{
|
||||
public:
|
||||
static int Check_MD5(string File);
|
||||
static string Get_Root_Path(string Path); // Trims any trailing folders or filenames from the path, also adds a leading / if not present
|
||||
static string Get_Path(string Path); // Trims everything after the last / in the string
|
||||
static string Get_Filename(string Path); // Trims the path off of a filename
|
||||
|
||||
static void install_htc_dumlock(void); // Installs HTC Dumlock
|
||||
static void htc_dumlock_restore_original_boot(void); // Restores the backup of boot from HTC Dumlock
|
||||
static void htc_dumlock_reflash_recovery_to_boot(void); // Reflashes the current recovery to boot
|
||||
static int Recursive_Mkdir(string Path); // Recursively makes the entire path
|
||||
static unsigned long long Get_Folder_Size(const string& Path, bool Display_Error); // Gets the size of a folder and all of its subfolders using dirent and stat
|
||||
static bool Path_Exists(string Path); // Returns true if the path exists
|
||||
static void GUI_Operation_Text(string Read_Value, string Default_Text); // Updates text for display in the GUI, e.g. Backing up %partition name%
|
||||
static void GUI_Operation_Text(string Read_Value, string Partition_Name, string Default_Text); // Same as above but includes partition name
|
||||
static unsigned long Get_File_Size(string Path); // Returns the size of a file
|
||||
static void twfinish_recovery(const char *send_intent); // Writes the log to last_log
|
||||
static int tw_reboot(RebootCommand command); // Prepares the device for rebooting
|
||||
static void check_and_run_script(const char* script_file, const char* display_name); // checks for the existence of a script, chmods it to 755, then runs it
|
||||
static int Exec_Cmd(string cmd, string &result); //execute a command and return the result as a string by reference
|
||||
static int removeDir(const string path, bool removeParent); //recursively remove a directory
|
||||
static int copy_file(string src, string dst, int mode); //copy file from src to dst with mode permissions
|
||||
static unsigned int Get_D_Type_From_Stat(string Path); // Returns a dirent dt_type value using stat instead of dirent
|
||||
static timespec timespec_diff(timespec& start, timespec& end); // Return a diff for 2 times
|
||||
static int read_file(string fn, string& results); //read from file
|
||||
static int write_file(string fn, string& line); //write from file
|
||||
static int drop_caches(void); //drop linux cache memory
|
||||
static int Check_su_Perms(void); // check perms and owner of su binary in various locations
|
||||
static bool Fix_su_Perms(void); // sets proper permissions for su binaries and superuser apk
|
||||
static int tw_chmod(string fn, string mode); // chmod function that converts a 4 char string into st_mode automatically
|
||||
static bool Install_SuperSU(void); // Installs su binary and apk and sets proper permissions
|
||||
|
||||
private:
|
||||
static void check_and_fclose(FILE *fp, const char *name);
|
||||
static void copy_log_file(const char* source, const char* destination, int append);
|
||||
|
||||
};
|
||||
|
||||
#endif // _TWRPFUNCTIONS_HPP
|
||||
|
||||
Reference in New Issue
Block a user