Improve locale settings

This commit is contained in:
topjohnwu 2017-07-31 00:44:38 +08:00
parent 5716218f41
commit 53477f0f59
3 changed files with 22 additions and 16 deletions

View File

@ -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();

View File

@ -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() {

View File

@ -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 {
} }
@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 {
} }
} }
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 {
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 {
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 {
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 {
@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