summaryrefslogtreecommitdiffstats
path: root/screen_ui.cpp
diff options
context:
space:
mode:
authorTao Bao <tbao@google.com>2017-02-01 08:03:10 +0100
committerTao Bao <tbao@google.com>2017-09-11 21:19:32 +0200
commitefb49add97cfda58c417ea4052cb6afb84c16c03 (patch)
tree2d27057a3a3bba0a9560bcded0b4eae001154c2b /screen_ui.cpp
parentMerge "ui: Remove text_top_." (diff)
downloadandroid_bootable_recovery-efb49add97cfda58c417ea4052cb6afb84c16c03.tar
android_bootable_recovery-efb49add97cfda58c417ea4052cb6afb84c16c03.tar.gz
android_bootable_recovery-efb49add97cfda58c417ea4052cb6afb84c16c03.tar.bz2
android_bootable_recovery-efb49add97cfda58c417ea4052cb6afb84c16c03.tar.lz
android_bootable_recovery-efb49add97cfda58c417ea4052cb6afb84c16c03.tar.xz
android_bootable_recovery-efb49add97cfda58c417ea4052cb6afb84c16c03.tar.zst
android_bootable_recovery-efb49add97cfda58c417ea4052cb6afb84c16c03.zip
Diffstat (limited to 'screen_ui.cpp')
-rw-r--r--screen_ui.cpp31
1 files changed, 29 insertions, 2 deletions
diff --git a/screen_ui.cpp b/screen_ui.cpp
index a366bb3ef..d65d656bd 100644
--- a/screen_ui.cpp
+++ b/screen_ui.cpp
@@ -14,6 +14,8 @@
* limitations under the License.
*/
+#include "screen_ui.h"
+
#include <dirent.h>
#include <errno.h>
#include <fcntl.h>
@@ -36,11 +38,10 @@
#include <android-base/properties.h>
#include <android-base/stringprintf.h>
#include <android-base/strings.h>
+#include <minui/minui.h>
#include "common.h"
#include "device.h"
-#include "minui/minui.h"
-#include "screen_ui.h"
#include "ui.h"
// Return the current time as a double (including fractions of a second).
@@ -79,6 +80,8 @@ ScreenRecoveryUI::ScreenRecoveryUI()
intro_done(false),
stage(-1),
max_stage(-1),
+ locale_(""),
+ rtl_locale_(false),
updateMutex(PTHREAD_MUTEX_INITIALIZER) {}
GRSurface* ScreenRecoveryUI::GetCurrentFrame() const {
@@ -496,6 +499,7 @@ bool ScreenRecoveryUI::InitTextParams() {
bool ScreenRecoveryUI::Init(const std::string& locale) {
RecoveryUI::Init(locale);
+
if (!InitTextParams()) {
return false;
}
@@ -510,6 +514,9 @@ bool ScreenRecoveryUI::Init(const std::string& locale) {
text_col_ = text_row_ = 0;
+ // Set up the locale info.
+ SetLocale(locale);
+
LoadBitmap("icon_error", &error_icon);
LoadBitmap("progress_empty", &progressBarEmpty);
@@ -833,3 +840,23 @@ void ScreenRecoveryUI::KeyLongPress(int) {
// will change color to indicate a successful long press.
Redraw();
}
+
+void ScreenRecoveryUI::SetLocale(const std::string& new_locale) {
+ locale_ = new_locale;
+ rtl_locale_ = false;
+
+ if (!new_locale.empty()) {
+ size_t underscore = new_locale.find('_');
+ // lang has the language prefix prior to '_', or full string if '_' doesn't exist.
+ std::string lang = new_locale.substr(0, underscore);
+
+ // A bit cheesy: keep an explicit list of supported RTL languages.
+ if (lang == "ar" || // Arabic
+ lang == "fa" || // Persian (Farsi)
+ lang == "he" || // Hebrew (new language code)
+ lang == "iw" || // Hebrew (old language code)
+ lang == "ur") { // Urdu
+ rtl_locale_ = true;
+ }
+ }
+}