Skip to content

Commit a5e7c87

Browse files
committed
Improved BarcodeWidgetAnswer
1 parent 60e4005 commit a5e7c87

File tree

4 files changed

+10
-15
lines changed

4 files changed

+10
-15
lines changed

collect_app/src/main/java/org/odk/collect/android/widgets/BarcodeWidget.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,14 @@ class BarcodeWidget(
4242
} else {
4343
binding.barcodeButton.setOnClickListener { onButtonClick() }
4444
}
45-
binding.answerView.setHidden(hasAppearance(prompt, Appearances.HIDDEN_ANSWER))
46-
binding.answerView.setTextSize(answerFontSize.toFloat())
4745

4846
val answer = prompt.answerText
4947
if (!answer.isNullOrEmpty()) {
5048
binding.barcodeButton.text = getContext().getString(R.string.replace_barcode)
5149
}
52-
binding.answerView.setAnswer(prompt.answerText)
50+
binding.answerView.setup(prompt.answerValue, answerFontSize.toFloat())
51+
val isAnswerHidden = hasAppearance(prompt, Appearances.HIDDEN_ANSWER)
52+
binding.answerView.visibility = if (isAnswerHidden || binding.answerView.getAnswer().isBlank()) GONE else VISIBLE
5353

5454
return binding.root
5555
}

collect_app/src/main/java/org/odk/collect/android/widgets/BarcodeWidgetAnswer.kt

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import android.util.AttributeSet
55
import android.util.TypedValue
66
import android.view.LayoutInflater
77
import android.widget.FrameLayout
8+
import org.javarosa.core.model.data.IAnswerData
89
import org.odk.collect.android.databinding.BarcodeWidgetAnswerBinding
910

1011
class BarcodeWidgetAnswer @JvmOverloads constructor(
@@ -13,19 +14,14 @@ class BarcodeWidgetAnswer @JvmOverloads constructor(
1314
defStyle: Int = 0
1415
) : FrameLayout(context, attrs, defStyle) {
1516
private val binding = BarcodeWidgetAnswerBinding.inflate(LayoutInflater.from(context), this, true)
16-
private var hidden = false
1717

18-
fun setAnswer(answer: String?) {
19-
binding.answer.text = stripInvalidCharacters(answer)
20-
binding.root.visibility = if (hidden || binding.answer.text.isNullOrBlank()) GONE else VISIBLE
21-
}
22-
23-
fun setTextSize(textSize: Float) {
18+
fun setup(answer: IAnswerData?, textSize: Float) {
2419
binding.answer.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize)
20+
setAnswer(answer?.displayText)
2521
}
2622

27-
fun setHidden(hidden: Boolean) {
28-
this.hidden = hidden
23+
fun setAnswer(answer: String?) {
24+
binding.answer.text = stripInvalidCharacters(answer)
2925
}
3026

3127
fun getAnswer(): String {

collect_app/src/main/res/layout/barcode_widget_answer.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:app="http://schemas.android.com/apk/res-auto"
44
xmlns:tools="http://schemas.android.com/tools"
5-
android:id="@+id/barcode_widget_answer"
65
android:layout_width="wrap_content"
76
android:layout_height="wrap_content">
87

collect_app/src/test/java/org/odk/collect/android/widgets/BarcodeWidgetTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ class BarcodeWidgetTest {
207207

208208
// Check initial value is not shown
209209
assertThat(
210-
widget.binding.answerView.findViewById<View>(R.id.barcode_widget_answer).visibility,
210+
widget.binding.answerView.visibility,
211211
equalTo(View.GONE)
212212
)
213213
assertThat(
@@ -219,7 +219,7 @@ class BarcodeWidgetTest {
219219
// Check updates aren't shown
220220
widget.setData("updated contents")
221221
assertThat(
222-
widget.binding.answerView.findViewById<View>(R.id.barcode_widget_answer).visibility,
222+
widget.binding.answerView.visibility,
223223
equalTo(View.GONE)
224224
)
225225
assertThat(

0 commit comments

Comments
 (0)