Commit 53477f0f authored by topjohnwu's avatar topjohnwu

Improve locale settings

parent 5716218f
...@@ -44,7 +44,7 @@ public class MagiskManager extends Application { ...@@ -44,7 +44,7 @@ public class MagiskManager extends Application {
// Events // Events
public final CallbackEvent magiskHideDone = new CallbackEvent(); public final CallbackEvent magiskHideDone = new CallbackEvent();
public final CallbackEvent reloadMainActivity = new CallbackEvent(); public final CallbackEvent reloadActivity = new CallbackEvent();
public final CallbackEvent moduleLoadDone = new CallbackEvent(); public final CallbackEvent moduleLoadDone = new CallbackEvent();
public final CallbackEvent repoLoadDone = new CallbackEvent(); public final CallbackEvent repoLoadDone = new CallbackEvent();
public final CallbackEvent updateCheckDone = new CallbackEvent(); public final CallbackEvent updateCheckDone = new CallbackEvent();
......
...@@ -116,7 +116,7 @@ public class MainActivity extends Activity ...@@ -116,7 +116,7 @@ public class MainActivity extends Activity
@Override @Override
public CallbackEvent[] getRegisterEvents() { public CallbackEvent[] getRegisterEvents() {
return new CallbackEvent[] { getApplicationContext().reloadMainActivity }; return new CallbackEvent[] { getApplicationContext().reloadActivity };
} }
public void checkHideSection() { public void checkHideSection() {
......
...@@ -25,7 +25,7 @@ import java.util.Locale; ...@@ -25,7 +25,7 @@ import java.util.Locale;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
public class SettingsActivity extends Activity { public class SettingsActivity extends Activity implements CallbackEvent.Listener {
@BindView(R.id.toolbar) Toolbar toolbar; @BindView(R.id.toolbar) Toolbar toolbar;
...@@ -57,6 +57,16 @@ public class SettingsActivity extends Activity { ...@@ -57,6 +57,16 @@ public class SettingsActivity extends Activity {
} }
@Override
public void onTrigger(CallbackEvent event) {
recreate();
}
@Override
public CallbackEvent[] getRegisterEvents() {
return new CallbackEvent[] { getApplicationContext().reloadActivity };
}
public static class SettingsFragment extends PreferenceFragment public static class SettingsFragment extends PreferenceFragment
implements SharedPreferences.OnSharedPreferenceChangeListener, implements SharedPreferences.OnSharedPreferenceChangeListener,
CallbackEvent.Listener { CallbackEvent.Listener {
...@@ -124,10 +134,10 @@ public class SettingsActivity extends Activity { ...@@ -124,10 +134,10 @@ public class SettingsActivity extends Activity {
} }
} }
private ListPreference setLocalePreference(ListPreference lp) { private void setLocalePreference(ListPreference lp) {
if (lp == null) { boolean isNew = lp == null;
if (isNew) {
lp = new ListPreference(getActivity()); lp = new ListPreference(getActivity());
generalCatagory.addPreference(lp);
} }
CharSequence[] entries = new CharSequence[magiskManager.locales.size() + 1]; CharSequence[] entries = new CharSequence[magiskManager.locales.size() + 1];
CharSequence[] entryValues = new CharSequence[magiskManager.locales.size() + 1]; CharSequence[] entryValues = new CharSequence[magiskManager.locales.size() + 1];
...@@ -143,7 +153,9 @@ public class SettingsActivity extends Activity { ...@@ -143,7 +153,9 @@ public class SettingsActivity extends Activity {
lp.setTitle(R.string.language); lp.setTitle(R.string.language);
lp.setKey("locale"); lp.setKey("locale");
lp.setSummary(MagiskManager.locale.getDisplayName(MagiskManager.locale)); lp.setSummary(MagiskManager.locale.getDisplayName(MagiskManager.locale));
return lp; if (isNew) {
generalCatagory.addPreference(lp);
}
} }
@Override @Override
...@@ -170,8 +182,7 @@ public class SettingsActivity extends Activity { ...@@ -170,8 +182,7 @@ public class SettingsActivity extends Activity {
enabled = prefs.getBoolean("dark_theme", false); enabled = prefs.getBoolean("dark_theme", false);
if (magiskManager.isDarkTheme != enabled) { if (magiskManager.isDarkTheme != enabled) {
magiskManager.isDarkTheme = enabled; magiskManager.isDarkTheme = enabled;
magiskManager.reloadMainActivity.trigger(false); magiskManager.reloadActivity.trigger(false);
getActivity().recreate();
} }
break; break;
case "disable": case "disable":
...@@ -232,8 +243,7 @@ public class SettingsActivity extends Activity { ...@@ -232,8 +243,7 @@ public class SettingsActivity extends Activity {
break; break;
case "locale": case "locale":
magiskManager.setLocale(); magiskManager.setLocale();
magiskManager.reloadMainActivity.trigger(false); magiskManager.reloadActivity.trigger(false);
getActivity().recreate();
break; break;
} }
setSummary(); setSummary();
...@@ -256,11 +266,7 @@ public class SettingsActivity extends Activity { ...@@ -256,11 +266,7 @@ public class SettingsActivity extends Activity {
@Override @Override
public void onTrigger(CallbackEvent event) { public void onTrigger(CallbackEvent event) {
ListPreference language = setLocalePreference((ListPreference) findPreference("locale")); setLocalePreference((ListPreference) findPreference("locale"));
language.setOnPreferenceClickListener((pref) -> {
setLocalePreference((ListPreference) pref);
return false;
});
} }
@Override @Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment