1 Commits

Author SHA1 Message Date
Mariya
3c0e9bf067 Counselling app - fixed issues related settings fragment 2024-01-26 13:52:48 +05:30
27 changed files with 318 additions and 154 deletions

View File

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

View File

@@ -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"),
}

View File

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

View File

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

View File

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

View File

@@ -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() {

View File

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

View File

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

View File

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

View File

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

View File

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

View 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>

View 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>

View 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>

View File

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

View 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>

View File

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

View File

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

View 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>

View 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>

View 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>

View File

@@ -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
android:id="@+id/action_usb"
android:checkable="false"
android:enabled="true"
android:title="@string/usb_connection"
android:visible="true"
app:showAsAction="always" />
</menu> </menu>

View File

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

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="top_margin">60dp</dimen>
</resources>

View File

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

View File

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

View 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>