Skip to content

Commit

Permalink
Language setting fixed, code reformatted and optimised
Browse files Browse the repository at this point in the history
  • Loading branch information
danishjamal104 committed Jul 20, 2021
1 parent dc987f2 commit 46421b1
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 29 deletions.
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
@file:Suppress("DEPRECATION")

package com.mifos.mifosxdroid

import android.content.Intent
Expand All @@ -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<String>
Expand All @@ -39,58 +42,73 @@ 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
addPreferencesFromResource(R.xml.preferences)
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() {
Expand All @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

Expand Down

0 comments on commit 46421b1

Please sign in to comment.