Skip to content

Commit bd1a35d

Browse files
committed
Factored out WidgetAnswerTextView
1 parent 38b35bc commit bd1a35d

File tree

12 files changed

+37
-19
lines changed

12 files changed

+37
-19
lines changed

collect_app/src/main/java/org/odk/collect/android/injection/config/AppDependencyComponent.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
import org.odk.collect.android.utilities.SavepointsRepositoryProvider;
7676
import org.odk.collect.android.utilities.ThemeUtils;
7777
import org.odk.collect.android.widgets.QuestionWidget;
78+
import org.odk.collect.android.widgets.WidgetAnswerTextView;
7879
import org.odk.collect.android.widgets.items.SelectOneFromMapDialogFragment;
7980
import org.odk.collect.async.Scheduler;
8081
import org.odk.collect.async.network.NetworkStateProvider;
@@ -257,6 +258,8 @@ interface Builder {
257258

258259
void inject(FormHierarchyFragmentHostActivity formHierarchyFragmentHostActivity);
259260

261+
void inject(WidgetAnswerTextView widgetAnswerText);
262+
260263
OpenRosaHttpInterface openRosaHttpInterface();
261264

262265
ReferenceManager referenceManager();

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ class ArbitraryFileWidget(
5151
} else {
5252
binding.answerViewContainer.visibility = GONE
5353
}
54-
widgetAnswer.setTextSize(answerFontSize.toFloat())
5554
binding.answerViewContainer.addView(widgetAnswer)
5655

5756
return binding.root

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.odk.collect.android.widgets
22

33
import android.content.Context
4-
import android.util.TypedValue
54
import android.view.LayoutInflater
65
import org.odk.collect.android.databinding.ArbitraryFileWidgetAnswerBinding
76

@@ -15,8 +14,4 @@ class ArbitraryFileWidgetAnswer(context: Context) : WidgetAnswer(context) {
1514
override fun getAnswer(): String {
1615
return binding.answer.text.toString()
1716
}
18-
19-
override fun setTextSize(textSize: Float) {
20-
binding.answer.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize)
21-
}
2217
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ class BarcodeWidget(
4949
binding.barcodeButton.text = getContext().getString(R.string.replace_barcode)
5050
}
5151
widgetAnswer.setAnswer(answer)
52-
widgetAnswer.setTextSize(answerFontSize.toFloat())
5352
binding.answerViewContainer.addView(widgetAnswer)
5453
updateAnswerVisibility()
5554

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.odk.collect.android.widgets
22

33
import android.content.Context
4-
import android.util.TypedValue
54
import android.view.LayoutInflater
65
import org.odk.collect.android.databinding.BarcodeWidgetAnswerBinding
76

@@ -16,10 +15,6 @@ class BarcodeWidgetAnswer(context: Context) : WidgetAnswer(context) {
1615
return binding.answer.text.toString()
1716
}
1817

19-
override fun setTextSize(textSize: Float) {
20-
binding.answer.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize)
21-
}
22-
2318
// Remove control characters, invisible characters and unused code points.
2419
private fun stripInvalidCharacters(data: String?): String? {
2520
return data?.replace("\\p{C}".toRegex(), "")

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ class ExArbitraryFileWidget(
5454
} else {
5555
binding.answerViewContainer.visibility = GONE
5656
}
57-
widgetAnswer.setTextSize(answerFontSize.toFloat())
5857
binding.answerViewContainer.addView(widgetAnswer)
5958

6059
return binding.root

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,4 @@ abstract class WidgetAnswer(context: Context) : FrameLayout(context) {
77
abstract fun setAnswer(answer: String?)
88

99
abstract fun getAnswer(): String
10-
11-
abstract fun setTextSize(textSize: Float)
1210
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package org.odk.collect.android.widgets
2+
3+
import android.content.Context
4+
import android.util.AttributeSet
5+
import android.util.TypedValue
6+
import com.google.android.material.textview.MaterialTextView
7+
import org.odk.collect.android.R
8+
import org.odk.collect.android.injection.DaggerUtils
9+
import org.odk.collect.android.widgets.utilities.QuestionFontSizeUtils
10+
import org.odk.collect.settings.SettingsProvider
11+
import javax.inject.Inject
12+
13+
class WidgetAnswerTextView @JvmOverloads constructor(
14+
context: Context,
15+
attrs: AttributeSet? = null
16+
) : MaterialTextView(context, attrs, R.attr.widgetAnswerTextViewStyle) {
17+
18+
@Inject
19+
lateinit var settingsProvider: SettingsProvider
20+
21+
init {
22+
DaggerUtils.getComponent(context).inject(this)
23+
24+
val textSize = QuestionFontSizeUtils.getFontSize(
25+
settingsProvider.getUnprotectedSettings(),
26+
QuestionFontSizeUtils.FontSize.HEADLINE_6
27+
)
28+
setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize.toFloat())
29+
}
30+
}

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@
1515
app:layout_constraintBottom_toBottomOf="@id/answer"
1616
app:layout_constraintStart_toStartOf="parent" />
1717

18-
<com.google.android.material.textview.MaterialTextView
18+
<org.odk.collect.android.widgets.WidgetAnswerTextView
1919
android:id="@+id/answer"
20-
style="@style/Widget.Collect.TextView.WidgetAnswer"
2120
android:layout_width="wrap_content"
2221
android:layout_height="wrap_content"
2322
app:layout_constraintTop_toTopOf="parent"

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@
1515
app:layout_constraintBottom_toBottomOf="@id/answer"
1616
app:layout_constraintStart_toStartOf="parent" />
1717

18-
<com.google.android.material.textview.MaterialTextView
18+
<org.odk.collect.android.widgets.WidgetAnswerTextView
1919
android:id="@+id/answer"
20-
style="@style/Widget.Collect.TextView.WidgetAnswer"
2120
android:layout_width="wrap_content"
2221
android:layout_height="wrap_content"
2322
app:layout_constraintTop_toTopOf="parent"

collect_app/src/main/res/values/attrs.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,6 @@
1919

2020
<declare-styleable name="CollectCustomAttributes">
2121
<attr name="widgetButtonIconQuestionWidgetStyle" format="reference" />
22+
<attr name="widgetAnswerTextViewStyle" format="reference" />
2223
</declare-styleable>
2324
</resources>

collect_app/src/main/res/values/theme.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@
104104

105105
<!-- Custom style for buttons used in question widgets -->
106106
<item name="widgetButtonIconQuestionWidgetStyle">@style/Widget.Collect.Button.Icon.QuestionWidget</item>
107+
<item name="widgetAnswerTextViewStyle">@style/Widget.Collect.TextView.WidgetAnswer</item>
107108

108109
<!-- Custom theme text appearance for larger buttons -->
109110
<item name="textAppearanceLabelExtraLarge">@style/TextAppearance.Collect.LabelExtraLarge</item>

0 commit comments

Comments
 (0)