prep work for dhivehi support

This commit is contained in:
2026-05-12 04:32:40 +05:00
parent 076a58359a
commit 7209e9dca0
8 changed files with 134 additions and 21 deletions

View File

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