summaryrefslogtreecommitdiffstats
path: root/gui/gui.cpp
diff options
context:
space:
mode:
authorthat <github@that.at>2015-03-05 20:25:39 +0100
committerEthan Yonker <dees_troy@teamw.in>2015-03-11 13:38:37 +0100
commitb2e8f672f310276e7009895c0ac4e58fcfeb35ac (patch)
tree44efb3ac558764f7faa95e509d6e4f19477ea505 /gui/gui.cpp
parentgui: allow specifying resource type in element name (diff)
downloadandroid_bootable_recovery-b2e8f672f310276e7009895c0ac4e58fcfeb35ac.tar
android_bootable_recovery-b2e8f672f310276e7009895c0ac4e58fcfeb35ac.tar.gz
android_bootable_recovery-b2e8f672f310276e7009895c0ac4e58fcfeb35ac.tar.bz2
android_bootable_recovery-b2e8f672f310276e7009895c0ac4e58fcfeb35ac.tar.lz
android_bootable_recovery-b2e8f672f310276e7009895c0ac4e58fcfeb35ac.tar.xz
android_bootable_recovery-b2e8f672f310276e7009895c0ac4e58fcfeb35ac.tar.zst
android_bootable_recovery-b2e8f672f310276e7009895c0ac4e58fcfeb35ac.zip
Diffstat (limited to 'gui/gui.cpp')
-rw-r--r--gui/gui.cpp22
1 files changed, 12 insertions, 10 deletions
diff --git a/gui/gui.cpp b/gui/gui.cpp
index f3d31d7b3..cd6f45d08 100644
--- a/gui/gui.cpp
+++ b/gui/gui.cpp
@@ -729,35 +729,37 @@ int gui_changePackage(std::string newPackage)
return 0;
}
-std::string gui_parse_text(string inText)
+std::string gui_parse_text(std::string str)
{
- // Copied from std::string GUIText::parseText(void)
// This function parses text for DataManager values encompassed by %value% in the XML
- static int counter = 0;
- std::string str = inText;
+ // and string resources (%@resource_name%)
size_t pos = 0;
- size_t next = 0, end = 0;
while (1)
{
- next = str.find('%', pos);
+ size_t next = str.find('%', pos);
if (next == std::string::npos)
return str;
- end = str.find('%', next + 1);
+ size_t end = str.find('%', next + 1);
if (end == std::string::npos)
return str;
// We have a block of data
- std::string var = str.substr(next + 1,(end - next) - 1);
- str.erase(next,(end - next) + 1);
+ std::string var = str.substr(next + 1, (end - next) - 1);
+ str.erase(next, (end - next) + 1);
if (next + 1 == end)
str.insert(next, 1, '%');
else
{
std::string value;
- if (DataManager::GetValue(var, value) == 0)
+ if (var.size() > 0 && var[0] == '@') {
+ // this is a string resource ("%@string_name%")
+ value = PageManager::GetResources()->FindString(var.substr(1));
+ str.insert(next, value);
+ }
+ else if (DataManager::GetValue(var, value) == 0)
str.insert(next, value);
}