Skip to content

Commit eb716ce

Browse files
committed
Extract shared TextWidgetAnswer
1 parent 7e1d2f8 commit eb716ce

File tree

3 files changed

+33
-78
lines changed

3 files changed

+33
-78
lines changed
Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,51 @@
1-
package org.odk.collect.android.widgets.arbitraryfile
1+
package org.odk.collect.android.widgets
22

33
import androidx.compose.foundation.combinedClickable
44
import androidx.compose.foundation.layout.Arrangement
55
import androidx.compose.foundation.layout.Row
66
import androidx.compose.foundation.layout.Spacer
77
import androidx.compose.foundation.layout.fillMaxWidth
88
import androidx.compose.foundation.layout.width
9-
import androidx.compose.material.icons.Icons
10-
import androidx.compose.material.icons.filled.AttachFile
119
import androidx.compose.material3.Icon
1210
import androidx.compose.material3.MaterialTheme
1311
import androidx.compose.material3.Text
1412
import androidx.compose.runtime.Composable
1513
import androidx.compose.ui.Alignment
1614
import androidx.compose.ui.Modifier
17-
import androidx.compose.ui.platform.LocalContext
15+
import androidx.compose.ui.graphics.vector.ImageVector
1816
import androidx.compose.ui.res.dimensionResource
19-
import androidx.compose.ui.res.stringResource
2017
import androidx.compose.ui.text.TextStyle
2118
import androidx.compose.ui.unit.sp
22-
import androidx.lifecycle.ViewModelProvider
2319
import org.odk.collect.androidshared.R.dimen
2420
import org.odk.collect.androidshared.ui.multiclicksafe.MultiClickGuard
25-
import org.odk.collect.strings.R
2621

2722
@Composable
28-
fun ArbitraryFileWidgetAnswer(
23+
fun TextWidgetAnswer(
2924
modifier: Modifier,
25+
icon: ImageVector,
3026
answer: String,
3127
fontSize: Int,
32-
viewModelProvider: ViewModelProvider,
33-
onLongClick: () -> Unit
28+
onLongClick: () -> Unit,
29+
onClickLabel: String? = null,
30+
onClick: () -> Unit = {}
3431
) {
35-
val context = LocalContext.current
36-
val viewModel = viewModelProvider[ArbitraryFileWidgetAnswerViewModel::class]
37-
3832
Row(
3933
modifier = modifier
4034
.fillMaxWidth()
4135
.combinedClickable(
4236
onClick = {
4337
if (MultiClickGuard.allowClick()) {
44-
viewModel.openFile(context, answer)
38+
onClick()
4539
}
4640
},
4741
onLongClick = onLongClick,
48-
onClickLabel = stringResource(R.string.open_file)
42+
onClickLabel = onClickLabel
4943
),
5044
verticalAlignment = Alignment.CenterVertically,
5145
horizontalArrangement = Arrangement.Center
5246
) {
5347
Icon(
54-
imageVector = Icons.Default.AttachFile,
48+
imageVector = icon,
5549
contentDescription = null,
5650
tint = MaterialTheme.colorScheme.onSurface
5751
)

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

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
package org.odk.collect.android.widgets
22

3+
import androidx.compose.material.icons.Icons
4+
import androidx.compose.material.icons.filled.AttachFile
35
import androidx.compose.runtime.Composable
46
import androidx.compose.ui.Modifier
7+
import androidx.compose.ui.graphics.vector.ImageVector
8+
import androidx.compose.ui.platform.LocalContext
9+
import androidx.compose.ui.res.stringResource
10+
import androidx.compose.ui.res.vectorResource
511
import androidx.lifecycle.ViewModelProvider
612
import org.javarosa.core.model.Constants
713
import org.javarosa.form.api.FormEntryPrompt
8-
import org.odk.collect.android.widgets.arbitraryfile.ArbitraryFileWidgetAnswer
9-
import org.odk.collect.android.widgets.barcode.BarcodeWidgetAnswer
14+
import org.odk.collect.android.widgets.arbitraryfile.ArbitraryFileWidgetAnswerViewModel
1015
import org.odk.collect.android.widgets.video.VideoWidgetAnswer
16+
import org.odk.collect.icons.R
1117

1218
@Composable
1319
fun WidgetAnswer(
@@ -22,22 +28,29 @@ fun WidgetAnswer(
2228
when (prompt.controlType) {
2329
Constants.CONTROL_INPUT -> {
2430
when (prompt.dataType) {
25-
Constants.DATATYPE_BARCODE -> BarcodeWidgetAnswer(
31+
Constants.DATATYPE_BARCODE -> TextWidgetAnswer(
2632
modifier,
33+
ImageVector.vectorResource(R.drawable.ic_baseline_barcode_scanner_white_24),
2734
answer,
2835
fontSize,
2936
onLongClick
3037
)
3138
}
3239
}
3340
Constants.CONTROL_VIDEO_CAPTURE -> VideoWidgetAnswer(modifier, answer, viewModelProvider!!, onLongClick)
34-
Constants.CONTROL_FILE_CAPTURE -> ArbitraryFileWidgetAnswer(
35-
modifier,
36-
answer,
37-
fontSize,
38-
viewModelProvider!!,
39-
onLongClick
40-
)
41+
Constants.CONTROL_FILE_CAPTURE -> {
42+
val context = LocalContext.current
43+
val viewModel = viewModelProvider!![ArbitraryFileWidgetAnswerViewModel::class]
44+
45+
TextWidgetAnswer(
46+
modifier,
47+
Icons.Default.AttachFile,
48+
answer,
49+
fontSize,
50+
onLongClick,
51+
stringResource(org.odk.collect.strings.R.string.open_file)
52+
) { viewModel.openFile(context, answer) }
53+
}
4154
else -> throw IllegalArgumentException("Unsupported control type: ${prompt.controlType}")
4255
}
4356
}

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

Lines changed: 0 additions & 52 deletions
This file was deleted.

0 commit comments

Comments
 (0)