diff --git a/app/build.gradle b/app/build.gradle
index 35f690a..c404a7b 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -133,4 +133,6 @@ dependencies {
implementation "com.squareup.retrofit2:retrofit:2.9.0"
implementation "com.squareup.retrofit2:converter-gson:2.9.0"
+ implementation "androidx.preference:preference-ktx:1.2.1"
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/hpostesting/data/constant/LanguageManager.kt b/app/src/main/java/com/example/hpostesting/data/constant/LanguageManager.kt
new file mode 100644
index 0000000..85d6a7c
--- /dev/null
+++ b/app/src/main/java/com/example/hpostesting/data/constant/LanguageManager.kt
@@ -0,0 +1,30 @@
+package com.example.hpostesting.data.constant
+
+import android.content.Context
+import android.content.SharedPreferences
+import java.util.Locale
+
+object LanguageManager {
+ private const val LANGUAGE_PREF_KEY = "language_pref"
+
+ fun setLocale(context: Context, languageCode: String) {
+ val locale = Locale(languageCode)
+ Locale.setDefault(locale)
+
+ val resources = context.resources
+ val configuration = resources.configuration
+ configuration.setLocale(locale)
+
+ context.createConfigurationContext(configuration)
+ }
+
+ fun persistLanguagePreference(context: Context, languageCode: String) {
+ val prefs: SharedPreferences = context.getSharedPreferences("AppPrefs", Context.MODE_PRIVATE)
+ prefs.edit().putString(LANGUAGE_PREF_KEY, languageCode).apply()
+ }
+
+ fun getSavedLanguage(context: Context): String {
+ val prefs: SharedPreferences = context.getSharedPreferences("AppPrefs", Context.MODE_PRIVATE)
+ return prefs.getString(LANGUAGE_PREF_KEY, "en") ?: "en"
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt
index a1420c1..3c52ec8 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt
@@ -11,6 +11,7 @@ import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.example.hpostesting.data.DataHolder
import com.example.hpostesting.data.constant.Constants
+import com.example.hpostesting.data.constant.LanguageManager
import com.example.hpostesting.presentation.hemocube.HemocubeActivity
import com.example.hpostesting.presentation.testRight.TestRightActivity
@@ -44,6 +45,12 @@ class KitScanActivity : AppCompatActivity() {
binding.nameEditText.setText(contents)
}
+ override fun attachBaseContext(newBase: Context?) {
+ val languageCode = LanguageManager.getSavedLanguage(newBase!!)
+ LanguageManager.setLocale(newBase, languageCode)
+ super.attachBaseContext(newBase)
+ }
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
diff --git a/app/src/main/java/com/example/hpostesting/presentation/MainActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/MainActivity.kt
index 1381a56..85d5052 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/MainActivity.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/MainActivity.kt
@@ -17,6 +17,7 @@ import androidx.core.content.ContextCompat
import androidx.core.view.get
import com.example.hpostesting.data.DataHolder
import com.example.hpostesting.data.constant.Constants
+import com.example.hpostesting.data.constant.LanguageManager
import com.example.hpostesting.data.model.patient.UserData
import com.example.hpostesting.data.model.test.TestType
import com.google.android.gms.location.*
@@ -44,6 +45,12 @@ class MainActivity : AppCompatActivity() {
}
}
+ override fun attachBaseContext(newBase: Context?) {
+ val languageCode = LanguageManager.getSavedLanguage(newBase!!)
+ LanguageManager.setLocale(newBase, languageCode)
+ super.attachBaseContext(newBase)
+ }
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
diff --git a/app/src/main/java/com/example/hpostesting/presentation/SplashActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/SplashActivity.kt
index 41d77ba..c8e4a3a 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/SplashActivity.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/SplashActivity.kt
@@ -2,6 +2,7 @@ package com.example.hpostesting.presentation
import com.example.hpostesting.presentation.dashboard.DashboardActivity
import android.Manifest
+import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
@@ -14,6 +15,7 @@ import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import com.example.hpostesting.data.DataHolder
+import com.example.hpostesting.data.constant.LanguageManager
import com.example.hpostesting.util.MyUtils
import `in`.sminnovations.hpostesting.R
import `in`.sminnovations.hpostesting.databinding.ActivitySplashBinding
@@ -32,6 +34,12 @@ class SplashActivity : AppCompatActivity() {
private var allPermissionsGranted = false
+ override fun attachBaseContext(newBase: Context?) {
+ val languageCode = LanguageManager.getSavedLanguage(newBase!!)
+ LanguageManager.setLocale(newBase, languageCode)
+ super.attachBaseContext(newBase)
+ }
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySplashBinding.inflate(layoutInflater)
diff --git a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt
index 4f1a692..2b27d63 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt
@@ -21,6 +21,7 @@ import androidx.core.content.ContextCompat
import androidx.core.view.get
import com.example.hpostesting.data.DataHolder
import com.example.hpostesting.data.constant.Constants
+import com.example.hpostesting.data.constant.LanguageManager
import com.example.hpostesting.presentation.hemocube.HemoCubeViewModel
import com.example.hpostesting.presentation.testRight.UsbService
import com.hoho.android.usbserial.driver.UsbSerialDriver
@@ -73,6 +74,12 @@ open class HemocubeBufferCheckActivity : AppCompatActivity() {
}
}
+ override fun attachBaseContext(newBase: Context?) {
+ val languageCode = LanguageManager.getSavedLanguage(newBase!!)
+ LanguageManager.setLocale(newBase, languageCode)
+ super.attachBaseContext(newBase)
+ }
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityHemocubeBinding.inflate(layoutInflater)
diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/DashboardActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/DashboardActivity.kt
index fe96862..1117c9c 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/DashboardActivity.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/DashboardActivity.kt
@@ -1,5 +1,6 @@
package com.example.hpostesting.presentation.dashboard
+import android.content.Context
import android.os.Bundle
import android.view.Menu
import android.widget.Toast
@@ -10,7 +11,7 @@ import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.navigateUp
import androidx.navigation.ui.setupActionBarWithNavController
import androidx.navigation.ui.setupWithNavController
-import com.example.hpostesting.presentation.dashboard.SlideshowSettingsFragment
+import com.example.hpostesting.data.constant.LanguageManager
import com.google.android.material.navigation.NavigationView
import com.google.firebase.appdistribution.FirebaseAppDistribution
import com.google.firebase.appdistribution.FirebaseAppDistributionException
@@ -25,6 +26,12 @@ class DashboardActivity : AppCompatActivity() {
private lateinit var appBarConfiguration: AppBarConfiguration
private lateinit var binding: ActivityDashboardBinding
+ override fun attachBaseContext(newBase: Context?) {
+ val languageCode = LanguageManager.getSavedLanguage(newBase!!)
+ LanguageManager.setLocale(newBase, languageCode)
+ super.attachBaseContext(newBase)
+ }
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt
index d74f22d..f714436 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt
@@ -162,10 +162,10 @@ class HomeFragment : Fragment() {
val dateFormat = SimpleDateFormat("yyyy-MM-dd")
val currentDate = Date()
val formattedDate = dateFormat.format(currentDate)
-// val query = Firebase.firestore.collection("patientData")
-// .whereGreaterThanOrEqualTo("createdAt", formattedDate)
-// .orderBy("createdAt", Query.Direction.DESCENDING)
- val query = Firebase.firestore.collection("patientData").whereEqualTo("testStatus", false)
+ val query = Firebase.firestore.collection("patientData")
+ .whereGreaterThanOrEqualTo("createdAt", formattedDate)
+ .orderBy("createdAt", Query.Direction.DESCENDING)
+// val query = Firebase.firestore.collection("patientData").whereEqualTo("testStatus", false)
query.get().addOnSuccessListener {
if (it.documents.isEmpty()) {
binding.pendingTest.visibility = View.VISIBLE
diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/SlideshowFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/SlideshowFragment.kt
index d8fa656..be2f2ff 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/SlideshowFragment.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/SlideshowFragment.kt
@@ -1,47 +1,47 @@
package com.example.hpostesting.presentation.dashboard
+
+import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import androidx.fragment.app.Fragment
-import androidx.lifecycle.ViewModelProvider
-import com.example.hpostesting.presentation.dashboard.ui.slideshow.SlideshowViewModel
+import android.widget.Toast
+import androidx.preference.ListPreference
+import androidx.preference.Preference
+import androidx.preference.PreferenceFragmentCompat
+import com.example.hpostesting.data.constant.LanguageManager
+import `in`.sminnovations.hpostesting.R
-import `in`.sminnovations.hpostesting.databinding.FragmentSlideshowBinding
+private var isLanguageChanged = false
-class SlideshowFragment : Fragment() {
- private var _binding: FragmentSlideshowBinding? = null
+class SlideshowFragment : PreferenceFragmentCompat() {
+ override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
+ val preferenceScreen = preferenceManager.createPreferenceScreen(requireContext())
- // This property is only valid between onCreateView and
- // onDestroyView.
- private val binding get() = _binding!!
+ val languagePreference = ListPreference(requireContext())
+ languagePreference.key = "language_preference"
+ languagePreference.title = getString(R.string.app_language)
+ languagePreference.summary = getString(R.string.select_language)
+ languagePreference.entries = arrayOf("English", "Kannada", "Hindi")
+ languagePreference.entryValues = arrayOf("en", "kn", "hi")
+ languagePreference.setDefaultValue("en")
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?,
- ): View {
- val slideshowViewModel =
- ViewModelProvider(this).get(SlideshowViewModel::class.java)
+ languagePreference.onPreferenceChangeListener =
+ Preference.OnPreferenceChangeListener { _, newValue ->
+ val languageCode = newValue as String
+ updateLanguage(requireContext(), languageCode)
+ true
+ }
- _binding = FragmentSlideshowBinding.inflate(inflater, container, false)
- val root: View = binding.root
+ preferenceScreen.addPreference(languagePreference)
+ setPreferenceScreen(preferenceScreen)
- val pInfo = requireActivity().packageManager.getPackageInfo(
- requireActivity().packageName, 0
- )
- val version = pInfo.versionName
- binding.textSlideshow.text = version
-
-// val textView: TextView = binding.textSlideshow
-// slideshowViewModel.text.observe(viewLifecycleOwner) {
-// textView.text = it
-// }
- return root
+ if (isLanguageChanged) {
+ Toast.makeText(requireContext(), R.string.language_update, Toast.LENGTH_SHORT).show()
+ }
}
- override fun onDestroyView() {
- super.onDestroyView()
- _binding = null
+ private fun updateLanguage(context: Context, languageCode: String) {
+ LanguageManager.persistLanguagePreference(context, languageCode)
+ LanguageManager.setLocale(context, languageCode)
+ requireActivity().recreate() // Recreate activity to apply language changes
+ isLanguageChanged = true
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsActivity.kt
index df5d356..25b41b4 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsActivity.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsActivity.kt
@@ -21,6 +21,7 @@ import androidx.core.content.ContextCompat
import androidx.core.view.get
import com.example.hpostesting.data.DataHolder
import com.example.hpostesting.data.constant.Constants
+import com.example.hpostesting.data.constant.LanguageManager
import com.example.hpostesting.presentation.hemocube.HemoCubeFragment
import com.example.hpostesting.presentation.hemocube.HemoCubeViewModel
import com.example.hpostesting.presentation.testRight.UsbService
@@ -77,6 +78,12 @@ class DiagnosticsActivity : AppCompatActivity() {
}
}
+ override fun attachBaseContext(newBase: Context?) {
+ val languageCode = LanguageManager.getSavedLanguage(newBase!!)
+ LanguageManager.setLocale(newBase, languageCode)
+ super.attachBaseContext(newBase)
+ }
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityDiagnosticsBinding.inflate(layoutInflater)
diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/DigitalCardActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/DigitalCardActivity.kt
index 95c08d1..6e82bf7 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/DigitalCardActivity.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/DigitalCardActivity.kt
@@ -14,6 +14,7 @@ import android.os.IBinder
import android.view.Menu
import androidx.activity.viewModels
import com.example.hpostesting.data.DataHolder
+import com.example.hpostesting.data.constant.LanguageManager
import com.example.hpostesting.presentation.testRight.UsbService
import com.hoho.android.usbserial.driver.UsbSerialDriver
import `in`.sminnovations.hpostesting.R
@@ -21,8 +22,15 @@ import `in`.sminnovations.hpostesting.databinding.ActivityDigitalCardBinding
import `in`.sminnovations.hpostesting.databinding.ActivityHemocubeBinding
class DigitalCardActivity : AppCompatActivity() {
+
private lateinit var binding: ActivityDigitalCardBinding
+ override fun attachBaseContext(newBase: Context?) {
+ val languageCode = LanguageManager.getSavedLanguage(newBase!!)
+ LanguageManager.setLocale(newBase, languageCode)
+ super.attachBaseContext(newBase)
+ }
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityDigitalCardBinding.inflate(layoutInflater)
diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt
index fcc4110..ca197fe 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt
@@ -21,6 +21,7 @@ import androidx.core.content.ContextCompat
import androidx.core.view.get
import com.example.hpostesting.data.DataHolder
import com.example.hpostesting.data.constant.Constants
+import com.example.hpostesting.data.constant.LanguageManager
import com.example.hpostesting.presentation.testRight.UsbService
import com.hoho.android.usbserial.driver.UsbSerialDriver
import com.hoho.android.usbserial.driver.UsbSerialProber
@@ -72,6 +73,12 @@ open class HemocubeActivity : AppCompatActivity() {
viewModel.isServiceConnected = false
}
}
+ override fun attachBaseContext(newBase: Context?) {
+ val languageCode = LanguageManager.getSavedLanguage(newBase!!)
+ LanguageManager.setLocale(newBase, languageCode)
+ super.attachBaseContext(newBase)
+ }
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
diff --git a/app/src/main/res/layout/fragment_slideshow.xml b/app/src/main/res/layout/fragment_slideshow.xml
index dac927e..5757871 100644
--- a/app/src/main/res/layout/fragment_slideshow.xml
+++ b/app/src/main/res/layout/fragment_slideshow.xml
@@ -1,36 +1,9 @@
-
-
+
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml
index 28cf949..2ef1c6f 100644
--- a/app/src/main/res/values-hi/strings.xml
+++ b/app/src/main/res/values-hi/strings.xml
@@ -255,5 +255,8 @@
सैम्पल रखें
अमान्य
त्रुटि
+ भाषा सफलतापूर्वक अपडेट की गई है
+ अपनी पसंदीदा भाषा का चयन करें
+ ऐप भाषा
\ No newline at end of file
diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-kn/strings.xml
similarity index 98%
rename from app/src/main/res/values-ka/strings.xml
rename to app/src/main/res/values-kn/strings.xml
index 1babc00..b653f26 100644
--- a/app/src/main/res/values-ka/strings.xml
+++ b/app/src/main/res/values-kn/strings.xml
@@ -255,5 +255,8 @@
ನಮೂನೆ ಇಟ್ಟುಕೊಳ್ಳಿ
ಅಮಾನ್ಯ
ದೋಷ
+ ಭಾಷೆ ಯಶಸ್ವಿಯಾಗಿ ನವೀಕರಿಸಲಾಗಿದೆ
+ ನಿಮ್ಮ ಆದರಿತ ಭಾಷೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಿ
+ ಅಪ್ಲಿಕೇಶನ್ ಭಾಷೆ
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index e8ef341..0720acd 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -255,5 +255,8 @@
Place Sample
Invalid
Error
+ Language updated successfully
+ Select your preferred language
+ App Language
\ No newline at end of file