Refactor: Modify LanguageHelper class to simplify switch block

This commit simplifies the LanguageHelper class switch block. The
original switch had 18 or so initial cases, most of which could be
reduced to two general cases. The two general cases have been
impletemented as the default.
This commit is contained in:
Daniel Kaparunakis 2016-09-05 23:24:06 -05:00
parent 22ccb1bcf7
commit d2d8cb597f
4 changed files with 33 additions and 77 deletions

View file

@ -59,7 +59,7 @@
<item>en</item>
<item>bg</item>
<item>de</item>
<item>en-rGB</item>
<item>en_GB</item>
<item>es</item>
<item>fr</item>
<item>iw</item>
@ -70,10 +70,10 @@
<item>nl</item>
<item>pl</item>
<item>pt</item>
<item>pt-rBR</item>
<item>pt_BR</item>
<item>ru</item>
<item>zh</item>
<item>zh-rTW</item>
<item>zh_TW</item>
</string-array>
</resources>

View file

@ -11,38 +11,10 @@ public class LanguageHelper {
private String languageCode = null;
private boolean languageAvailable = false;
public LanguageHelper (String languagePreference) {
switch (languagePreference){
case "en":
locale = new Locale("en");
languageCode = "en";
languageAvailable = true;
break;
case "bg":
locale = new Locale("bg");
languageCode = "bg";
languageAvailable = true;
break;
case "de":
locale = new Locale("de");
languageCode = "de";
languageAvailable = true;
break;
case "en-rGB":
locale = new Locale("en", "GB");
languageCode = "en_GB";
languageAvailable = true;
break;
case "es":
locale = new Locale("es");
languageCode = "es";
languageAvailable = true;
break;
case "fr":
locale = new Locale("fr");
languageCode = "fr";
languageAvailable = true;
break;
public LanguageHelper (String languageSharedPref) {
switch (languageSharedPref){
case "iw":
locale = new Locale("iw");
languageCode = "he";
@ -58,49 +30,19 @@ public class LanguageHelper {
languageCode = "id";
languageAvailable = true;
break;
case "it":
locale = new Locale("it");
languageCode = "it";
languageAvailable = true;
break;
case "ja":
locale = new Locale("ja");
languageCode = "ja";
languageAvailable = true;
break;
case "nl":
locale = new Locale("nl");
languageCode = "nl";
languageAvailable = true;
break;
case "pl":
locale = new Locale("pl");
languageCode = "pl";
languageAvailable = true;
break;
case "pt":
locale = new Locale("pt","PT");
languageCode = "pt";
languageAvailable = true;
break;
case "pt-rBR":
locale = new Locale("pt","BR");
languageCode = "pt_BR";
languageAvailable = true;
break;
case "ru":
locale = new Locale("ru");
languageCode = "ru";
languageAvailable = true;
break;
case "zh":
locale = new Locale("zh");
languageCode = "zh";
languageAvailable = true;
break;
case "zh-rTW":
locale = new Locale("zh","TW");
languageCode = "zh_TW";
default:
if (languageSharedPref.contains("_")) {
String[] languageCodeParts = languageSharedPref.split("_");
locale = new Locale(languageCodeParts[0],languageCodeParts[1]);
} else {
locale = new Locale(languageSharedPref);
}
languageCode = languageSharedPref;
languageAvailable = true;
break;
}

View file

@ -16,6 +16,7 @@ import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
import com.habitrpg.android.habitica.callbacks.MergeUserCallback;
import com.habitrpg.android.habitica.components.AppComponent;
import com.habitrpg.android.habitica.events.commands.UpdateUserCommand;
import com.habitrpg.android.habitica.helpers.LanguageHelper;
import com.habitrpg.android.habitica.ui.fragments.setup.AvatarSetupFragment;
import com.habitrpg.android.habitica.ui.fragments.setup.TaskSetupFragment;
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
@ -151,10 +152,13 @@ public class SetupActivity extends BaseActivity implements View.OnClickListener,
public void onClick(View v) {
if (v == this.nextButton) {
String currentDeviceLanguage = Locale.getDefault().getLanguage();
apiHelper.apiService.registrationLanguage(currentDeviceLanguage)
.compose(apiHelper.configureApiCallObserver())
.subscribe(new MergeUserCallback(this, user), throwable -> {
});
LanguageHelper languageHelper = new LanguageHelper(currentDeviceLanguage);
if (languageHelper.isLanguageAvailable()){
apiHelper.apiService.registrationLanguage(currentDeviceLanguage)
.compose(apiHelper.configureApiCallObserver())
.subscribe(new MergeUserCallback(this, user), throwable -> {
});
}
if (this.pager.getCurrentItem() == 1) {
List<Task> newTasks = this.taskSetupFragment.createSampleTasks();
this.completedSetup = true;

View file

@ -224,6 +224,16 @@ public class PreferencesFragment extends BasePreferencesFragment implements
.compose(apiHelper.configureApiCallObserver())
.subscribe(new MergeUserCallback(activity, user), throwable -> {
});
if (android.os.Build.VERSION.SDK_INT <= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1){
Intent intent = new Intent(getActivity(), MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
} else {
Intent intent = new Intent(getActivity(), MainActivity.class);
this.startActivity(intent);
getActivity().finishAffinity();
}
}
}