Compare commits
1 Commits
dev
...
dev-bottom
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3c0e9bf067 |
@@ -57,6 +57,7 @@ android {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation "com.google.dagger:hilt-android:2.46"
|
implementation "com.google.dagger:hilt-android:2.46"
|
||||||
|
implementation 'androidx.fragment:fragment:1.6.2'
|
||||||
kapt "com.google.dagger:hilt-android-compiler:2.46"
|
kapt "com.google.dagger:hilt-android-compiler:2.46"
|
||||||
implementation 'com.google.dagger:hilt-android:2.46'
|
implementation 'com.google.dagger:hilt-android:2.46'
|
||||||
kapt 'com.google.dagger:hilt-android-compiler:2.46'
|
kapt 'com.google.dagger:hilt-android-compiler:2.46'
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
package com.example.hpostesting.data.constant
|
|
||||||
|
|
||||||
enum class HemoCubeCommands(val command: String) {
|
|
||||||
startBuffer("B\r"),
|
|
||||||
AUTO_DAC_COMMAND("C\r"),
|
|
||||||
runDiagnostics("D\r"),
|
|
||||||
startSample("S\r"),
|
|
||||||
PRINT_COMMAND("P\r"),
|
|
||||||
getDeviceId("I\r"),
|
|
||||||
FIRST_GAIN_COMMAND("T\r"),
|
|
||||||
SECOND_GAIN_COMMAND("U\r"),
|
|
||||||
THIRD_GAIN_COMMAND("V\r"),
|
|
||||||
FORTH_GAIN_COMMAND("W\r"),
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.example.hpostesting.data.constant
|
package com.smi.counselling.data.constant
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
package com.example.hpostesting.data.constant
|
|
||||||
|
|
||||||
enum class TestRightCommands(val command: String) {
|
|
||||||
led2Set50("led2 50\r"),
|
|
||||||
led2Set100("led2 100\r"),
|
|
||||||
read("read\r"),
|
|
||||||
autoset("autoset\r"),
|
|
||||||
run("run\r"),
|
|
||||||
printInRange("print 239 339\r"),
|
|
||||||
printAll("print\r"),
|
|
||||||
testByEnter("\n\r")
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
package com.example.hpostesting.data.dao
|
|
||||||
|
|
||||||
import androidx.lifecycle.LiveData
|
|
||||||
import androidx.room.Dao
|
|
||||||
import androidx.room.Insert
|
|
||||||
import androidx.room.OnConflictStrategy
|
|
||||||
import androidx.room.Query
|
|
||||||
import com.example.hpostesting.data.model.patient.DeviceData
|
|
||||||
import com.example.hpostesting.data.model.patient.HemoCubeTestData
|
|
||||||
import com.example.hpostesting.data.model.patient.UserData
|
|
||||||
@Dao
|
|
||||||
interface DeviceDao {
|
|
||||||
@Query("SELECT * from device_table")
|
|
||||||
fun getAll(): LiveData<List<HemoCubeTestData>>
|
|
||||||
|
|
||||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
|
||||||
suspend fun insertAll(deviceData: DeviceData)
|
|
||||||
|
|
||||||
@Query("SELECT * FROM device_table WHERE deviceId = :id")
|
|
||||||
suspend fun getUserByID(id: String): HemoCubeTestData
|
|
||||||
|
|
||||||
@Query("DELETE FROM device_table WHERE deviceId = :id")
|
|
||||||
suspend fun deleteById(id: String)
|
|
||||||
}
|
|
||||||
@@ -3,9 +3,11 @@ package com.smi.counselling.data.dashboard
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.navigation.ui.AppBarConfiguration
|
import androidx.navigation.ui.AppBarConfiguration
|
||||||
import com.example.hpostesting.data.constant.LanguageManager
|
import com.google.android.material.bottomnavigation.BottomNavigationView
|
||||||
import com.smi.counselling.R
|
import com.smi.counselling.R
|
||||||
|
import com.smi.counselling.data.constant.LanguageManager
|
||||||
import com.smi.counselling.databinding.ActivityDashboardBinding
|
import com.smi.counselling.databinding.ActivityDashboardBinding
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
|
|
||||||
@@ -23,13 +25,34 @@ class DashboardActivity : AppCompatActivity() {
|
|||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
binding = ActivityDashboardBinding.inflate(layoutInflater)
|
binding = ActivityDashboardBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
moveToNext()
|
setSupportActionBar(binding.appBarDashboard.toolbar)
|
||||||
|
// Load the default fragment (e.g., HomeFragment)
|
||||||
|
loadFragment(HomeFragment())
|
||||||
|
|
||||||
|
// Set up the BottomNavigationView
|
||||||
|
val bottomNavigationView: BottomNavigationView = findViewById(R.id.bottomNavigationView)
|
||||||
|
bottomNavigationView.setOnNavigationItemSelectedListener {
|
||||||
|
when (it.itemId) {
|
||||||
|
R.id.navigation_home -> loadFragment(HomeFragment())
|
||||||
|
R.id.navigation_digital_card -> loadFragment(DigitalCardFragment())
|
||||||
|
R.id.navigation_settings -> loadFragment(Settings())
|
||||||
|
}
|
||||||
|
true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun loadFragment(fragment: Fragment) {
|
||||||
|
// Check if the fragment is an instance of Settings
|
||||||
|
if (fragment is Settings) {
|
||||||
|
// Hide the toolbar
|
||||||
|
supportActionBar?.hide()
|
||||||
|
} else {
|
||||||
|
// Show the toolbar
|
||||||
|
supportActionBar?.show()
|
||||||
|
}
|
||||||
|
|
||||||
private fun moveToNext() {
|
supportFragmentManager.beginTransaction()
|
||||||
if (supportFragmentManager.isDestroyed) return
|
.replace(R.id.fragmentContainer, fragment)
|
||||||
supportFragmentManager.beginTransaction().replace(binding.fghemocube.id, HomeFragment())
|
|
||||||
.commit()
|
.commit()
|
||||||
}
|
}
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package com.smi.counselling.data.dashboard
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import com.example.hpostesting.data.constant.LanguageManager
|
import com.smi.counselling.data.constant.LanguageManager
|
||||||
import com.smi.counselling.databinding.ActivityDigitalCardBinding
|
import com.smi.counselling.databinding.ActivityDigitalCardBinding
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,9 @@ import android.view.LayoutInflater
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.ArrayAdapter
|
import android.widget.ArrayAdapter
|
||||||
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.fragment.app.activityViewModels
|
import androidx.fragment.app.activityViewModels
|
||||||
|
import androidx.lifecycle.LiveData
|
||||||
import com.example.hpostesting.data.model.patient.HemoCubeTestData
|
import com.example.hpostesting.data.model.patient.HemoCubeTestData
|
||||||
import com.example.hpostesting.data.model.patient.toHemoCubeTestData
|
import com.example.hpostesting.data.model.patient.toHemoCubeTestData
|
||||||
import com.google.firebase.crashlytics.ktx.crashlytics
|
import com.google.firebase.crashlytics.ktx.crashlytics
|
||||||
@@ -20,6 +22,7 @@ import com.google.firebase.firestore.ktx.firestore
|
|||||||
import com.google.firebase.ktx.Firebase
|
import com.google.firebase.ktx.Firebase
|
||||||
import com.smi.counselling.R
|
import com.smi.counselling.R
|
||||||
import com.smi.counselling.data.DataHolder
|
import com.smi.counselling.data.DataHolder
|
||||||
|
import com.smi.counselling.data.NetworkStatusLiveData
|
||||||
import com.smi.counselling.databinding.FragmentDigitalCardBinding
|
import com.smi.counselling.databinding.FragmentDigitalCardBinding
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
@@ -30,31 +33,30 @@ import java.util.Locale
|
|||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class DigitalCardFragment : Fragment() {
|
class DigitalCardFragment : Fragment() {
|
||||||
private lateinit var binding: FragmentDigitalCardBinding
|
private lateinit var binding: FragmentDigitalCardBinding
|
||||||
private val hemoCubeViewModel: HomeViewModel by activityViewModels()
|
|
||||||
private lateinit var sharedPreferences: SharedPreferences
|
private lateinit var sharedPreferences: SharedPreferences
|
||||||
private val testDetails = DataHolder.selectedTest?.toHemoCubeTestData()
|
private lateinit var _networkStatusLiveData: NetworkStatusLiveData
|
||||||
|
private val networkStatusLiveData: LiveData<Boolean>
|
||||||
|
get() = _networkStatusLiveData
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?,
|
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?,
|
||||||
): View {
|
): View {
|
||||||
binding = FragmentDigitalCardBinding.inflate(inflater, container, false)
|
binding = FragmentDigitalCardBinding.inflate(inflater, container, false)
|
||||||
sharedPreferences =
|
sharedPreferences =
|
||||||
requireContext().getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE)
|
requireContext().getSharedPreferences("COUNSELLING", Context.MODE_PRIVATE)
|
||||||
return binding.root
|
return binding.root
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
|
|
||||||
initViews()
|
initViews()
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("SetTextI18n")
|
@SuppressLint("SetTextI18n")
|
||||||
private fun initViews() {
|
private fun initViews() {
|
||||||
|
|
||||||
|
_networkStatusLiveData = context?.let { NetworkStatusLiveData(it) } ?: return
|
||||||
hemoCubeViewModel.networkStatusLiveData.observe(viewLifecycleOwner) { isConnected ->
|
networkStatusLiveData.observe(viewLifecycleOwner) { isConnected ->
|
||||||
if (isConnected) {
|
if (isConnected) {
|
||||||
loadUserData()
|
loadUserData()
|
||||||
|
|
||||||
@@ -180,5 +182,9 @@ class DigitalCardFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onResume() {
|
||||||
|
super.onResume()
|
||||||
|
(activity as? AppCompatActivity)?.supportActionBar?.title = "Digital Card Fragment"
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -14,8 +14,10 @@ import android.view.ViewGroup
|
|||||||
import android.widget.ArrayAdapter
|
import android.widget.ArrayAdapter
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.activityViewModels
|
import androidx.fragment.app.activityViewModels
|
||||||
|
import androidx.lifecycle.LiveData
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.example.hpostesting.data.model.patient.HemoCubeTestData
|
import com.example.hpostesting.data.model.patient.HemoCubeTestData
|
||||||
import com.example.hpostesting.data.model.patient.toHemoCubeTestData
|
import com.example.hpostesting.data.model.patient.toHemoCubeTestData
|
||||||
@@ -24,6 +26,7 @@ import com.google.firebase.firestore.ktx.firestore
|
|||||||
import com.google.firebase.ktx.Firebase
|
import com.google.firebase.ktx.Firebase
|
||||||
import com.smi.counselling.R
|
import com.smi.counselling.R
|
||||||
import com.smi.counselling.data.DataHolder
|
import com.smi.counselling.data.DataHolder
|
||||||
|
import com.smi.counselling.data.NetworkStatusLiveData
|
||||||
import com.smi.counselling.databinding.FragmentHomeBinding
|
import com.smi.counselling.databinding.FragmentHomeBinding
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
@@ -32,11 +35,13 @@ data class ClassificationResult(val imageResource: Int, val text: String,val ima
|
|||||||
class HomeFragment : Fragment() {
|
class HomeFragment : Fragment() {
|
||||||
private var _binding: FragmentHomeBinding? = null
|
private var _binding: FragmentHomeBinding? = null
|
||||||
private val binding get() = _binding!!
|
private val binding get() = _binding!!
|
||||||
private val hemoCubeViewModel: HomeViewModel by activityViewModels()
|
|
||||||
private lateinit var sharedPreference: SharedPreferences
|
private lateinit var sharedPreference: SharedPreferences
|
||||||
private var maleresult: String = ""
|
private var maleresult: String = ""
|
||||||
private var femaleresult: String = ""
|
private var femaleresult: String = ""
|
||||||
private val testDetails = DataHolder.selectedTest?.toHemoCubeTestData()
|
private val testDetails = DataHolder.selectedTest?.toHemoCubeTestData()
|
||||||
|
private lateinit var _networkStatusLiveData: NetworkStatusLiveData
|
||||||
|
private val networkStatusLiveData: LiveData<Boolean>
|
||||||
|
get() = _networkStatusLiveData
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater, container: ViewGroup?,
|
inflater: LayoutInflater, container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
@@ -59,27 +64,15 @@ class HomeFragment : Fragment() {
|
|||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
_networkStatusLiveData = context?.let { NetworkStatusLiveData(it) } ?: return
|
||||||
|
|
||||||
|
networkStatusLiveData.observe(viewLifecycleOwner) { isConnected ->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
hemoCubeViewModel.networkStatusLiveData.observe(viewLifecycleOwner) { isConnected ->
|
|
||||||
if (isConnected) {
|
if (isConnected) {
|
||||||
loadUserData()
|
loadUserData()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
binding.btnDigital.setOnClickListener {
|
|
||||||
val i = Intent(
|
|
||||||
requireContext().applicationContext, DigitalCardActivity::class.java
|
|
||||||
)
|
|
||||||
startActivity(i)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
activity?.runOnUiThread {
|
activity?.runOnUiThread {
|
||||||
binding.btnSubmit.setOnClickListener {
|
binding.btnSubmit.setOnClickListener {
|
||||||
when {
|
when {
|
||||||
@@ -368,16 +361,9 @@ class HomeFragment : Fragment() {
|
|||||||
_binding = null
|
_binding = null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onResume() {
|
||||||
private fun setImageResource(context: Context, imageResource: Int) {
|
super.onResume()
|
||||||
when (context) {
|
(activity as? AppCompatActivity)?.supportActionBar?.title = "Counselling App"
|
||||||
is Fragment -> {
|
|
||||||
val imageView = context.view?.findViewById<ImageView>(R.id.resultImage)
|
|
||||||
imageView?.setImageResource(imageResource)
|
|
||||||
}
|
|
||||||
else -> throw IllegalArgumentException("Unsupported context type")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,19 +3,12 @@ package com.smi.counselling.data.dashboard
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
import androidx.lifecycle.MutableLiveData
|
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
|
||||||
import com.example.hpostesting.data.dao.HemoCubeDao
|
|
||||||
import com.example.hpostesting.data.dao.UserDao
|
|
||||||
import com.example.hpostesting.data.model.patient.DeviceData
|
|
||||||
import com.smi.counselling.data.NetworkStatusLiveData
|
import com.smi.counselling.data.NetworkStatusLiveData
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class HomeViewModel @Inject constructor(
|
class HomeViewModel @Inject constructor(
|
||||||
private val hemoCubeDao: HemoCubeDao,
|
|
||||||
private val userdao: UserDao,
|
|
||||||
context: Context,
|
context: Context,
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
private val sharedPreference: SharedPreferences =
|
private val sharedPreference: SharedPreferences =
|
||||||
@@ -23,11 +16,6 @@ class HomeViewModel @Inject constructor(
|
|||||||
|
|
||||||
// Get the device ID of the device you want to retrieve data for (e.g., the first device in the list)
|
// Get the device ID of the device you want to retrieve data for (e.g., the first device in the list)
|
||||||
|
|
||||||
private val _networkStatusLiveData = NetworkStatusLiveData(context)
|
|
||||||
val allUserData = hemoCubeDao.getAll()
|
|
||||||
val deviceData = MutableLiveData<DeviceData?>()
|
|
||||||
val networkStatusLiveData: LiveData<Boolean>
|
|
||||||
get() = _networkStatusLiveData
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,83 @@
|
|||||||
|
package com.smi.counselling.data.dashboard
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.pm.PackageManager
|
||||||
|
import android.os.Bundle
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import android.widget.Toast
|
||||||
|
import android.widget.Toolbar
|
||||||
|
import androidx.preference.ListPreference
|
||||||
|
import androidx.preference.Preference
|
||||||
|
import androidx.preference.PreferenceFragmentCompat
|
||||||
|
import com.smi.counselling.R
|
||||||
|
import com.smi.counselling.data.constant.LanguageManager
|
||||||
|
|
||||||
|
private var isLanguageChanged = false
|
||||||
|
|
||||||
|
class Settings : PreferenceFragmentCompat() {
|
||||||
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
|
val preferenceScreen = preferenceManager.createPreferenceScreen(requireContext())
|
||||||
|
|
||||||
|
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")
|
||||||
|
|
||||||
|
languagePreference.onPreferenceChangeListener =
|
||||||
|
Preference.OnPreferenceChangeListener { _, newValue ->
|
||||||
|
val languageCode = newValue as String
|
||||||
|
updateLanguage(requireContext(), languageCode)
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
preferenceScreen.addPreference(languagePreference)
|
||||||
|
setPreferenceScreen(preferenceScreen)
|
||||||
|
|
||||||
|
// App Version Preference
|
||||||
|
val appVersionPreference = Preference(requireContext())
|
||||||
|
appVersionPreference.title = "App Version"
|
||||||
|
appVersionPreference.summary = getAppVersion(requireContext()) + " [ " + getAppEnvironment(requireContext()) + " ]"
|
||||||
|
|
||||||
|
preferenceScreen.addPreference(languagePreference)
|
||||||
|
preferenceScreen.addPreference(appVersionPreference)
|
||||||
|
setPreferenceScreen(preferenceScreen)
|
||||||
|
|
||||||
|
if (isLanguageChanged) {
|
||||||
|
Toast.makeText(requireContext(), R.string.language_update, Toast.LENGTH_SHORT).show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getAppVersion(context: Context): String {
|
||||||
|
return try {
|
||||||
|
val pInfo = context.packageManager.getPackageInfo(context.packageName, 0)
|
||||||
|
pInfo.versionName
|
||||||
|
} catch (e: PackageManager.NameNotFoundException) {
|
||||||
|
"N/A"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getAppEnvironment(context: Context): String {
|
||||||
|
return try {
|
||||||
|
val pInfo = context.packageManager.getPackageInfo(context.packageName, 0)
|
||||||
|
pInfo.packageName.substringAfterLast('.')
|
||||||
|
} catch (e: PackageManager.NameNotFoundException) {
|
||||||
|
"N/A"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
5
app/src/main/res/drawable/digitalcard.xml
Normal file
5
app/src/main/res/drawable/digitalcard.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<vector android:height="24dp" android:tint="#000000"
|
||||||
|
android:viewportHeight="24" android:viewportWidth="24"
|
||||||
|
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<path android:fillColor="@android:color/white" android:pathData="M20,4H4C2.89,4 2.01,4.89 2.01,6L2,18c0,1.11 0.89,2 2,2h10v-2H4v-6h18V6C22,4.89 21.11,4 20,4zM20,8H4V6h16V8zM24,17v2h-3v3h-2v-3h-3v-2h3v-3h2v3H24z"/>
|
||||||
|
</vector>
|
||||||
6
app/src/main/res/drawable/home.xml
Normal file
6
app/src/main/res/drawable/home.xml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<vector android:height="24dp" android:tint="#000000"
|
||||||
|
android:viewportHeight="24" android:viewportWidth="24"
|
||||||
|
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<path android:fillColor="@android:color/white" android:pathData="M18,11c0.7,0 1.37,0.1 2,0.29V9l-8,-6L4,9v12h7.68C11.25,20.09 11,19.08 11,18C11,14.13 14.13,11 18,11z"/>
|
||||||
|
<path android:fillColor="@android:color/white" android:pathData="M18,13c-2.76,0 -5,2.24 -5,5s2.24,5 5,5s5,-2.24 5,-5S20.76,13 18,13zM21,18.5h-2.5V21h-1v-2.5H15v-1h2.5V15h1v2.5H21V18.5z"/>
|
||||||
|
</vector>
|
||||||
5
app/src/main/res/drawable/settings.xml
Normal file
5
app/src/main/res/drawable/settings.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<vector android:height="24dp" android:tint="#000000"
|
||||||
|
android:viewportHeight="24" android:viewportWidth="24"
|
||||||
|
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<path android:fillColor="@android:color/white" android:pathData="M19.14,12.94c0.04,-0.3 0.06,-0.61 0.06,-0.94c0,-0.32 -0.02,-0.64 -0.07,-0.94l2.03,-1.58c0.18,-0.14 0.23,-0.41 0.12,-0.61l-1.92,-3.32c-0.12,-0.22 -0.37,-0.29 -0.59,-0.22l-2.39,0.96c-0.5,-0.38 -1.03,-0.7 -1.62,-0.94L14.4,2.81c-0.04,-0.24 -0.24,-0.41 -0.48,-0.41h-3.84c-0.24,0 -0.43,0.17 -0.47,0.41L9.25,5.35C8.66,5.59 8.12,5.92 7.63,6.29L5.24,5.33c-0.22,-0.08 -0.47,0 -0.59,0.22L2.74,8.87C2.62,9.08 2.66,9.34 2.86,9.48l2.03,1.58C4.84,11.36 4.8,11.69 4.8,12s0.02,0.64 0.07,0.94l-2.03,1.58c-0.18,0.14 -0.23,0.41 -0.12,0.61l1.92,3.32c0.12,0.22 0.37,0.29 0.59,0.22l2.39,-0.96c0.5,0.38 1.03,0.7 1.62,0.94l0.36,2.54c0.05,0.24 0.24,0.41 0.48,0.41h3.84c0.24,0 0.44,-0.17 0.47,-0.41l0.36,-2.54c0.59,-0.24 1.13,-0.56 1.62,-0.94l2.39,0.96c0.22,0.08 0.47,0 0.59,-0.22l1.92,-3.32c0.12,-0.22 0.07,-0.47 -0.12,-0.61L19.14,12.94zM12,15.6c-1.98,0 -3.6,-1.62 -3.6,-3.6s1.62,-3.6 3.6,-3.6s3.6,1.62 3.6,3.6S13.98,15.6 12,15.6z"/>
|
||||||
|
</vector>
|
||||||
@@ -3,11 +3,20 @@
|
|||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/cl_parent"
|
android:id="@+id/cl_parent"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/app_bar_dashboard"
|
||||||
|
layout="@layout/app_bar_dashboard"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
android:id="@+id/my_toolbar"
|
android:id="@+id/my_toolbar"
|
||||||
@@ -21,17 +30,25 @@
|
|||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<!-- Use FrameLayout as the direct container for fragments -->
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/fghemocube"
|
android:id="@+id/fragmentContainer"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
app:layout_constraintTop_toBottomOf="@id/my_toolbar"
|
app:layout_constraintTop_toBottomOf="@id/my_toolbar"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toTopOf="@id/bottomNavigationView"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent">
|
app:layout_constraintEnd_toEndOf="parent">
|
||||||
|
|
||||||
<!-- NavHostFragment for navigation -->
|
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
|
<com.google.android.material.bottomnavigation.BottomNavigationView
|
||||||
|
android:id="@+id/bottomNavigationView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentBottom="true"
|
||||||
|
app:menu="@menu/bottomnavigationview"
|
||||||
|
tools:ignore="MissingConstraints"
|
||||||
|
style="@style/BottomNavigationViewStyle"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</layout>
|
</layout>
|
||||||
|
|||||||
34
app/src/main/res/layout/app_bar_dashboard.xml
Normal file
34
app/src/main/res/layout/app_bar_dashboard.xml
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
tools:context=".data.dashboard.DashboardActivity">
|
||||||
|
|
||||||
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:theme="@style/Theme.HPOS.AppBarOverlay">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.Toolbar
|
||||||
|
android:id="@+id/toolbar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="?attr/actionBarSize"
|
||||||
|
android:background="@color/blue_app"
|
||||||
|
app:popupTheme="@style/Theme.HPOS.PopupOverlay" />
|
||||||
|
|
||||||
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- <com.google.android.material.floatingactionbutton.FloatingActionButton-->
|
||||||
|
<!-- android:id="@+id/fab"-->
|
||||||
|
<!-- android:layout_width="wrap_content"-->
|
||||||
|
<!-- android:layout_height="wrap_content"-->
|
||||||
|
<!-- android:layout_gravity="bottom|end"-->
|
||||||
|
<!-- android:layout_marginEnd="@dimen/fab_margin"-->
|
||||||
|
<!-- android:layout_marginBottom="16dp"-->
|
||||||
|
<!-- app:srcCompat="@android:drawable/ic_dialog_email" />-->
|
||||||
|
|
||||||
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginHorizontal="24dp"
|
android:layout_marginHorizontal="24dp"
|
||||||
android:layout_marginTop="24dp"
|
android:layout_marginTop="60dp"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
android:id="@+id/userCard"
|
android:id="@+id/userCard"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="350dp"
|
android:layout_height="350dp"
|
||||||
android:layout_marginTop="24dp"
|
android:layout_marginTop="70dp"
|
||||||
app:cardBackgroundColor="#C0C0C0"
|
app:cardBackgroundColor="#C0C0C0"
|
||||||
app:cardCornerRadius="25dp"
|
app:cardCornerRadius="25dp"
|
||||||
app:cardElevation="0dp"
|
app:cardElevation="0dp"
|
||||||
|
|||||||
@@ -5,20 +5,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/counsellingcard"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="40dp"
|
|
||||||
android:layout_marginStart="16dp"
|
|
||||||
android:layout_marginTop="10dp"
|
|
||||||
android:gravity="center"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:textColor="@color/blue_app"
|
|
||||||
android:textSize="18sp"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toEndOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
android:text="Counselling Card" />
|
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
android:id="@+id/abhaid"
|
android:id="@+id/abhaid"
|
||||||
@@ -26,17 +13,16 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginHorizontal="24dp"
|
android:layout_marginHorizontal="24dp"
|
||||||
android:layout_marginTop="40dp"
|
android:layout_marginTop="60dp"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
app:layout_constraintTop_toBottomOf="@id/counsellingcard">
|
|
||||||
|
|
||||||
<AutoCompleteTextView
|
<AutoCompleteTextView
|
||||||
android:id="@+id/abhaidtext"
|
android:id="@+id/abhaidtext"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:hint="Select Abha Id for Male"
|
android:hint="@string/select_abha_card_male"
|
||||||
android:inputType="text"
|
android:inputType="text"
|
||||||
android:labelFor="@id/abhaid" />
|
android:labelFor="@id/abhaid" />
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
@@ -57,7 +43,7 @@
|
|||||||
android:id="@+id/abhaidtextfemale"
|
android:id="@+id/abhaidtextfemale"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:hint="Select Abha Id for Female"
|
android:hint="@string/select_abha_card_female"
|
||||||
android:inputType="text"
|
android:inputType="text"
|
||||||
android:labelFor="@id/abhaid" />
|
android:labelFor="@id/abhaid" />
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
@@ -257,19 +243,4 @@
|
|||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/btn_submit"
|
app:layout_constraintTop_toBottomOf="@id/btn_submit"
|
||||||
app:srcCompat="@drawable/sicklecell_6" />
|
app:srcCompat="@drawable/sicklecell_6" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/btn_digital"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginHorizontal="16dp"
|
|
||||||
android:layout_marginTop="24dp"
|
|
||||||
android:clickable="false"
|
|
||||||
android:text="view Digital Card"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent" />
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
24
app/src/main/res/layout/language_spinner_preference.xml
Normal file
24
app/src/main/res/layout/language_spinner_preference.xml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<!-- language_spinner_preference.xml -->
|
||||||
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<!-- Select Language -->
|
||||||
|
<TextView
|
||||||
|
android:layout_marginTop="0dp"
|
||||||
|
android:id="@+id/textSelectLanguage"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Select Language"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:textSize="18sp"/>
|
||||||
|
|
||||||
|
<!-- Language Spinner -->
|
||||||
|
<Spinner
|
||||||
|
android:id="@+id/languageSpinner"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8dp"/>
|
||||||
|
</LinearLayout>
|
||||||
25
app/src/main/res/layout/preference_category_with_margin.xml
Normal file
25
app/src/main/res/layout/preference_category_with_margin.xml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- res/layout/preference_category_with_margin.xml -->
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@android:id/title"
|
||||||
|
style="?android:attr/preferenceCategoryStyle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingTop="16dp"
|
||||||
|
android:textColor="?android:attr/textColorSecondary"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@android:id/widget_frame"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingStart="@dimen/top_margin"
|
||||||
|
android:paddingEnd="@dimen/top_margin" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
17
app/src/main/res/menu/bottomnavigationview.xml
Normal file
17
app/src/main/res/menu/bottomnavigationview.xml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item
|
||||||
|
android:id="@+id/navigation_home"
|
||||||
|
android:title="Home"
|
||||||
|
android:icon="@drawable/home" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/navigation_digital_card"
|
||||||
|
android:title="Digital Card"
|
||||||
|
android:icon="@drawable/digitalcard" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/navigation_settings"
|
||||||
|
android:title="Settings"
|
||||||
|
android:icon="@drawable/settings" />
|
||||||
|
</menu>
|
||||||
@@ -1,14 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
|
||||||
|
|
||||||
<item
|
</menu>
|
||||||
android:id="@+id/action_usb"
|
|
||||||
android:checkable="false"
|
|
||||||
android:enabled="true"
|
|
||||||
android:title="@string/usb_connection"
|
|
||||||
android:visible="true"
|
|
||||||
app:showAsAction="always" />
|
|
||||||
|
|
||||||
|
|
||||||
</menu>
|
|
||||||
|
|||||||
@@ -13,6 +13,10 @@
|
|||||||
<color name="blue_app_dark">#005db3</color>
|
<color name="blue_app_dark">#005db3</color>
|
||||||
<color name="blue_app_light">#e5f3ff</color>
|
<color name="blue_app_light">#e5f3ff</color>
|
||||||
|
|
||||||
|
<color name="colorPrimary">#2196F3</color> <!-- Replace with your desired color -->
|
||||||
|
<color name="colorPrimaryDark">#1976D2</color> <!-- Replace with a slightly darker shade of colorPrimary -->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<color name="primary">#4daaff</color>
|
<color name="primary">#4daaff</color>
|
||||||
<color name="primary_dark">#005db3</color>
|
<color name="primary_dark">#005db3</color>
|
||||||
|
|||||||
4
app/src/main/res/values/dimens.xml
Normal file
4
app/src/main/res/values/dimens.xml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<dimen name="top_margin">60dp</dimen>
|
||||||
|
</resources>
|
||||||
@@ -128,6 +128,9 @@
|
|||||||
<string name="patient_details">Patient Details</string>
|
<string name="patient_details">Patient Details</string>
|
||||||
<string name="or">OR</string>
|
<string name="or">OR</string>
|
||||||
<string name="scan_abha_card">Scan ABHA\nCard</string>
|
<string name="scan_abha_card">Scan ABHA\nCard</string>
|
||||||
|
<string name="select_abha_card_male">Select Abha Id for Male</string>
|
||||||
|
<string name="select_abha_card_female">Select Abha Id for Female</string>
|
||||||
|
|
||||||
<string name="list_of_patients">List Of Patients</string>
|
<string name="list_of_patients">List Of Patients</string>
|
||||||
<string name="no_patient_records_found_to_test_please_add_one_from_below">No Patient Records \nFound to Test. \nPlease Add one from below.</string>
|
<string name="no_patient_records_found_to_test_please_add_one_from_below">No Patient Records \nFound to Test. \nPlease Add one from below.</string>
|
||||||
<string name="add">Add</string>
|
<string name="add">Add</string>
|
||||||
|
|||||||
@@ -50,6 +50,12 @@
|
|||||||
<item name="android:translationY">-0.62sp</item>
|
<item name="android:translationY">-0.62sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
<style name="BottomNavigationViewStyle">
|
||||||
|
<item name="android:background">@color/blue_app</item>
|
||||||
|
<item name="itemIconTint">@color/white</item>
|
||||||
|
<item name="itemTextColor">@color/white</item>
|
||||||
|
</style>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
16
app/src/main/res/xml/settings.xml
Normal file
16
app/src/main/res/xml/settings.xml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
|
||||||
|
<PreferenceCategory
|
||||||
|
android:title="Language Settings">
|
||||||
|
|
||||||
|
<!-- Spinner to select language -->
|
||||||
|
<Preference
|
||||||
|
android:key="language_preference"
|
||||||
|
android:title="Select Language"
|
||||||
|
android:summary="Choose your preferred language"
|
||||||
|
android:dialogTitle="Select Language"
|
||||||
|
android:widgetLayout="@layout/language_spinner_preference"/>
|
||||||
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
</PreferenceScreen>
|
||||||
Reference in New Issue
Block a user