Add theme version checking
Add a themeversion value to the ui.xml details section. Check this value against a define during early theme loading. If we are loading a custom theme, then reject the custom theme if the version does not match (or not defined) and load the stock theme. If it is the stock theme, show a warning but continue loading. Also fix an issue with changing overlays. Not sure how it ever worked before, but it works now. TLDR: Use the stock theme if the custom theme version does not match. Change-Id: I0277cbe035cbec7e16b6327500762dadf9c1c5c8
This commit is contained in:
+21
-2
@@ -49,6 +49,8 @@ extern "C" {
|
||||
#include "objects.hpp"
|
||||
#include "blanktimer.hpp"
|
||||
|
||||
#define TW_THEME_VERSION 1
|
||||
|
||||
extern int gGuiRunning;
|
||||
|
||||
// From ../twrp.cpp
|
||||
@@ -735,11 +737,28 @@ int PageSet::Load(ZipArchive* package, char* xmlFile, char* languageFile)
|
||||
set_scale_values(1, 1); // Reset any previous scaling values
|
||||
|
||||
// Now, let's parse the XML
|
||||
LOGINFO("Checking resolution...\n");
|
||||
child = parent->first_node("details");
|
||||
if (child) {
|
||||
int theme_ver = 0;
|
||||
xml_node<>* themeversion = child->first_node("themeversion");
|
||||
if (themeversion && themeversion->value()) {
|
||||
theme_ver = atoi(themeversion->value());
|
||||
} else {
|
||||
LOGINFO("No themeversion in theme.\n");
|
||||
}
|
||||
if (theme_ver != TW_THEME_VERSION) {
|
||||
LOGINFO("theme version from xml: %i, expected %i\n", theme_ver, TW_THEME_VERSION);
|
||||
if (package) {
|
||||
gui_err("theme_ver_err=Custom theme version does not match TWRP version. Using stock theme.");
|
||||
mDoc.clear();
|
||||
return -1;
|
||||
} else {
|
||||
gui_print_color("warning", "Stock theme version does not match TWRP version.\n");
|
||||
}
|
||||
}
|
||||
xml_node<>* resolution = child->first_node("resolution");
|
||||
if (resolution) {
|
||||
LOGINFO("Checking resolution...\n");
|
||||
xml_attribute<>* width_attr = resolution->first_attribute("width");
|
||||
xml_attribute<>* height_attr = resolution->first_attribute("height");
|
||||
xml_attribute<>* noscale_attr = resolution->first_attribute("noscaling");
|
||||
@@ -1558,7 +1577,7 @@ int PageManager::ChangeOverlay(std::string name)
|
||||
return mCurrentSet->SetOverlay(NULL);
|
||||
else
|
||||
{
|
||||
Page* page = mBaseSet ? mBaseSet->FindPage(name) : NULL;
|
||||
Page* page = mCurrentSet ? mCurrentSet->FindPage(name) : NULL;
|
||||
return mCurrentSet->SetOverlay(page);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -667,5 +667,6 @@
|
||||
<string name="no_real_sdcard">This device does not have a real SD Card! Aborting!</string>
|
||||
<string name="cancel_sideload">Cancelling ADB sideload...</string>
|
||||
<string name="change_fs_err">Error changing file system.</string>
|
||||
<string name="theme_ver_err">Custom theme version does not match TWRP version. Using stock theme.</string>
|
||||
</resources>
|
||||
</language>
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
<title>Backup Naowz</title>
|
||||
<description>Default basic theme</description>
|
||||
<preview>preview.jpg</preview>
|
||||
<themeversion>1</themeversion>
|
||||
</details>
|
||||
|
||||
<include>
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
<title>Backup Naowz</title>
|
||||
<description>Default basic theme</description>
|
||||
<preview>preview.jpg</preview>
|
||||
<themeversion>1</themeversion>
|
||||
</details>
|
||||
|
||||
<include>
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
<title>Backup Naowz</title>
|
||||
<description>Default basic theme</description>
|
||||
<preview>preview.jpg</preview>
|
||||
<themeversion>1</themeversion>
|
||||
</details>
|
||||
|
||||
<include>
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
<title>Backup Naowz</title>
|
||||
<description>Default basic theme</description>
|
||||
<preview>preview.jpg</preview>
|
||||
<themeversion>1</themeversion>
|
||||
</details>
|
||||
|
||||
<include>
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
<title>Backup Naowz</title>
|
||||
<description>Default basic theme</description>
|
||||
<preview>preview.jpg</preview>
|
||||
<themeversion>1</themeversion>
|
||||
</details>
|
||||
|
||||
<include>
|
||||
|
||||
Reference in New Issue
Block a user