prep work for dhivehi support
This commit is contained in:
@@ -4,8 +4,11 @@ import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.appcompat.app.AppCompatDelegate
|
||||
import androidx.core.os.LocaleListCompat
|
||||
import androidx.viewpager2.widget.ViewPager2
|
||||
import com.google.android.material.tabs.TabLayoutMediator
|
||||
import sh.sar.basedbank.R
|
||||
import sh.sar.basedbank.databinding.ActivityOnboardingBinding
|
||||
import sh.sar.basedbank.ui.login.LoginActivity
|
||||
|
||||
@@ -23,11 +26,28 @@ class OnboardingActivity : AppCompatActivity() {
|
||||
|
||||
TabLayoutMediator(binding.dotsIndicator, binding.viewPager) { _, _ -> }.attach()
|
||||
|
||||
// Pre-select the chip for the saved language without triggering the listener
|
||||
val savedLang = getSharedPreferences("prefs", MODE_PRIVATE).getString("language", null)
|
||||
binding.languageChipGroup.setOnCheckedStateChangeListener(null)
|
||||
when (savedLang) {
|
||||
"en" -> binding.chipEnglish.isChecked = true
|
||||
"dv" -> binding.chipDhivehi.isChecked = true
|
||||
}
|
||||
binding.languageChipGroup.setOnCheckedStateChangeListener { _, checkedIds ->
|
||||
if (checkedIds.isNotEmpty()) {
|
||||
val lang = if (checkedIds[0] == R.id.chipEnglish) "en" else "dv"
|
||||
selectLanguage(lang)
|
||||
}
|
||||
}
|
||||
|
||||
binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
|
||||
override fun onPageSelected(position: Int) {
|
||||
binding.languageChipGroup.visibility = if (position == 0) View.VISIBLE else View.GONE
|
||||
updateButtons(position, adapter.itemCount)
|
||||
}
|
||||
})
|
||||
// Show chips and set initial button state for page 0
|
||||
binding.languageChipGroup.visibility = View.VISIBLE
|
||||
updateButtons(0, adapter.itemCount)
|
||||
|
||||
binding.btnNext.setOnClickListener {
|
||||
@@ -43,9 +63,19 @@ class OnboardingActivity : AppCompatActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun selectLanguage(lang: String) {
|
||||
getSharedPreferences("prefs", MODE_PRIVATE).edit().putString("language", lang).apply()
|
||||
val locales = LocaleListCompat.forLanguageTags(lang)
|
||||
AppCompatDelegate.setApplicationLocales(locales)
|
||||
// Update buttons immediately in case locale didn't change (no recreation)
|
||||
updateButtons(binding.viewPager.currentItem, binding.viewPager.adapter?.itemCount ?: 3)
|
||||
}
|
||||
|
||||
private fun updateButtons(position: Int, count: Int) {
|
||||
val langSelected = getSharedPreferences("prefs", MODE_PRIVATE).getString("language", null) != null
|
||||
val isLast = position == count - 1
|
||||
binding.btnNext.visibility = if (isLast) View.GONE else View.VISIBLE
|
||||
binding.btnGetStarted.visibility = if (isLast) View.VISIBLE else View.GONE
|
||||
binding.btnNext.isEnabled = position > 0 || langSelected
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user