Counselling app - fixed issues related settings fragment
This commit is contained in:
@@ -57,6 +57,7 @@ android {
|
||||
|
||||
dependencies {
|
||||
implementation "com.google.dagger:hilt-android:2.46"
|
||||
implementation 'androidx.fragment:fragment:1.6.2'
|
||||
kapt "com.google.dagger:hilt-android-compiler:2.46"
|
||||
implementation 'com.google.dagger:hilt-android: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.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 androidx.appcompat.app.AppCompatActivity
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
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.data.constant.LanguageManager
|
||||
import com.smi.counselling.databinding.ActivityDashboardBinding
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@@ -23,13 +25,34 @@ class DashboardActivity : AppCompatActivity() {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = ActivityDashboardBinding.inflate(layoutInflater)
|
||||
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() {
|
||||
if (supportFragmentManager.isDestroyed) return
|
||||
supportFragmentManager.beginTransaction().replace(binding.fghemocube.id, HomeFragment())
|
||||
supportFragmentManager.beginTransaction()
|
||||
.replace(R.id.fragmentContainer, fragment)
|
||||
.commit()
|
||||
}
|
||||
override fun onResume() {
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.smi.counselling.data.dashboard
|
||||
import android.content.Context
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
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 dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
|
||||
@@ -12,7 +12,9 @@ import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ArrayAdapter
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.LiveData
|
||||
import com.example.hpostesting.data.model.patient.HemoCubeTestData
|
||||
import com.example.hpostesting.data.model.patient.toHemoCubeTestData
|
||||
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.smi.counselling.R
|
||||
import com.smi.counselling.data.DataHolder
|
||||
import com.smi.counselling.data.NetworkStatusLiveData
|
||||
import com.smi.counselling.databinding.FragmentDigitalCardBinding
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import java.text.SimpleDateFormat
|
||||
@@ -30,31 +33,30 @@ import java.util.Locale
|
||||
@AndroidEntryPoint
|
||||
class DigitalCardFragment : Fragment() {
|
||||
private lateinit var binding: FragmentDigitalCardBinding
|
||||
private val hemoCubeViewModel: HomeViewModel by activityViewModels()
|
||||
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(
|
||||
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?,
|
||||
): View {
|
||||
binding = FragmentDigitalCardBinding.inflate(inflater, container, false)
|
||||
sharedPreferences =
|
||||
requireContext().getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE)
|
||||
requireContext().getSharedPreferences("COUNSELLING", Context.MODE_PRIVATE)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
|
||||
initViews()
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
private fun initViews() {
|
||||
|
||||
|
||||
hemoCubeViewModel.networkStatusLiveData.observe(viewLifecycleOwner) { isConnected ->
|
||||
_networkStatusLiveData = context?.let { NetworkStatusLiveData(it) } ?: return
|
||||
networkStatusLiveData.observe(viewLifecycleOwner) { isConnected ->
|
||||
if (isConnected) {
|
||||
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.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.LiveData
|
||||
import com.bumptech.glide.Glide
|
||||
import com.example.hpostesting.data.model.patient.HemoCubeTestData
|
||||
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.smi.counselling.R
|
||||
import com.smi.counselling.data.DataHolder
|
||||
import com.smi.counselling.data.NetworkStatusLiveData
|
||||
import com.smi.counselling.databinding.FragmentHomeBinding
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import java.util.Locale
|
||||
@@ -32,11 +35,13 @@ data class ClassificationResult(val imageResource: Int, val text: String,val ima
|
||||
class HomeFragment : Fragment() {
|
||||
private var _binding: FragmentHomeBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
private val hemoCubeViewModel: HomeViewModel by activityViewModels()
|
||||
private lateinit var sharedPreference: SharedPreferences
|
||||
private var maleresult: String = ""
|
||||
private var femaleresult: String = ""
|
||||
private val testDetails = DataHolder.selectedTest?.toHemoCubeTestData()
|
||||
private lateinit var _networkStatusLiveData: NetworkStatusLiveData
|
||||
private val networkStatusLiveData: LiveData<Boolean>
|
||||
get() = _networkStatusLiveData
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
@@ -59,27 +64,15 @@ class HomeFragment : Fragment() {
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
_networkStatusLiveData = context?.let { NetworkStatusLiveData(it) } ?: return
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
hemoCubeViewModel.networkStatusLiveData.observe(viewLifecycleOwner) { isConnected ->
|
||||
networkStatusLiveData.observe(viewLifecycleOwner) { isConnected ->
|
||||
if (isConnected) {
|
||||
loadUserData()
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
binding.btnDigital.setOnClickListener {
|
||||
val i = Intent(
|
||||
requireContext().applicationContext, DigitalCardActivity::class.java
|
||||
)
|
||||
startActivity(i)
|
||||
}
|
||||
|
||||
|
||||
activity?.runOnUiThread {
|
||||
binding.btnSubmit.setOnClickListener {
|
||||
when {
|
||||
@@ -368,16 +361,9 @@ class HomeFragment : Fragment() {
|
||||
_binding = null
|
||||
}
|
||||
|
||||
|
||||
private fun setImageResource(context: Context, imageResource: Int) {
|
||||
when (context) {
|
||||
is Fragment -> {
|
||||
val imageView = context.view?.findViewById<ImageView>(R.id.resultImage)
|
||||
imageView?.setImageResource(imageResource)
|
||||
}
|
||||
else -> throw IllegalArgumentException("Unsupported context type")
|
||||
}
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
(activity as? AppCompatActivity)?.supportActionBar?.title = "Counselling App"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -3,19 +3,12 @@ package com.smi.counselling.data.dashboard
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
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 dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import javax.inject.Inject
|
||||
@HiltViewModel
|
||||
class HomeViewModel @Inject constructor(
|
||||
private val hemoCubeDao: HemoCubeDao,
|
||||
private val userdao: UserDao,
|
||||
context: Context,
|
||||
) : ViewModel() {
|
||||
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)
|
||||
|
||||
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:tools="http://schemas.android.com/tools">
|
||||
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/cl_parent"
|
||||
android:layout_width="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
|
||||
android:visibility="gone"
|
||||
android:id="@+id/my_toolbar"
|
||||
@@ -21,17 +30,25 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!-- Use FrameLayout as the direct container for fragments -->
|
||||
<FrameLayout
|
||||
android:id="@+id/fghemocube"
|
||||
android:id="@+id/fragmentContainer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
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_constraintEnd_toEndOf="parent">
|
||||
|
||||
<!-- NavHostFragment for navigation -->
|
||||
|
||||
</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>
|
||||
</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_height="wrap_content"
|
||||
android:layout_marginHorizontal="24dp"
|
||||
android:layout_marginTop="24dp"
|
||||
android:layout_marginTop="60dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
@@ -33,7 +33,7 @@
|
||||
android:id="@+id/userCard"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="350dp"
|
||||
android:layout_marginTop="24dp"
|
||||
android:layout_marginTop="70dp"
|
||||
app:cardBackgroundColor="#C0C0C0"
|
||||
app:cardCornerRadius="25dp"
|
||||
app:cardElevation="0dp"
|
||||
|
||||
@@ -5,20 +5,7 @@
|
||||
android:layout_width="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
|
||||
android:id="@+id/abhaid"
|
||||
@@ -26,17 +13,16 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="24dp"
|
||||
android:layout_marginTop="40dp"
|
||||
android:layout_marginTop="60dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/counsellingcard">
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<AutoCompleteTextView
|
||||
android:id="@+id/abhaidtext"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="Select Abha Id for Male"
|
||||
android:hint="@string/select_abha_card_male"
|
||||
android:inputType="text"
|
||||
android:labelFor="@id/abhaid" />
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
@@ -57,7 +43,7 @@
|
||||
android:id="@+id/abhaidtextfemale"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="Select Abha Id for Female"
|
||||
android:hint="@string/select_abha_card_female"
|
||||
android:inputType="text"
|
||||
android:labelFor="@id/abhaid" />
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
@@ -257,19 +243,4 @@
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/btn_submit"
|
||||
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>
|
||||
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"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item
|
||||
android:id="@+id/action_usb"
|
||||
android:checkable="false"
|
||||
android:enabled="true"
|
||||
android:title="@string/usb_connection"
|
||||
android:visible="true"
|
||||
app:showAsAction="always" />
|
||||
|
||||
|
||||
</menu>
|
||||
</menu>
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
<color name="blue_app_dark">#005db3</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_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="or">OR</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="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>
|
||||
|
||||
@@ -50,6 +50,12 @@
|
||||
<item name="android:translationY">-0.62sp</item>
|
||||
</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>
|
||||
|
||||
|
||||
|
||||
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