Skip to content
Snippets Groups Projects
Commit 8a042339 authored by Oliver Zimmerman's avatar Oliver Zimmerman
Browse files

Added Setter for TestResultSection to set details - included formatting functions.

parent 727efab4
No related branches found
No related tags found
No related merge requests found
......@@ -23,6 +23,8 @@ import de.rki.coronawarnapp.util.ui.viewBindingLazy
import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
import kotlinx.coroutines.launch
import org.joda.time.DateTime
import java.util.Date
import javax.inject.Inject
class SubmissionTestResultFragment : Fragment(R.layout.fragment_submission_test_result),
......@@ -79,6 +81,7 @@ class SubmissionTestResultFragment : Fragment(R.layout.fragment_submission_test_
viewModel.uiState.observe2(this) {
binding.uiState = it
binding.submissionTestResultContent.submissionTestResultSection.setTestResultSection(binding.uiState)
}
// registers callback when the os level back is pressed
......
package de.rki.coronawarnapp.ui.view
import android.content.Context
import android.graphics.drawable.Drawable
import android.text.Spannable
import android.text.SpannableString
import android.util.AttributeSet
import androidx.appcompat.content.res.AppCompatResources.getDrawable
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.withStyledAttributes
import de.rki.coronawarnapp.CoronaWarnApplication
import de.rki.coronawarnapp.R
import de.rki.coronawarnapp.ui.submission.testresult.TestResultUIState
import de.rki.coronawarnapp.util.DeviceUIState
import de.rki.coronawarnapp.util.TimeAndDateExtensions.toUIFormat
import de.rki.coronawarnapp.util.formatter.formatTestResult
import kotlinx.android.synthetic.main.view_test_result_section.view.*
import java.util.Date
/**
* The [TestResultSection] Displays the appropriate test result.
......@@ -25,7 +33,7 @@ constructor(
test_result_section_headline.text =
getText(R.styleable.TestResultSection_test_result_section_headline)
test_result_section_content.text =
SpannableString(getText(R.styleable.TestResultSection_test_result_section_content))
getText(R.styleable.TestResultSection_test_result_section_content)
test_result_section_registered_at_text.text =
getText(R.styleable.TestResultSection_test_result_section_registered_at_text)
val resultIconId = getResourceId(R.styleable.TestResultSection_test_result_section_status_icon, 0)
......@@ -35,4 +43,50 @@ constructor(
}
}
}
fun setTestResultSection(uiState: TestResultUIState?){
val deviceUIState = uiState?.deviceUiState
val registeredAt = uiState?.testResultReceivedDate
test_result_section_registered_at_text.text = formatTestResultRegisteredAtText(registeredAt)
val testResultIcon = formatTestStatusIcon(deviceUIState)
test_result_section_status_icon.setImageDrawable(testResultIcon)
test_result_section_content.text = formatTestResultSectionContent(deviceUIState)
}
private fun formatTestStatusIcon(uiState: DeviceUIState?): Drawable? {
return when (uiState) {
DeviceUIState.PAIRED_NO_RESULT ->
context.getDrawable(R.drawable.ic_test_result_illustration_pending)
DeviceUIState.PAIRED_POSITIVE_TELETAN,
DeviceUIState.PAIRED_POSITIVE ->
context.getDrawable(R.drawable.ic_test_result_illustration_positive)
DeviceUIState.PAIRED_NEGATIVE ->
context.getDrawable(R.drawable.ic_test_result_illustration_negative)
DeviceUIState.PAIRED_ERROR,
DeviceUIState.PAIRED_REDEEMED ->
context.getDrawable(R.drawable.ic_test_result_illustration_invalid)
else -> context.getDrawable(R.drawable.ic_test_result_illustration_invalid)
}
}
private fun formatTestResultRegisteredAtText(registeredAt: Date?): String {
return context.getString(R.string.test_result_card_registered_at_text)
.format(registeredAt?.toUIFormat(context))
}
private fun formatTestResultSectionContent(uiState: DeviceUIState?): Spannable {
return when (uiState) {
DeviceUIState.PAIRED_NO_RESULT ->
SpannableString(context.getString(R.string.test_result_card_status_pending))
DeviceUIState.PAIRED_ERROR,
DeviceUIState.PAIRED_REDEEMED ->
SpannableString(context.getString(R.string.test_result_card_status_invalid))
DeviceUIState.PAIRED_POSITIVE,
DeviceUIState.PAIRED_POSITIVE_TELETAN,
DeviceUIState.PAIRED_NEGATIVE -> formatTestResult(uiState)
else -> SpannableString("")
}
}
}
......@@ -26,9 +26,6 @@
android:focusable="true"
android:importantForAccessibility="yes"
app:test_result_section_headline="@string/test_result_card_headline"
app:test_result_section_content="@{FormatterSubmissionHelper.formatTestResultCardContent(uiState.deviceUiState)}"
app:test_result_section_status_icon="@{FormatterSubmissionHelper.formatTestStatusIcon(uiState.deviceUiState)}"
app:test_result_section_registered_at_text="@{FormatterSubmissionHelper.formatTestResultRegisteredAtText(uiState.testResultReceivedDate)}"
app:layout_constraintEnd_toEndOf="@+id/guideline_card_end"
app:layout_constraintStart_toStartOf="@+id/guideline_card_start"
app:layout_constraintTop_toTopOf="parent"/>
......@@ -43,7 +40,7 @@
android:text="@string/submission_test_result_subtitle"
app:layout_constraintEnd_toEndOf="@+id/guideline_end"
app:layout_constraintStart_toStartOf="@+id/guideline_start"
app:layout_constraintTop_toBottomOf="@+id/submission_test_result_card" />
app:layout_constraintTop_toBottomOf="@+id/submission_test_result_section" />
<include
android:id="@+id/submission_test_result_pending_steps"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment