diff --git a/app/build.gradle b/app/build.gradle index 41f092e..494a6b9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,7 +16,7 @@ android { // prod - production, preprod - preproduction, quality - qc, dev - development defaultConfig { - applicationId "in.sminnovations.hpostesting.preprod" + applicationId "in.sminnovations.hpostesting.dev" minSdk 21 targetSdk 34 versionCode 91 diff --git a/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt b/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt index 86ad9cb..b380365 100644 --- a/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt +++ b/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt @@ -8,7 +8,7 @@ import com.example.hpostesting.data.model.patient.DeviceData import com.example.hpostesting.data.model.patient.HemoCubeTestData import com.example.hpostesting.data.model.patient.UserData -@Database(entities = [UserData::class, HemoCubeTestData::class, DeviceData::class, BufferCheckData::class], version = 20, exportSchema = false) +@Database(entities = [UserData::class, HemoCubeTestData::class, DeviceData::class, BufferCheckData::class], version = 21, exportSchema = false) @TypeConverters(Converters::class) abstract class MyDatabase : RoomDatabase() { abstract fun userDao(): UserDao diff --git a/app/src/main/java/com/example/hpostesting/data/model/patient/HemoCubeTestData.kt b/app/src/main/java/com/example/hpostesting/data/model/patient/HemoCubeTestData.kt index 4a200d4..52c7a5f 100644 --- a/app/src/main/java/com/example/hpostesting/data/model/patient/HemoCubeTestData.kt +++ b/app/src/main/java/com/example/hpostesting/data/model/patient/HemoCubeTestData.kt @@ -76,5 +76,9 @@ data class HemoCubeTestData( var batteryMaxCapacity: String = "", var batteryTemperature: String = "", var batteryVoltage: String = "", - var molbioFlag: Boolean = false + var molbioFlag: Boolean = false, + var quickCapture: Boolean = false, + var solution: String? = "", + var concentration: String? = "", + var volume: String? = "", ) diff --git a/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsActivity.kt index 687baf6..1774a02 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsActivity.kt @@ -1,5 +1,8 @@ package com.example.hpostesting.presentation.assurance +import android.content.Context +import android.content.SharedPreferences +import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import dagger.hilt.android.AndroidEntryPoint import `in`.sminnovations.hpostesting.databinding.ActivityAssuranceControlsBinding @@ -7,6 +10,19 @@ import `in`.sminnovations.hpostesting.databinding.ActivityAssuranceControlsBindi @AndroidEntryPoint class AssuranceControlsActivity: AppCompatActivity() { private lateinit var binding: ActivityAssuranceControlsBinding + private lateinit var sharedPreference: SharedPreferences - + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + binding = ActivityAssuranceControlsBinding.inflate(layoutInflater) + sharedPreference = this.getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE) + setContentView(binding.root) + + if (savedInstanceState == null) { + supportFragmentManager.beginTransaction() + .replace(binding.fgAssuranceControls.id, AssuranceControlsFragment()) + .commit() + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsFragment.kt index a3937e1..9239671 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsFragment.kt @@ -1,13 +1,24 @@ package com.example.hpostesting.presentation.assurance +import android.R import android.content.Context +import android.content.Intent import android.content.SharedPreferences +import android.os.Build import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.AdapterView +import android.widget.ArrayAdapter +import android.widget.Spinner +import androidx.annotation.RequiresApi import androidx.fragment.app.Fragment +import com.example.hpostesting.data.DataHolder +import com.example.hpostesting.data.model.patient.UserData +import com.example.hpostesting.presentation.hemocube.HemocubeActivity import `in`.sminnovations.hpostesting.databinding.FragmentAssuranceControlsBinding +import java.time.Instant class AssuranceControlsFragment: Fragment() { private lateinit var binding: FragmentAssuranceControlsBinding @@ -21,4 +32,97 @@ class AssuranceControlsFragment: Fragment() { requireContext().getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE) return binding.root } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initViews() + } + + private fun initViews() { +// binding.btnSubmit.visibility = View.GONE + + val solutionSpinner: Spinner = binding.spinnerSolutions + val solutionOptions = arrayOf("Select solution", "KMnO4", "Tartrazine", "AR", "HB", "Blood") + val solutionAdapter = ArrayAdapter(requireContext(), R.layout.simple_spinner_item, solutionOptions) + solutionAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + solutionSpinner.adapter = solutionAdapter + solutionSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected( + parent: AdapterView<*>?, + view: View?, + position: Int, + id: Long + ) { + val selectedValue: String = solutionOptions[position] + if (!selectedValue.equals("Select solution")) { + DataHolder.hemoCubeTestData!!.solution = selectedValue + } + } + + override fun onNothingSelected(parent: AdapterView<*>?) { + } + } + + val concentrationSpinner: Spinner = binding.spinnerConcentration + val concentrationOptions = arrayOf("Select concentration", "250umol", "350umol", "450umol", "550umol", "650umol") + val concentrationAdapter = ArrayAdapter(requireContext(), R.layout.simple_spinner_item, concentrationOptions) + concentrationAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + concentrationSpinner.adapter = concentrationAdapter + concentrationSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected( + parent: AdapterView<*>?, + view: View?, + position: Int, + id: Long + ) { + val selectedValue: String = concentrationOptions[position] + if (!selectedValue.equals("Select concentration")) { + DataHolder.hemoCubeTestData!!.concentration = selectedValue + } + } + + override fun onNothingSelected(parent: AdapterView<*>?) { + } + } + + val volumeSpinner: Spinner = binding.spinnerVolume + val volumeOptions = arrayOf("Select volume", "1uml", "2uml", "4uml", "4.5uml", "5uml") + val volumeAdapter = ArrayAdapter(requireContext(), R.layout.simple_spinner_item, volumeOptions) + volumeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + volumeSpinner.adapter = volumeAdapter + volumeSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected( + parent: AdapterView<*>?, + view: View?, + position: Int, + id: Long + ) { + val selectedValue: String = volumeOptions[position] + if (!selectedValue.equals("Select volume")) { + DataHolder.hemoCubeTestData!!.volume = selectedValue + } + } + + override fun onNothingSelected(parent: AdapterView<*>?) { + } + } + + binding.btnSubmit.setOnClickListener { + DataHolder.hemoCubeTestData!!.quickCapture = true + val currentUnixTime = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + Instant.now().epochSecond + } else { + "" + } + DataHolder.hemoCubeTestData!!._id = currentUnixTime.toString() + "SMI" + DataHolder.hemoCubeTestData!!.name = "${DataHolder.hemoCubeTestData!!.solution} ${DataHolder.hemoCubeTestData!!.concentration} ${DataHolder.hemoCubeTestData!!.volume}" + + DataHolder.selectedTest = UserData() + DataHolder.selectedTest?._id = DataHolder.hemoCubeTestData!!._id + DataHolder.selectedTest?.name = DataHolder.hemoCubeTestData!!.name + + val i = Intent(requireContext(), HemocubeActivity::class.java) + startActivity(i) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt index 3793c62..231fb0e 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt @@ -28,6 +28,7 @@ import com.example.hpostesting.data.model.updates.DeviceUpdateRequest import com.example.hpostesting.presentation.KitScanActivity import com.example.hpostesting.presentation.adapter.OfflineUserListAdapter import com.example.hpostesting.presentation.adapter.UserListAdapter +import com.example.hpostesting.presentation.assurance.AssuranceControlsActivity import com.example.hpostesting.presentation.hemocube.HemoCubeViewModel import com.example.hpostesting.presentation.testRight.TestRightViewModel import com.firebase.ui.firestore.FirestoreRecyclerOptions @@ -72,6 +73,7 @@ class HomeFragment : Fragment() { sharedPreference = requireContext().getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE) DataHolder.selectedTest = null + DataHolder.hemoCubeTestData = HemoCubeTestData() return binding.root } @@ -138,6 +140,12 @@ class HomeFragment : Fragment() { startActivity(Intent(requireContext(), KitScanActivity::class.java)) requireActivity().finish() } + binding.btnQuickCapture.setOnClickListener { + val i = Intent( + requireContext().applicationContext, AssuranceControlsActivity::class.java + ) + startActivity(i) + } } private fun checkForTokenAndUpdate() { diff --git a/app/src/main/res/drawable/flask.png b/app/src/main/res/drawable/flask.png new file mode 100644 index 0000000..22cd4b5 Binary files /dev/null and b/app/src/main/res/drawable/flask.png differ diff --git a/app/src/main/res/drawable/spinner_border.xml b/app/src/main/res/drawable/spinner_border.xml new file mode 100644 index 0000000..3d3e511 --- /dev/null +++ b/app/src/main/res/drawable/spinner_border.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_assurance_controls.xml b/app/src/main/res/layout/fragment_assurance_controls.xml index dcde211..279c80e 100644 --- a/app/src/main/res/layout/fragment_assurance_controls.xml +++ b/app/src/main/res/layout/fragment_assurance_controls.xml @@ -20,29 +20,64 @@ app:layout_constraintTop_toBottomOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + + + + + +