[tor-commits] [orbot/master] updates for manually setting locales
n8fr8 at torproject.org
n8fr8 at torproject.org
Mon Feb 27 04:24:19 UTC 2012
commit 3a9a26929613014399e1a484a140857f8266904c
Author: Nathan Freitas <nathan at freitas.net>
Date: Fri Feb 24 00:13:27 2012 -0500
updates for manually setting locales
---
res/values/strings.xml | 4 +++
res/xml/preferences.xml | 13 +++++++++-
src/org/torproject/android/Orbot.java | 24 ++++++++++++++++++++
src/org/torproject/android/OrbotApp.java | 8 +++++-
.../android/settings/SettingsPreferences.java | 23 +++++++++++++++++++
5 files changed, 68 insertions(+), 4 deletions(-)
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 46ba1dc..61ba4fa 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -260,4 +260,8 @@
<string name="notification_using_bridges">Bridges enabled!</string>
<string name="default_bridges"></string>
+
+<string name="set_locale_title">Set Locale</string>
+<string name="set_locale_summary">Choose the locale and language for Orbot</string>
+
</resources>
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index b7b5a43..c6bfcab 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -23,6 +23,15 @@ android:summary="@string/pref_use_persistent_notifications"
android:enabled="true"
android:title="@string/pref_use_persistent_notifications_title"/>
+
+ <ListPreference android:title="@string/set_locale_title"
+ android:key="pref_default_locale"
+ android:entryValues="@array/languages_values"
+ android:entries="@array/languages"
+ android:summary="@string/set_locale_summary"
+ android:defaultValue="en">
+ </ListPreference>
+
<!--
<CheckBoxPreference
android:defaultValue="false"
@@ -92,12 +101,12 @@ android:summary="@string/use_only_these_specified_nodes"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/bridges">
-<CheckBoxPreference android:defaultValue="true"
+<CheckBoxPreference android:defaultValue="false"
android:title="@string/use_bridges" android:key="pref_bridges_enabled"
android:summary="@string/enable_alternate_entrance_nodes_into_the_tor_network"/>
<CheckBoxPreference android:key="pref_bridges_obfuscated"
- android:defaultValue="true"
+ android:defaultValue="false"
android:title="@string/bridges_obfuscated"
android:summary="@string/enable_if_configured_bridges_are_obfuscated_bridges"/>
diff --git a/src/org/torproject/android/Orbot.java b/src/org/torproject/android/Orbot.java
index 93013ba..d71567f 100644
--- a/src/org/torproject/android/Orbot.java
+++ b/src/org/torproject/android/Orbot.java
@@ -3,6 +3,8 @@
package org.torproject.android;
+import java.util.Locale;
+
import org.torproject.android.service.ITorService;
import org.torproject.android.service.ITorServiceCallback;
import org.torproject.android.service.TorServiceConstants;
@@ -22,6 +24,7 @@ import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.res.Configuration;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
@@ -74,6 +77,7 @@ public class Orbot extends Activity implements OnLongClickListener, TorConstants
//might want to look at whether we need to call this every time
//or whether binding to the service is enough
+ setLocale();
bindService();
startService(new Intent(INTENT_TOR_SERVICE));
@@ -342,6 +346,8 @@ public class Orbot extends Activity implements OnLongClickListener, TorConstants
protected void onResume() {
super.onResume();
+ setLocale();
+
if (getIntent() == null)
return;
@@ -897,4 +903,22 @@ public class Orbot extends Activity implements OnLongClickListener, TorConstants
}
+ private void setLocale ()
+ {
+
+ SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
+
+ Configuration config = getResources().getConfiguration();
+
+ String lang = settings.getString(PREF_DEFAULT_LOCALE, "");
+
+ if (! "".equals(lang) && ! config.locale.getLanguage().equals(lang))
+ {
+ Locale locale = new Locale(lang);
+ Locale.setDefault(locale);
+ config.locale = locale;
+ getResources().updateConfiguration(config, getResources().getDisplayMetrics());
+ }
+ }
+
}
diff --git a/src/org/torproject/android/OrbotApp.java b/src/org/torproject/android/OrbotApp.java
index 8d78a06..c5528c9 100644
--- a/src/org/torproject/android/OrbotApp.java
+++ b/src/org/torproject/android/OrbotApp.java
@@ -12,12 +12,13 @@ public class OrbotApp extends Application implements TorConstants
private Locale locale;
private final static String DEFAULT_LOCALE = "en";
+ private SharedPreferences settings;
@Override
public void onCreate() {
super.onCreate();
- SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
+ settings = PreferenceManager.getDefaultSharedPreferences(this);
Configuration config = getResources().getConfiguration();
@@ -38,8 +39,11 @@ public class OrbotApp extends Application implements TorConstants
{
super.onConfigurationChanged(newConfig);
- if (locale != null)
+ String lang = settings.getString(PREF_DEFAULT_LOCALE, DEFAULT_LOCALE);
+
+ if (! "".equals(lang) && ! newConfig.locale.getLanguage().equals(lang))
{
+ locale = new Locale(lang);
newConfig.locale = locale;
Locale.setDefault(locale);
getResources().updateConfiguration(newConfig, getResources().getDisplayMetrics());
diff --git a/src/org/torproject/android/settings/SettingsPreferences.java b/src/org/torproject/android/settings/SettingsPreferences.java
index 35c4314..aa93e5a 100644
--- a/src/org/torproject/android/settings/SettingsPreferences.java
+++ b/src/org/torproject/android/settings/SettingsPreferences.java
@@ -3,6 +3,8 @@
package org.torproject.android.settings;
+import java.util.Locale;
+
import org.torproject.android.R;
import org.torproject.android.R.xml;
import org.torproject.android.TorConstants;
@@ -12,6 +14,7 @@ import org.torproject.android.service.TorTransProxy;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
+import android.content.res.Configuration;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
@@ -31,6 +34,7 @@ public class SettingsPreferences
private Preference prefTransProxyApps = null;
private CheckBoxPreference prefHiddenServices = null;
private CheckBoxPreference prefRequestRoot = null;
+ private Preference prefLocale = null;
private boolean hasRoot = false;
@@ -61,11 +65,16 @@ public class SettingsPreferences
super.onResume();
int REQUEST_ROOT_IDX = 1;
+ int SET_LOCALE_IDX = 3;
+
int GENERAL_GROUP_IDX = 0;
prefRequestRoot = ((CheckBoxPreference)((PreferenceCategory)getPreferenceScreen().getPreference(GENERAL_GROUP_IDX)).getPreference(REQUEST_ROOT_IDX));
prefRequestRoot.setOnPreferenceClickListener(this);
+ prefLocale = (((PreferenceCategory)getPreferenceScreen().getPreference(GENERAL_GROUP_IDX)).getPreference(SET_LOCALE_IDX));
+ prefLocale.setOnPreferenceClickListener(this);
+
prefCBTransProxy = ((CheckBoxPreference)((PreferenceCategory)this.getPreferenceScreen().getPreference(TRANSPROXY_GROUP_IDX)).getPreference(0));
prefcBTransProxyAll = (CheckBoxPreference)((PreferenceCategory)this.getPreferenceScreen().getPreference(TRANSPROXY_GROUP_IDX)).getPreference(1);
prefTransProxyApps = ((PreferenceCategory)this.getPreferenceScreen().getPreference(TRANSPROXY_GROUP_IDX)).getPreference(2);
@@ -155,6 +164,20 @@ public class SettingsPreferences
((PreferenceCategory)this.getPreferenceScreen().getPreference(HIDDEN_SERVICE_PREF_IDX)).getPreference(2).setEnabled(prefHiddenServices.isChecked());
}
+ else if (preference == prefLocale)
+ {
+ SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
+
+ Configuration config = getResources().getConfiguration();
+
+ String lang = settings.getString("pref_default_locale", "");
+
+ Locale locale = new Locale(lang);
+ Locale.setDefault(locale);
+ config.locale = locale;
+ getResources().updateConfiguration(config, getResources().getDisplayMetrics());
+
+ }
else
{
prefcBTransProxyAll.setEnabled(prefCBTransProxy.isChecked());
More information about the tor-commits
mailing list