aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/utils/RunInLocale.java
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2014-04-17 16:59:19 +0900
committerTadashi G. Takaoka <takaoka@google.com>2014-04-17 17:39:19 +0900
commit5c490e5da5a1a403c307eb3660fe74158434a0dc (patch)
treee01cbe3ea9aea02f01c0a4f4fcf29362a2fb8cb0 /java/src/com/android/inputmethod/latin/utils/RunInLocale.java
parentb21edc44026bac1a41cbf01aa4476c5cdf2a1812 (diff)
downloadlatinime-5c490e5da5a1a403c307eb3660fe74158434a0dc.tar.gz
latinime-5c490e5da5a1a403c307eb3660fe74158434a0dc.tar.xz
latinime-5c490e5da5a1a403c307eb3660fe74158434a0dc.zip
Refactor RunInLocale a bit
Change-Id: If60877b29bb1263161ec85c99320ad07b7dd4245
Diffstat (limited to 'java/src/com/android/inputmethod/latin/utils/RunInLocale.java')
-rw-r--r--java/src/com/android/inputmethod/latin/utils/RunInLocale.java22
1 files changed, 10 insertions, 12 deletions
diff --git a/java/src/com/android/inputmethod/latin/utils/RunInLocale.java b/java/src/com/android/inputmethod/latin/utils/RunInLocale.java
index 2c9e3b191..3c632bbc3 100644
--- a/java/src/com/android/inputmethod/latin/utils/RunInLocale.java
+++ b/java/src/com/android/inputmethod/latin/utils/RunInLocale.java
@@ -30,25 +30,23 @@ public abstract class RunInLocale<T> {
* Execute {@link #job(Resources)} method in specified system locale exclusively.
*
* @param res the resources to use.
- * @param newLocale the locale to change to.
+ * @param newLocale the locale to change to. Run in system locale if null.
* @return the value returned from {@link #job(Resources)}.
*/
public T runInLocale(final Resources res, final Locale newLocale) {
synchronized (sLockForRunInLocale) {
- final Configuration conf = res.getConfiguration();
- final Locale oldLocale = conf.locale;
- final boolean needsChange = (newLocale != null && !newLocale.equals(oldLocale));
+ final Configuration savedConf = res.getConfiguration();
+ if (newLocale == null || newLocale.equals(savedConf.locale)) {
+ return job(res);
+ }
+ final Configuration newConf = new Configuration();
+ newConf.setTo(savedConf);
+ newConf.setLocale(newLocale);
try {
- if (needsChange) {
- conf.locale = newLocale;
- res.updateConfiguration(conf, null);
- }
+ res.updateConfiguration(newConf, null);
return job(res);
} finally {
- if (needsChange) {
- conf.locale = oldLocale;
- res.updateConfiguration(conf, null);
- }
+ res.updateConfiguration(savedConf, null);
}
}
}