From 46421b1f0c8db52e57e4b39d94e0316e10cc1d74 Mon Sep 17 00:00:00 2001 From: Danish Jamal Date: Tue, 20 Jul 2021 16:40:24 +0530 Subject: [PATCH] Language setting fixed, code reformatted and optimised --- .../com/mifos/mifosxdroid/SettingsFragment.kt | 70 ++++++++++++------- .../java/com/mifos/utils/LanguageHelper.java | 8 ++- 2 files changed, 49 insertions(+), 29 deletions(-) diff --git a/mifosng-android/src/main/java/com/mifos/mifosxdroid/SettingsFragment.kt b/mifosng-android/src/main/java/com/mifos/mifosxdroid/SettingsFragment.kt index 6bfc4ebe4e6..c08059c375c 100644 --- a/mifosng-android/src/main/java/com/mifos/mifosxdroid/SettingsFragment.kt +++ b/mifosng-android/src/main/java/com/mifos/mifosxdroid/SettingsFragment.kt @@ -1,3 +1,5 @@ +@file:Suppress("DEPRECATION") + package com.mifos.mifosxdroid import android.content.Intent @@ -22,6 +24,7 @@ import com.mifos.utils.Constants /** * Created by mayankjindal on 22/07/17. */ +@Suppress("DEPRECATION") class SettingsFragment : PreferenceFragment(), SharedPreferences.OnSharedPreferenceChangeListener { var mEnableSyncSurvey: SwitchPreference? = null private lateinit var languages: Array @@ -39,23 +42,55 @@ class SettingsFragment : PreferenceFragment(), SharedPreferences.OnSharedPrefere override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + setUpPreferences() + + when (preference?.key) { + getString(R.string.password) -> { + // TODO("create changePasswordActivity and implement the logic for password change") + } + getString(R.string.passcode) -> { + activity?.let { + val passCodePreferencesHelper = PasscodePreferencesHelper(activity) + val currPassCode = passCodePreferencesHelper.passCode + passCodePreferencesHelper.savePassCode("") + val intent = Intent(it, PassCodeActivity::class.java).apply { + putExtra(Constants.CURR_PASSWORD, currPassCode) + putExtra(Constants.IS_TO_UPDATE_PASS_CODE, true) + } + preferenceScreen.sharedPreferences.registerOnSharedPreferenceChangeListener(this) + startActivity(intent) + } + } + } + } + + fun setUpPreferences() { addPreferencesFromResource(R.xml.preferences) languages = activity.resources.getStringArray(R.array.language_option) + + initSurveyPreferences() + initLanguagePreferences() + initThemePreferences() + } + + private fun initSurveyPreferences() { mEnableSyncSurvey = findPreference(resources.getString(R.string.sync_survey)) as SwitchPreference - mEnableSyncSurvey!!.onPreferenceChangeListener = OnPreferenceChangeListener { preference, newValue -> + mEnableSyncSurvey!!.onPreferenceChangeListener = OnPreferenceChangeListener { _, newValue -> if (newValue as Boolean) { val syncSurveysDialogFragment = SyncSurveysDialogFragment.newInstance() val fragmentTransaction = fragmentManager.beginTransaction() fragmentTransaction.addToBackStack(FragmentConstants.FRAG_SURVEYS_SYNC) syncSurveysDialogFragment.isCancelable = false syncSurveysDialogFragment.show(fragmentTransaction, - resources.getString(R.string.sync_clients)) + resources.getString(R.string.sync_clients)) } true } + } + private fun initLanguagePreferences() { val langPref = findPreference("language_type") as ListPreference - langPref.onPreferenceChangeListener = OnPreferenceChangeListener {preference, newValue -> + langPref.onPreferenceChangeListener = OnPreferenceChangeListener { _, newValue -> LanguageHelper.setLocale(this.activity, newValue.toString()) startActivity(Intent(activity, activity.javaClass)) preferenceScreen = null @@ -63,34 +98,17 @@ class SettingsFragment : PreferenceFragment(), SharedPreferences.OnSharedPrefere preferenceScreen.sharedPreferences.registerOnSharedPreferenceChangeListener(this) true } + } + private fun initThemePreferences() { val themePreference = findPreference(resources.getString(R.string.mode_key)) as ListPreference - themePreference.onPreferenceChangeListener = OnPreferenceChangeListener { preference, newValue -> + themePreference.onPreferenceChangeListener = OnPreferenceChangeListener { _, newValue -> val themeOption = newValue as String ThemeHelper.applyTheme(themeOption) startActivity(Intent(activity, activity.javaClass)) - Toast.makeText(activity, "Switched to ${themeOption.toString()} Mode", Toast.LENGTH_SHORT).show() + Toast.makeText(activity, "Switched to $themeOption Mode", Toast.LENGTH_SHORT).show() true } - - when (preference?.key) { - getString(R.string.password) -> { - // TODO("create changePasswordActivity and implement the logic for password change") - } - getString(R.string.passcode) -> { - activity?.let { - val passCodePreferencesHelper = PasscodePreferencesHelper(activity) - val currPassCode = passCodePreferencesHelper.passCode - passCodePreferencesHelper.savePassCode("") - val intent = Intent(it, PassCodeActivity::class.java).apply { - putExtra(Constants.CURR_PASSWORD, currPassCode) - putExtra(Constants.IS_TO_UPDATE_PASS_CODE, true) - } - preferenceScreen.sharedPreferences.registerOnSharedPreferenceChangeListener(this) - startActivity(intent) - } - } - } } override fun onPause() { @@ -107,9 +125,7 @@ class SettingsFragment : PreferenceFragment(), SharedPreferences.OnSharedPrefere LanguageHelper.setLocale(this.activity, preference.value) } - interface LanguageCallback { - fun updateNavDrawer() - } + interface LanguageCallback override fun onPreferenceTreeClick(preferenceScreen: PreferenceScreen?, preference: Preference?): Boolean { when (preference?.key) { diff --git a/mifosng-android/src/main/java/com/mifos/utils/LanguageHelper.java b/mifosng-android/src/main/java/com/mifos/utils/LanguageHelper.java index 92dc76c18b8..06de3bded3a 100644 --- a/mifosng-android/src/main/java/com/mifos/utils/LanguageHelper.java +++ b/mifosng-android/src/main/java/com/mifos/utils/LanguageHelper.java @@ -43,13 +43,17 @@ private static String getPersistedData(Context context, String defaultLanguage) @TargetApi(Build.VERSION_CODES.N) private static Context updateResources(Context context, String language) { - Locale locale = new Locale(language); + Locale locale = new Locale(language.toLowerCase()); Locale.setDefault(locale); - Configuration configuration = context.getResources().getConfiguration(); + Resources resources = context.getResources(); + Configuration configuration = resources.getConfiguration(); + configuration.setLocale(locale); configuration.setLayoutDirection(locale); + resources.updateConfiguration(configuration, resources.getDisplayMetrics()); + return context.createConfigurationContext(configuration); }