diff --git a/app/build.gradle b/app/build.gradle index 91d80e8..462ef66 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -22,7 +22,7 @@ android { minSdk 30 targetSdk 34 versionCode 138 - versionName "2.1.133.3" + versionName "2.1.133" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" externalNativeBuild { cmake { diff --git a/app/src/main/java/com/example/hpostesting/presentation/main_base/SettingsFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/main_base/SettingsFragment.kt index 9e219da..7c32aa7 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/main_base/SettingsFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/main_base/SettingsFragment.kt @@ -24,6 +24,7 @@ import android.widget.AdapterView import android.widget.ArrayAdapter import android.widget.Toast import androidx.core.content.ContextCompat +import androidx.core.content.edit import androidx.fragment.app.Fragment import androidx.preference.ListPreference import androidx.preference.Preference @@ -58,7 +59,6 @@ class SlideshowFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - binding.nameEditText.setText(sharedPreferences.getString(Constants.LABNAME, "")) selectedItem = sharedPreferences.getString(Constants.CUVETTE_SIZE, "10mm").toString() binding.btnGo.setOnClickListener { @@ -120,6 +120,7 @@ class PrefsFragment : PreferenceFragmentCompat() { private lateinit var serverPreference: Preference private lateinit var currentServerPreference: Preference lateinit var firebaseManager: FirebaseManager + var autoSmbtValue = false private var topDevMode = false lateinit var databaseRepository: DatabaseRepository @@ -130,6 +131,7 @@ class PrefsFragment : PreferenceFragmentCompat() { topDevMode = firebaseManager.getDevMode() val sharedPreference = requireContext().getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE) + autoSmbtValue = sharedPreference.getBoolean("AutSmbt", false) val preferenceScreen = preferenceManager.createPreferenceScreen(requireContext()) val currentServer = firebaseManager.getLastSelectedServer().serverName @@ -200,6 +202,24 @@ class PrefsFragment : PreferenceFragmentCompat() { } } + val autosmbt = SwitchPreferenceCompat(requireContext()).apply { + title = "Auto submit" + summary = "Enable or disable Auto submit" + icon = + ContextCompat.getDrawable(requireContext(), R.drawable.baseline_developer_mode_24) + key = "auto_submit_key" // Unique key for SharedPreferences + + // Load toggle state from SharedPreferences + isChecked = autoSmbtValue + setOnPreferenceChangeListener { _, newValue -> + val isEnabled = newValue as Boolean + sharedPreference.edit { + putBoolean("AutSmbt",isEnabled) + } + true + } + } + val appVersionPreference = Preference(requireContext()).apply { title = "App Version" summary = @@ -218,6 +238,8 @@ class PrefsFragment : PreferenceFragmentCompat() { if (preferenceScreen.findPreference("developer_options") == null) { preferenceScreen.addPreference(developerToggle) + preferenceScreen.addPreference(autosmbt) + } if (preferenceScreen.findPreference("server_preference") == null) { preferenceScreen.addPreference(serverSelectorPreference) @@ -234,6 +256,7 @@ class PrefsFragment : PreferenceFragmentCompat() { if (firebaseManager.getDevMode()) { developerToggle.isChecked = true // Ensure it's checked preferenceScreen.addPreference(developerToggle) + preferenceScreen.addPreference(autosmbt) preferenceScreen.addPreference(serverSelectorPreference) } diff --git a/app/src/main/java/com/example/hpostesting/presentation/trueheme_test/TrueHemeTestFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/trueheme_test/TrueHemeTestFragment.kt index 97e11c8..152cfd3 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/trueheme_test/TrueHemeTestFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/trueheme_test/TrueHemeTestFragment.kt @@ -55,8 +55,11 @@ import kotlin.math.log10 import kotlin.random.Random //This is TrueHemeTestFragment, where actual tests are done first buffer check and then sample check //and finally on submit test data to database if online or store in offline database + + @Suppress("MemberVisibilityCanBePrivate") class TrueHemeTestFragment : Fragment() { + private var doWeNeedAutoSmbt = false private var positiveBoderLine10mm1=Constants.positiveBoderLineMetricCheck10mmMin private var positiveBoderLine10mm2=Constants.positiveBoderLineMetricCheck10mmMax private var negativeBoderLine10mm1=Constants.negativeBoderLineMetricCheck10mmMin @@ -90,6 +93,7 @@ class TrueHemeTestFragment : Fragment() { private var temperature="" private var cuvetteSizeSP = "10mm" private var checkCuvette = false + private var checkCuvettePresent = false private var checkRefreshCuvette = false private var checkCuvetteSam = false private var checkSubmit = false @@ -137,7 +141,7 @@ class TrueHemeTestFragment : Fragment() { binding = FragmentHemoCubeReferenceBinding.inflate(inflater, container, false) sharedPreferences = requireContext().getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE) - + doWeNeedAutoSmbt = sharedPreferences.getBoolean("AutSmbt", false) cuvetteSizeSP = sharedPreferences.getString(Constants.CUVETTE_SIZE,"10mm").toString() testState = TestState( @@ -163,9 +167,11 @@ class TrueHemeTestFragment : Fragment() { lifecycleScope.launch { delay(100) } + checkCuvettePresence() + lifecycleScope.launch { + delay(3000) + } activity?.runOnUiThread { - - if (checkSubmit) { with(sharedPreferences.edit()) { putBoolean(Constants.QUICK_CAPTURE, false) apply() @@ -186,15 +192,9 @@ class TrueHemeTestFragment : Fragment() { sharedPreferences.getString(Constants.KIT_NUMBER, ""), quickCapture ) - Toast.makeText(requireContext(), "Auto Sumbitted", Toast.LENGTH_SHORT).show() - } else { - checkCuvettePresence() - binding.btnSubmit.isEnabled = true - binding.btnSubmit.isClickable = true - Toast.makeText(requireContext(), "Auto Sumbit Failed ", Toast.LENGTH_SHORT).show() - binding.btnSubmit.visibility = View.VISIBLE - } + Toast.makeText(requireContext(), "Auto Submitted", Toast.LENGTH_SHORT).show() } + } @SuppressLint("SetTextI18n") @@ -394,11 +394,32 @@ class TrueHemeTestFragment : Fragment() { } if (result == "Local") { showToast(R.string.internt_not_local) - startActivity(Intent(requireActivity(), DashboardActivity::class.java)) + //got it + if (doWeNeedAutoSmbt) { + if (!checkCuvettePresent) { + Toast.makeText(context, "Gooing back 2", Toast.LENGTH_SHORT).show() + startActivity(Intent(requireActivity(), DashboardActivity::class.java)) + }else{ + Toast.makeText(context, "Remove Cuvette", Toast.LENGTH_SHORT).show() + } + }else{ + startActivity(Intent(requireActivity(), DashboardActivity::class.java)) + + } } if (result == "Error") { showToast(R.string.error_local) - startActivity(Intent(requireActivity(), DashboardActivity::class.java)) + //got it + if (doWeNeedAutoSmbt) { + if (!checkCuvettePresent) { + Toast.makeText(context, "Gooing back", Toast.LENGTH_SHORT).show() + startActivity(Intent(requireActivity(), DashboardActivity::class.java)) + }else{ + Toast.makeText(context, "Remove Cuvette", Toast.LENGTH_SHORT).show() + } + }else{ + startActivity(Intent(requireActivity(), DashboardActivity::class.java)) + } } binding.progressBar.visibility = View.GONE @@ -443,7 +464,17 @@ class TrueHemeTestFragment : Fragment() { val i = Intent( requireContext().applicationContext, DashboardActivity::class.java ) - startActivity(i) + //got it + if (doWeNeedAutoSmbt){ + if (!checkCuvettePresent){ + Toast.makeText(context, "Gooing back 3", Toast.LENGTH_SHORT).show() + startActivity(i) + }else{ + Toast.makeText(context, "Remove Cuvette", Toast.LENGTH_SHORT).show() + } + }else { + startActivity(i) + } } } else { trueHemeTestViewModel.messages.postValue("Reading $repeatReadingCount completed") @@ -652,6 +683,7 @@ class TrueHemeTestFragment : Fragment() { } } resultData.contains("#AIN") && sampleClick && this.testStatusCode <= TestStatus.CUVETTE_ABSENTS.code -> { + checkCuvettePresent = false trueHemeTestViewModel.messages.postValue(getString(R.string.cuvette_absent)) this.testStatusCode = TestStatus.CUVETTE_ABSENTS.code activity?.runOnUiThread { @@ -664,6 +696,7 @@ class TrueHemeTestFragment : Fragment() { this.testStatusCode = TestStatus.CUVETTE_PRESENTR.code activity?.runOnUiThread { checkRefreshCuvette = true + checkCuvettePresent =true binding.testing.visibility = View.GONE binding.btnRetryCheckCuvette.visibility = View.GONE binding.btnPlaceRefreshbuffer.visibility = View.VISIBLE @@ -674,6 +707,7 @@ class TrueHemeTestFragment : Fragment() { } } resultData.contains("#AIN") && refreshClick && this.testStatusCode <= TestStatus.CUVETTE_ABSENTR.code -> { + checkCuvettePresent = false trueHemeTestViewModel.messages.postValue(getString(R.string.cuvette_absent)) this.testStatusCode = TestStatus.CUVETTE_ABSENTR.code activity?.runOnUiThread { @@ -684,6 +718,7 @@ class TrueHemeTestFragment : Fragment() { showRetryButtonForCuvette() } resultData.contains("#CIN") && this.testStatusCode < TestStatus.CUVETTE_PRESENT.code -> { + checkCuvettePresent = true trueHemeTestViewModel.messages.postValue(getString(R.string.cuvette_present)) this.testStatusCode = TestStatus.CUVETTE_PRESENT.code activity?.runOnUiThread { @@ -697,6 +732,7 @@ class TrueHemeTestFragment : Fragment() { } } resultData.contains("#AIN") && this.testStatusCode <= TestStatus.CUVETTE_ABSENT.code -> { + checkCuvettePresent = false trueHemeTestViewModel.messages.postValue(getString(R.string.cuvette_absent)) this.testStatusCode = TestStatus.CUVETTE_ABSENT.code activity?.runOnUiThread { @@ -709,7 +745,12 @@ class TrueHemeTestFragment : Fragment() { //need to change where check submit resultData.contains("#CIN") && this.submitClick && this.testStatusCode < TestStatus.CUVETTE_PRESENTT.code -> { - trueHemeTestViewModel.messages.postValue(getString(R.string.cuvette_presentt)) + checkCuvettePresent = true + if (doWeNeedAutoSmbt){ + trueHemeTestViewModel.messages.postValue(getString(R.string.cuvette_presentnt)) + }else { + trueHemeTestViewModel.messages.postValue(getString(R.string.cuvette_presentt)) + } this.testStatusCode = TestStatus.CUVETTE_PRESENTT.code activity?.runOnUiThread { binding.testing.visibility = View.GONE @@ -718,6 +759,7 @@ class TrueHemeTestFragment : Fragment() { resultData.contains("#AIN") && this.submitClick && this.testStatusCode <= TestStatus.CUVETTE_ABSENTT.code -> { + checkCuvettePresent = false trueHemeTestViewModel.messages.postValue(getString(R.string.cuvette_absentt)) this.testStatusCode = TestStatus.CUVETTE_ABSENTT.code activity?.runOnUiThread { @@ -1011,11 +1053,14 @@ class TrueHemeTestFragment : Fragment() { activity?.runOnUiThread { //changing to invisible - binding.btnSubmit.visibility = View.GONE + binding.btnSubmit.visibility = View.VISIBLE // binding.btnSubmit.isEnabled = true // binding.btnSubmit.isClickable = true // binding.clParent.setBackgroundColor(Color.parseColor("#edfffd")) - autoSmbt(true) + if (doWeNeedAutoSmbt) { + binding.btnSubmit.visibility = View.GONE + autoSmbt(doWeNeedAutoSmbt) + } binding.ivCheck.visibility = View.VISIBLE } @@ -1703,7 +1748,6 @@ class TrueHemeTestFragment : Fragment() { (activity as TrueHemeTestActivity).mService.sendAndListenToHemoCube(HemoCubeCommands.CHECK_CUVETTE_COMMAND, object : UsbServiceListener { override fun onUsbRead(data: ByteArray?) {} - override fun onUsbError(e: Exception?) { trueHemeTestViewModel.progressBar.postValue(false) } @@ -1723,7 +1767,15 @@ class TrueHemeTestFragment : Fragment() { } }) } - + fun goback(){ + checkCuvettePresence() + lifecycleScope.launch { + delay(4000) + } + if (!checkCuvettePresent) { + startActivity(Intent(requireActivity(), DashboardActivity::class.java)) + } + } private fun startSampleProcess() { trueHemeTestViewModel.progressBar.postValue(true) diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 6eecf46..4a351f3 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -307,5 +307,6 @@ Calibrate the device Cuvette Present , Please Remove Cuvette And Try Again Cuvette Absent,Now You Can Submit + Test Done, Cuvette Present, Please Remove Cuvette And Goback \ No newline at end of file diff --git a/app/src/main/res/values-kn/strings.xml b/app/src/main/res/values-kn/strings.xml index c44b312..2145eb3 100644 --- a/app/src/main/res/values-kn/strings.xml +++ b/app/src/main/res/values-kn/strings.xml @@ -306,7 +306,7 @@ ಸಾಧನವನ್ನು ಮಾಪನಾಂಕ ಮಾಡಿ Cuvette Present , Please Remove Cuvette And Try Again Cuvette Absent,Now You Can Submit - + Test Done, Cuvette Present, Please Remove Cuvette And Goback \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1b1ce43..d2e58eb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -306,6 +306,7 @@ Reset password for this device Calibrate Device Cuvette Present , Please Remove Cuvette And Try Again + Test Done, Cuvette Present, Please Remove Cuvette And Goback Cuvette Absent,Now You Can Submit \ No newline at end of file