gui: support string resources
storing strings in a map (for fast lookup) in resource manager
To define a string resource in <resources>:
<string name="foo">Hello</string>
To use a string, e.g.:
<text>%@foo%</text>
Not yet done: language-specific resources (should be solved not only for
strings, but for all kinds of resources - e.g. for localized images)
Change-Id: I3ba5cf5298c09e0d28a83973e9662f179271b33f
diff --git a/gui/resources.cpp b/gui/resources.cpp
index 563dcc4..dcd4ca8 100644
--- a/gui/resources.cpp
+++ b/gui/resources.cpp
@@ -4,22 +4,14 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <fcntl.h>
-#include <sys/reboot.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <sys/mman.h>
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <time.h>
#include <unistd.h>
-#include <stdlib.h>
#include <string>
#include <sstream>
#include <iostream>
#include <iomanip>
+#include "../minzip/Zip.h"
extern "C" {
#include "../twcommon.h"
#include "../minuitwrp/minui.h"
@@ -282,6 +274,14 @@
return NULL;
}
+std::string ResourceManager::FindString(const std::string& name) const
+{
+ std::map<std::string, std::string>::const_iterator it = mStrings.find(name);
+ if (it != mStrings.end())
+ return it->second;
+ return "[" + name + ("]");
+}
+
ResourceManager::ResourceManager()
{
}
@@ -339,6 +339,13 @@
delete res;
}
}
+ else if (type == "string")
+ {
+ if (xml_attribute<>* attr = child->first_attribute("name"))
+ mStrings[attr->value()] = child->value();
+ else
+ error = true;
+ }
else
{
LOGERR("Resource type (%s) not supported.\n", type.c_str());