From b5c96cbb536863c7c41985880812c4ea3728b918 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Thu, 4 May 2017 22:24:18 -0700 Subject: [PATCH] Fix manually switching language to Chinese --- app/src/main/java/com/limelight/AppView.java | 7 +----- app/src/main/java/com/limelight/Game.java | 8 ++---- app/src/main/java/com/limelight/PcView.java | 7 +----- .../preferences/AddComputerManually.java | 7 +----- .../limelight/preferences/StreamSettings.java | 6 +---- .../java/com/limelight/utils/UiHelper.java | 25 +++++++++++++++++++ 6 files changed, 31 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/com/limelight/AppView.java b/app/src/main/java/com/limelight/AppView.java index 9b069b90..989a6e5d 100644 --- a/app/src/main/java/com/limelight/AppView.java +++ b/app/src/main/java/com/limelight/AppView.java @@ -235,12 +235,7 @@ public class AppView extends Activity implements AdapterFragmentCallbacks { shortcutHelper = new ShortcutHelper(this); - String locale = PreferenceConfiguration.readPreferences(this).language; - if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) { - Configuration config = new Configuration(getResources().getConfiguration()); - config.locale = new Locale(locale); - getResources().updateConfiguration(config, getResources().getDisplayMetrics()); - } + UiHelper.setLocale(this); setContentView(R.layout.activity_app_view); diff --git a/app/src/main/java/com/limelight/Game.java b/app/src/main/java/com/limelight/Game.java index e0a4e64f..42e4a049 100644 --- a/app/src/main/java/com/limelight/Game.java +++ b/app/src/main/java/com/limelight/Game.java @@ -26,6 +26,7 @@ import com.limelight.ui.StreamView; import com.limelight.utils.Dialog; import com.limelight.utils.ShortcutHelper; import com.limelight.utils.SpinnerDialog; +import com.limelight.utils.UiHelper; import android.annotation.SuppressLint; import android.app.Activity; @@ -135,12 +136,7 @@ public class Game extends Activity implements SurfaceHolder.Callback, shortcutHelper = new ShortcutHelper(this); - String locale = PreferenceConfiguration.readPreferences(this).language; - if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) { - Configuration config = new Configuration(getResources().getConfiguration()); - config.locale = new Locale(locale); - getResources().updateConfiguration(config, getResources().getDisplayMetrics()); - } + UiHelper.setLocale(this); // We don't want a title bar requestWindowFeature(Window.FEATURE_NO_TITLE); diff --git a/app/src/main/java/com/limelight/PcView.java b/app/src/main/java/com/limelight/PcView.java index 145f0ce0..04d40b8e 100644 --- a/app/src/main/java/com/limelight/PcView.java +++ b/app/src/main/java/com/limelight/PcView.java @@ -154,12 +154,7 @@ public class PcView extends Activity implements AdapterFragmentCallbacks { shortcutHelper = new ShortcutHelper(this); - String locale = PreferenceConfiguration.readPreferences(this).language; - if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) { - Configuration config = new Configuration(getResources().getConfiguration()); - config.locale = new Locale(locale); - getResources().updateConfiguration(config, getResources().getDisplayMetrics()); - } + UiHelper.setLocale(this); // Bind to the computer manager service bindService(new Intent(PcView.this, ComputerManagerService.class), serviceConnection, diff --git a/app/src/main/java/com/limelight/preferences/AddComputerManually.java b/app/src/main/java/com/limelight/preferences/AddComputerManually.java index 8f22aed9..36158bf4 100644 --- a/app/src/main/java/com/limelight/preferences/AddComputerManually.java +++ b/app/src/main/java/com/limelight/preferences/AddComputerManually.java @@ -136,12 +136,7 @@ public class AddComputerManually extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - String locale = PreferenceConfiguration.readPreferences(this).language; - if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) { - Configuration config = new Configuration(getResources().getConfiguration()); - config.locale = new Locale(locale); - getResources().updateConfiguration(config, getResources().getDisplayMetrics()); - } + UiHelper.setLocale(this); setContentView(R.layout.activity_add_computer_manually); diff --git a/app/src/main/java/com/limelight/preferences/StreamSettings.java b/app/src/main/java/com/limelight/preferences/StreamSettings.java index 73bf9070..6bc05380 100644 --- a/app/src/main/java/com/limelight/preferences/StreamSettings.java +++ b/app/src/main/java/com/limelight/preferences/StreamSettings.java @@ -26,11 +26,7 @@ public class StreamSettings extends Activity { previousPrefs = PreferenceConfiguration.readPreferences(this); - if (!previousPrefs.language.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) { - Configuration config = new Configuration(getResources().getConfiguration()); - config.locale = new Locale(previousPrefs.language); - getResources().updateConfiguration(config, getResources().getDisplayMetrics()); - } + UiHelper.setLocale(this); setContentView(R.layout.activity_stream_settings); getFragmentManager().beginTransaction().replace( diff --git a/app/src/main/java/com/limelight/utils/UiHelper.java b/app/src/main/java/com/limelight/utils/UiHelper.java index 32827b4b..201f9e98 100644 --- a/app/src/main/java/com/limelight/utils/UiHelper.java +++ b/app/src/main/java/com/limelight/utils/UiHelper.java @@ -9,6 +9,9 @@ import android.content.res.Configuration; import android.view.View; import com.limelight.R; +import com.limelight.preferences.PreferenceConfiguration; + +import java.util.Locale; public class UiHelper { @@ -16,6 +19,28 @@ public class UiHelper { private static final int TV_VERTICAL_PADDING_DP = 27; private static final int TV_HORIZONTAL_PADDING_DP = 48; + public static void setLocale(Activity activity) + { + String locale = PreferenceConfiguration.readPreferences(activity).language; + if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) { + Configuration config = new Configuration(activity.getResources().getConfiguration()); + + // Some locales include both language and country which must be separated + // before calling the Locale constructor. + if (locale.contains("-")) + { + config.locale = new Locale(locale.substring(0, locale.indexOf('-')), + locale.substring(locale.indexOf('-') + 1)); + } + else + { + config.locale = new Locale(locale); + } + + activity.getResources().updateConfiguration(config, activity.getResources().getDisplayMetrics()); + } + } + public static void notifyNewRootView(Activity activity) { View rootView = activity.findViewById(android.R.id.content);