Skip to content

Commit 311328a

Browse files
authored
Set up Compose interop for Questionnaire ViewHolderFactories (#2870)
1 parent 9afa5ee commit 311328a

23 files changed

+149
-89
lines changed

contrib/barcode/src/main/java/com/google/android/fhir/datacapture/contrib/views/barcode/BarCodeReaderViewHolderFactory.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2022-2024 Google LLC
2+
* Copyright 2022-2025 Google LLC
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -24,16 +24,16 @@ import com.google.android.fhir.datacapture.contrib.views.barcode.mlkit.md.LiveBa
2424
import com.google.android.fhir.datacapture.extensions.localizedPrefixSpanned
2525
import com.google.android.fhir.datacapture.extensions.tryUnwrapContext
2626
import com.google.android.fhir.datacapture.views.QuestionnaireViewItem
27-
import com.google.android.fhir.datacapture.views.factories.QuestionnaireItemViewHolderDelegate
28-
import com.google.android.fhir.datacapture.views.factories.QuestionnaireItemViewHolderFactory
27+
import com.google.android.fhir.datacapture.views.factories.QuestionnaireItemAndroidViewHolderDelegate
28+
import com.google.android.fhir.datacapture.views.factories.QuestionnaireItemAndroidViewHolderFactory
2929
import kotlinx.coroutines.launch
3030
import org.hl7.fhir.r4.model.QuestionnaireResponse
3131
import org.hl7.fhir.r4.model.StringType
3232

3333
object BarCodeReaderViewHolderFactory :
34-
QuestionnaireItemViewHolderFactory(R.layout.questionnaire_item_bar_code_reader_view) {
34+
QuestionnaireItemAndroidViewHolderFactory(R.layout.questionnaire_item_bar_code_reader_view) {
3535
override fun getQuestionnaireItemViewHolderDelegate() =
36-
object : QuestionnaireItemViewHolderDelegate {
36+
object : QuestionnaireItemAndroidViewHolderDelegate {
3737
private lateinit var prefixTextView: TextView
3838
private lateinit var textQuestion: TextView
3939
private lateinit var barcodeTextView: TextView

contrib/locationwidget/src/main/java/com/google/android/fhir/datacapture/contrib/views/locationwidget/LocationGpsCoordinateViewHolderFactory.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2024 Google LLC
2+
* Copyright 2024-2025 Google LLC
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -25,8 +25,8 @@ import com.google.android.fhir.datacapture.extensions.tryUnwrapContext
2525
import com.google.android.fhir.datacapture.validation.ValidationResult
2626
import com.google.android.fhir.datacapture.views.HeaderView
2727
import com.google.android.fhir.datacapture.views.QuestionnaireViewItem
28-
import com.google.android.fhir.datacapture.views.factories.QuestionnaireItemViewHolderDelegate
29-
import com.google.android.fhir.datacapture.views.factories.QuestionnaireItemViewHolderFactory
28+
import com.google.android.fhir.datacapture.views.factories.QuestionnaireItemAndroidViewHolderDelegate
29+
import com.google.android.fhir.datacapture.views.factories.QuestionnaireItemAndroidViewHolderFactory
3030
import com.google.android.material.textfield.MaterialAutoCompleteTextView
3131
import com.google.android.material.textfield.TextInputLayout
3232
import kotlinx.coroutines.launch
@@ -36,11 +36,11 @@ import org.hl7.fhir.r4.model.QuestionnaireResponse
3636
import org.hl7.fhir.r4.model.StringType
3737

3838
object LocationGpsCoordinateViewHolderFactory :
39-
QuestionnaireItemViewHolderFactory(
39+
QuestionnaireItemAndroidViewHolderFactory(
4040
R.layout.location_gps_coordinate_view,
4141
) {
42-
override fun getQuestionnaireItemViewHolderDelegate(): QuestionnaireItemViewHolderDelegate =
43-
object : QuestionnaireItemViewHolderDelegate {
42+
override fun getQuestionnaireItemViewHolderDelegate() =
43+
object : QuestionnaireItemAndroidViewHolderDelegate {
4444
override lateinit var questionnaireViewItem: QuestionnaireViewItem
4545

4646
private lateinit var header: HeaderView

contrib/locationwidget/src/main/java/com/google/android/fhir/datacapture/contrib/views/locationwidget/LocationWidgetViewHolderFactory.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2023-2024 Google LLC
2+
* Copyright 2023-2025 Google LLC
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -21,15 +21,15 @@ import com.google.android.fhir.datacapture.extensions.itemControlCode
2121
import com.google.android.fhir.datacapture.extensions.tryUnwrapContext
2222
import com.google.android.fhir.datacapture.views.GroupHeaderView
2323
import com.google.android.fhir.datacapture.views.QuestionnaireViewItem
24-
import com.google.android.fhir.datacapture.views.factories.QuestionnaireItemViewHolderDelegate
25-
import com.google.android.fhir.datacapture.views.factories.QuestionnaireItemViewHolderFactory
24+
import com.google.android.fhir.datacapture.views.factories.QuestionnaireItemAndroidViewHolderDelegate
25+
import com.google.android.fhir.datacapture.views.factories.QuestionnaireItemAndroidViewHolderFactory
2626
import com.google.android.material.button.MaterialButton
2727
import org.hl7.fhir.r4.model.Questionnaire
2828

2929
object LocationWidgetViewHolderFactory :
30-
QuestionnaireItemViewHolderFactory(R.layout.location_widget_view) {
31-
override fun getQuestionnaireItemViewHolderDelegate(): QuestionnaireItemViewHolderDelegate =
32-
object : QuestionnaireItemViewHolderDelegate {
30+
QuestionnaireItemAndroidViewHolderFactory(R.layout.location_widget_view) {
31+
override fun getQuestionnaireItemViewHolderDelegate() =
32+
object : QuestionnaireItemAndroidViewHolderDelegate {
3333
private lateinit var headerView: GroupHeaderView
3434
private lateinit var locationWidgetButton: MaterialButton
3535

datacapture/build.gradle.kts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import java.net.URL
44
plugins {
55
id(Plugins.BuildPlugins.androidLib)
66
id(Plugins.BuildPlugins.kotlinAndroid)
7+
id(Plugins.BuildPlugins.kotlinCompose)
78
id(Plugins.BuildPlugins.mavenPublish)
89
jacoco
910
id(Plugins.BuildPlugins.dokka).version(Plugins.Versions.dokka)
@@ -24,7 +25,10 @@ android {
2425
consumerProguardFile("proguard-rules.pro")
2526
}
2627

27-
buildFeatures { viewBinding = true }
28+
buildFeatures {
29+
viewBinding = true
30+
compose = true
31+
}
2832

2933
buildTypes {
3034
release {
@@ -101,6 +105,21 @@ dependencies {
101105
implementation(libs.kotlin.stdlib)
102106
implementation(libs.kotlinx.coroutines.core)
103107
implementation(libs.material)
108+
implementation(libs.androidx.recyclerview)
109+
110+
// Androidx Compose
111+
implementation(libs.androidx.activity.compose)
112+
implementation(platform(libs.androidx.compose.bom))
113+
implementation(libs.androidx.compose.ui)
114+
implementation(libs.androidx.compose.ui.graphics)
115+
implementation(libs.androidx.compose.ui.tooling.preview)
116+
implementation(libs.androidx.compose.material3)
117+
implementation(libs.androidx.navigation.compose)
118+
implementation(libs.accompanist.themeadapter.material3)
119+
120+
androidTestImplementation(libs.androidx.compose.ui.test.junit4)
121+
debugImplementation(libs.androidx.compose.ui.tooling)
122+
debugImplementation(libs.androidx.compose.ui.test.manifest)
104123

105124
testImplementation(Dependencies.mockitoInline)
106125
testImplementation(Dependencies.mockitoKotlin)

datacapture/src/main/java/com/google/android/fhir/datacapture/contrib/views/PhoneNumberViewHolderFactory.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2022-2024 Google LLC
2+
* Copyright 2022-2025 Google LLC
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -21,17 +21,16 @@ import android.text.InputType
2121
import com.google.android.fhir.datacapture.R
2222
import com.google.android.fhir.datacapture.extensions.getValidationErrorMessage
2323
import com.google.android.fhir.datacapture.views.QuestionnaireViewItem
24+
import com.google.android.fhir.datacapture.views.factories.QuestionnaireItemAndroidViewHolderFactory
2425
import com.google.android.fhir.datacapture.views.factories.QuestionnaireItemEditTextViewHolderDelegate
25-
import com.google.android.fhir.datacapture.views.factories.QuestionnaireItemViewHolderDelegate
26-
import com.google.android.fhir.datacapture.views.factories.QuestionnaireItemViewHolderFactory
2726
import com.google.android.material.textfield.TextInputEditText
2827
import com.google.android.material.textfield.TextInputLayout
2928
import org.hl7.fhir.r4.model.QuestionnaireResponse
3029
import org.hl7.fhir.r4.model.StringType
3130

3231
object PhoneNumberViewHolderFactory :
33-
QuestionnaireItemViewHolderFactory(R.layout.edit_text_single_line_view) {
34-
override fun getQuestionnaireItemViewHolderDelegate(): QuestionnaireItemViewHolderDelegate =
32+
QuestionnaireItemAndroidViewHolderFactory(R.layout.edit_text_single_line_view) {
33+
override fun getQuestionnaireItemViewHolderDelegate() =
3534
object : QuestionnaireItemEditTextViewHolderDelegate(InputType.TYPE_CLASS_PHONE) {
3635

3736
override suspend fun handleInput(

datacapture/src/main/java/com/google/android/fhir/datacapture/views/factories/AttachmentViewHolderFactory.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2022-2024 Google LLC
2+
* Copyright 2022-2025 Google LLC
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -57,9 +57,9 @@ import org.hl7.fhir.r4.model.Questionnaire.QuestionnaireItemComponent
5757
import org.hl7.fhir.r4.model.QuestionnaireResponse
5858

5959
internal object AttachmentViewHolderFactory :
60-
QuestionnaireItemViewHolderFactory(R.layout.attachment_view) {
60+
QuestionnaireItemAndroidViewHolderFactory(R.layout.attachment_view) {
6161
override fun getQuestionnaireItemViewHolderDelegate() =
62-
object : QuestionnaireItemViewHolderDelegate {
62+
object : QuestionnaireItemAndroidViewHolderDelegate {
6363
override lateinit var questionnaireViewItem: QuestionnaireViewItem
6464
private lateinit var header: HeaderView
6565
private lateinit var errorTextView: TextView

datacapture/src/main/java/com/google/android/fhir/datacapture/views/factories/AutoCompleteViewHolderFactory.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2022-2024 Google LLC
2+
* Copyright 2022-2025 Google LLC
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -44,10 +44,10 @@ import org.hl7.fhir.r4.model.Coding
4444
import org.hl7.fhir.r4.model.QuestionnaireResponse
4545

4646
internal object AutoCompleteViewHolderFactory :
47-
QuestionnaireItemViewHolderFactory(R.layout.edit_text_auto_complete_view) {
47+
QuestionnaireItemAndroidViewHolderFactory(R.layout.edit_text_auto_complete_view) {
4848

4949
override fun getQuestionnaireItemViewHolderDelegate() =
50-
object : QuestionnaireItemViewHolderDelegate {
50+
object : QuestionnaireItemAndroidViewHolderDelegate {
5151
private lateinit var context: AppCompatActivity
5252
private lateinit var header: HeaderView
5353
private lateinit var autoCompleteTextView: MaterialAutoCompleteTextView

datacapture/src/main/java/com/google/android/fhir/datacapture/views/factories/BooleanChoiceViewHolderFactory.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2022-2024 Google LLC
2+
* Copyright 2022-2025 Google LLC
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -39,9 +39,9 @@ import org.hl7.fhir.r4.model.BooleanType
3939
import org.hl7.fhir.r4.model.QuestionnaireResponse
4040

4141
internal object BooleanChoiceViewHolderFactory :
42-
QuestionnaireItemViewHolderFactory(R.layout.boolean_choice_view) {
42+
QuestionnaireItemAndroidViewHolderFactory(R.layout.boolean_choice_view) {
4343
override fun getQuestionnaireItemViewHolderDelegate() =
44-
object : QuestionnaireItemViewHolderDelegate {
44+
object : QuestionnaireItemAndroidViewHolderDelegate {
4545
private lateinit var context: AppCompatActivity
4646
private lateinit var header: HeaderView
4747
private lateinit var radioGroup: ConstraintLayout

datacapture/src/main/java/com/google/android/fhir/datacapture/views/factories/CheckBoxGroupViewHolderFactory.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2022-2024 Google LLC
2+
* Copyright 2022-2025 Google LLC
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -42,9 +42,9 @@ import org.hl7.fhir.r4.model.Questionnaire
4242
import org.hl7.fhir.r4.model.QuestionnaireResponse
4343

4444
internal object CheckBoxGroupViewHolderFactory :
45-
QuestionnaireItemViewHolderFactory(R.layout.checkbox_group_view) {
45+
QuestionnaireItemAndroidViewHolderFactory(R.layout.checkbox_group_view) {
4646
override fun getQuestionnaireItemViewHolderDelegate() =
47-
object : QuestionnaireItemViewHolderDelegate {
47+
object : QuestionnaireItemAndroidViewHolderDelegate {
4848
private var appContext: AppCompatActivity? = null
4949
private lateinit var header: HeaderView
5050
private lateinit var checkboxGroup: ConstraintLayout

datacapture/src/main/java/com/google/android/fhir/datacapture/views/factories/DatePickerViewHolderFactory.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2022-2024 Google LLC
2+
* Copyright 2022-2025 Google LLC
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -58,9 +58,9 @@ import org.hl7.fhir.r4.model.DateType
5858
import org.hl7.fhir.r4.model.QuestionnaireResponse
5959

6060
internal object DatePickerViewHolderFactory :
61-
QuestionnaireItemViewHolderFactory(R.layout.date_picker_view) {
61+
QuestionnaireItemAndroidViewHolderFactory(R.layout.date_picker_view) {
6262
override fun getQuestionnaireItemViewHolderDelegate() =
63-
object : QuestionnaireItemViewHolderDelegate {
63+
object : QuestionnaireItemAndroidViewHolderDelegate {
6464
private lateinit var context: AppCompatActivity
6565
private lateinit var header: HeaderView
6666
private lateinit var textInputLayout: TextInputLayout

0 commit comments

Comments
 (0)