Skip to content

Commit 8033a3d

Browse files
authored
Merge pull request #289 from braille-systems/release/1.2.1
Release/1.2.1
2 parents fc8e555 + 455268d commit 8033a3d

21 files changed

Lines changed: 136 additions & 91 deletions

File tree

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ android {
2626
applicationId "com.github.braillesystems.learnbraille"
2727
minSdkVersion 19
2828
targetSdkVersion 29
29-
versionCode 14
30-
versionName "1.2.0"
29+
versionCode 15
30+
versionName "1.2.1"
3131
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
3232
vectorDrawables.useSupportLibrary = true
3333
multiDexEnabled = true

app/src/main/java/com/github/braillesystems/learnbraille/ui/Messages.kt

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,39 @@ fun Fragment.dotsMode(mode: BrailleDotsViewMode): String =
2222
BrailleDotsViewMode.Reading -> getString(R.string.braille_dots_mode_reading)
2323
}
2424

25-
private val Context.dotsHintRules by lazyWithContext<Context, List<String>> {
25+
private val Context.dotsReadingHintRules by lazyWithContext<Context, List<String>> {
2626
listOf(
27-
getString(R.string.input_dots_hint_1),
28-
getString(R.string.input_dots_hint_2),
29-
getString(R.string.input_dots_hint_3),
30-
getString(R.string.input_dots_hint_4),
31-
getString(R.string.input_dots_hint_5),
32-
getString(R.string.input_dots_hint_6)
27+
getString(R.string.input_dots_reading_hint_1),
28+
getString(R.string.input_dots_reading_hint_2),
29+
getString(R.string.input_dots_reading_hint_3),
30+
getString(R.string.input_dots_reading_hint_4),
31+
getString(R.string.input_dots_reading_hint_5),
32+
getString(R.string.input_dots_reading_hint_6)
3333
)
3434
}
3535

36-
fun Fragment.showHintDotsToast(expectedDots: BrailleDots) {
36+
private val Context.dotsWritingHintRules by lazyWithContext<Context, List<String>> {
37+
listOf(
38+
getString(R.string.input_dots_writing_hint_1),
39+
getString(R.string.input_dots_writing_hint_2),
40+
getString(R.string.input_dots_writing_hint_3),
41+
getString(R.string.input_dots_writing_hint_4),
42+
getString(R.string.input_dots_writing_hint_5),
43+
getString(R.string.input_dots_writing_hint_6)
44+
)
45+
}
46+
47+
fun Fragment.showHintDotsToast(expectedDots: BrailleDots, mode: BrailleDotsViewMode) {
3748
val template = getString(R.string.input_dots_hint_template)
3849
val hint = expectedDots
3950
.filled
4051
.joinToString(separator = ", ") {
41-
contextNotNull.dotsHintRules[it - 1]
52+
contextNotNull.run {
53+
when (mode) {
54+
BrailleDotsViewMode.Reading -> dotsReadingHintRules[it - 1]
55+
BrailleDotsViewMode.Writing -> dotsWritingHintRules[it - 1]
56+
}
57+
}
4258
}
4359
checkedToast(template.format(hint))
4460
}

app/src/main/java/com/github/braillesystems/learnbraille/ui/screens/browser/MarkerViewFragment.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import com.github.braillesystems.learnbraille.data.entities.MarkerSymbol
1111
import com.github.braillesystems.learnbraille.data.entities.Material
1212
import com.github.braillesystems.learnbraille.databinding.FragmentMarkerViewBinding
1313
import com.github.braillesystems.learnbraille.res.showMarkerPrintRules
14-
import com.github.braillesystems.learnbraille.ui.dotsMode
1514
import com.github.braillesystems.learnbraille.ui.screens.AbstractFragmentWithHelp
1615
import com.github.braillesystems.learnbraille.ui.screens.BrailleDotsInfo
1716
import com.github.braillesystems.learnbraille.ui.screens.FragmentBinding
@@ -47,12 +46,9 @@ class MarkerViewFragment : AbstractFragmentWithHelp(R.string.browser_marker_view
4746
val text = showMarkerPrintRules.getValue(m.data.type)
4847
infoTextView.text = text
4948
checkedAnnounce(text)
50-
5149
brailleDots.dotsState.display(m.data.brailleDots)
52-
checkedToast(dotsMode(brailleDots.mode))
5350
flipButton.setOnClickListener {
5451
brailleDots.reflect().display(m.data.brailleDots)
55-
checkedToast(dotsMode(brailleDots.mode))
5652
}
5753

5854
}.root

app/src/main/java/com/github/braillesystems/learnbraille/ui/screens/browser/SymbolViewFragment.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,8 @@ class SymbolViewFragment : AbstractFragmentWithHelp(R.string.browser_symbol_view
4848
checkedAnnounce(showPrint(m.data))
4949

5050
brailleDots.dotsState.display(m.data.brailleDots)
51-
checkedToast(dotsMode(brailleDots.mode))
5251
flipButton.setOnClickListener {
5352
brailleDots.reflect().display(m.data.brailleDots)
54-
checkedToast(dotsMode(brailleDots.mode))
5553
}
5654

5755
}.root

app/src/main/java/com/github/braillesystems/learnbraille/ui/screens/practice/CardFragment.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ class CardFragment : AbstractFragmentWithHelp(R.string.practice_help) {
8686
binding.flipButton.setOnClickListener {
8787
dotsState = binding.brailleDots.reflect().apply {
8888
dotsState.subscribe(viewModel)
89-
checkedToast(dotsMode(binding.brailleDots.mode))
9089
if (viewModel.state == DotsChecker.State.HINT) {
9190
viewModel.expectedDots?.let { display(it) }
9291
}
@@ -158,10 +157,7 @@ class CardFragment : AbstractFragmentWithHelp(R.string.practice_help) {
158157
getString(R.string.practice_deck_name_disabled_template)
159158
}
160159
toast(
161-
template.format(
162-
deckTagToName.getValue(tag),
163-
dotsMode(binding.brailleDots.mode)
164-
)
160+
template.format(deckTagToName.getValue(tag))
165161
)
166162
}
167163
)

app/src/main/java/com/github/braillesystems/learnbraille/ui/screens/theory/steps/AbstractStepFragment.kt

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import android.widget.TextView
99
import com.github.braillesystems.learnbraille.COURSE
1010
import com.github.braillesystems.learnbraille.R
1111
import com.github.braillesystems.learnbraille.data.entities.Step
12-
import com.github.braillesystems.learnbraille.ui.dotsMode
1312
import com.github.braillesystems.learnbraille.ui.screens.AbstractFragmentWithHelp
1413
import com.github.braillesystems.learnbraille.ui.screens.BrailleDotsInfo
1514
import com.github.braillesystems.learnbraille.ui.screens.FragmentBinding
@@ -18,7 +17,7 @@ import com.github.braillesystems.learnbraille.ui.screens.theory.getStepArg
1817
import com.github.braillesystems.learnbraille.ui.screens.theory.toCurrentStep
1918
import com.github.braillesystems.learnbraille.ui.screens.theory.toNextStep
2019
import com.github.braillesystems.learnbraille.ui.screens.theory.toPrevStep
21-
import com.github.braillesystems.learnbraille.utils.checkedToast
20+
import com.github.braillesystems.learnbraille.utils.checkedAnnounce
2221
import com.github.braillesystems.learnbraille.utils.navigate
2322
import com.github.braillesystems.learnbraille.utils.title
2423

@@ -83,12 +82,6 @@ abstract class AbstractStepFragment(helpMsgId: HelpMsgId) : AbstractFragmentWith
8382

8483
protected open fun iniStepHelper() = Unit
8584

86-
protected fun toastDotsMode() {
87-
binding.brailleDotsInfo?.view?.mode?.let {
88-
checkedToast(dotsMode(it))
89-
}
90-
}
91-
9285
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
9386
inflater.inflate(
9487
if (preferenceRepository.extendedAccessibilityEnabled) R.menu.steps_menu_hide

app/src/main/java/com/github/braillesystems/learnbraille/ui/screens/theory/steps/input/AbstractInputStepFragment.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import android.view.View
55
import androidx.core.content.getSystemService
66
import androidx.lifecycle.ViewModelProvider
77
import com.github.braillesystems.learnbraille.data.entities.BaseInput
8+
import com.github.braillesystems.learnbraille.data.entities.BrailleDots
89
import com.github.braillesystems.learnbraille.data.entities.StepData
910
import com.github.braillesystems.learnbraille.ui.screens.*
1011
import com.github.braillesystems.learnbraille.ui.screens.theory.steps.AbstractStepFragment
@@ -51,14 +52,12 @@ abstract class AbstractInputStepFragment(helpMsgId: HelpMsgId) : AbstractStepFra
5152

5253
val buzzer: Vibrator? = activity?.getSystemService()
5354

54-
toastDotsMode()
5555
stepBinding.flipButton?.setOnClickListener {
5656
dotsState = stepBinding.brailleDotsInfo!!.view.reflect().apply {
5757
subscribe(View.OnClickListener {
5858
viewModel.onSoftCheck()
5959
userTouchedDots = true
6060
})
61-
toastDotsMode()
6261
if (viewModel.state == DotsChecker.State.HINT) {
6362
display(expectedDots)
6463
}
@@ -74,7 +73,7 @@ abstract class AbstractInputStepFragment(helpMsgId: HelpMsgId) : AbstractStepFra
7473
viewModel.observeEventHint(
7574
viewLifecycleOwner, { dotsState }
7675
) {
77-
showHintToast(expectedDots)
76+
toastHint(expectedDots)
7877
userTouchedDots = true
7978
}
8079

@@ -107,5 +106,9 @@ abstract class AbstractInputStepFragment(helpMsgId: HelpMsgId) : AbstractStepFra
107106
showIncorrectToast()
108107
}
109108

109+
protected open fun toastHint(expectedDots: BrailleDots) {
110+
showHintToast(expectedDots)
111+
}
112+
110113
protected open fun onPassHint(data: StepData) = Unit
111114
}

app/src/main/java/com/github/braillesystems/learnbraille/ui/screens/theory/steps/input/InputDotsFragment.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ import android.widget.TextView
88
import androidx.core.text.parseAsHtml
99
import androidx.databinding.DataBindingUtil
1010
import com.github.braillesystems.learnbraille.R
11+
import com.github.braillesystems.learnbraille.data.entities.BrailleDots
1112
import com.github.braillesystems.learnbraille.data.entities.InputDots
1213
import com.github.braillesystems.learnbraille.data.entities.spelling
1314
import com.github.braillesystems.learnbraille.databinding.FragmentLessonsInputDotsBinding
1415
import com.github.braillesystems.learnbraille.ui.screens.BrailleDotsInfo
1516
import com.github.braillesystems.learnbraille.ui.screens.theory.steps.StepBinding
17+
import com.github.braillesystems.learnbraille.ui.showHintDotsToast
1618
import com.github.braillesystems.learnbraille.ui.views.BrailleDotsViewMode
1719
import com.github.braillesystems.learnbraille.utils.checkedAnnounce
1820
import com.github.braillesystems.learnbraille.utils.removeHtmlMarkup
@@ -59,4 +61,12 @@ class InputDotsFragment : AbstractInputStepFragment(R.string.lessons_help_input_
5961
lifecycleOwner = this@InputDotsFragment
6062

6163
}.root
64+
65+
override fun toastHint(expectedDots: BrailleDots) {
66+
showHintDotsToast(
67+
expectedDots,
68+
stepBinding.brailleDotsInfo?.view?.mode
69+
?: error("Input dots step should have dots")
70+
)
71+
}
6272
}

app/src/main/java/com/github/braillesystems/learnbraille/ui/screens/theory/steps/show/AbstractShowStepFragment.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,8 @@ abstract class AbstractShowStepFragment(helpMsgId: HelpMsgId) : AbstractStepFrag
1313
require(data is BaseShow)
1414
stepBinding.brailleDotsInfo?.view?.dotsState?.display(data.brailleDots)
1515
?: error("Show step should have braille dots")
16-
toastDotsMode()
1716
stepBinding.flipButton?.setOnClickListener {
1817
stepBinding.brailleDotsInfo?.view?.reflect()?.display(data.brailleDots)
19-
toastDotsMode()
2018
}
2119
}
2220
}

app/src/main/java/com/github/braillesystems/learnbraille/ui/views/BrailleDotsView.kt

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@ import com.github.braillesystems.learnbraille.data.entities.spelling
1818
import com.github.braillesystems.learnbraille.data.repository.PreferenceRepository
1919
import com.github.braillesystems.learnbraille.ui.views.BrailleDotsViewMode.Reading
2020
import com.github.braillesystems.learnbraille.ui.views.BrailleDotsViewMode.Writing
21-
import com.github.braillesystems.learnbraille.utils.chainify
22-
import com.github.braillesystems.learnbraille.utils.forEach
23-
import com.github.braillesystems.learnbraille.utils.unreachable
21+
import com.github.braillesystems.learnbraille.utils.*
2422
import kotlinx.android.synthetic.main.braille_dots_view.view.*
2523
import org.koin.core.KoinComponent
2624
import org.koin.core.inject
@@ -108,6 +106,13 @@ class BrailleDotsView : ConstraintLayout, KoinComponent {
108106
Timber.w("API level < 22, unable co control accessibility traversal order")
109107
}
110108

109+
context.announce(
110+
when (mode) {
111+
Writing -> context.getString(R.string.braille_dots_mode_writing)
112+
Reading -> context.getString(R.string.braille_dots_mode_reading)
113+
}
114+
)
115+
111116
this.mode = mode
112117
}
113118

@@ -117,27 +122,27 @@ class BrailleDotsView : ConstraintLayout, KoinComponent {
117122
}
118123

119124
private fun setDescriptionMode(mode: BrailleDotsViewMode) {
120-
when (mode) {
121-
Writing -> forEach(
122-
dotButton4 to R.string.braille_dot_1,
123-
dotButton5 to R.string.braille_dot_2,
124-
dotButton6 to R.string.braille_dot_3,
125-
dotButton1 to R.string.braille_dot_4,
126-
dotButton2 to R.string.braille_dot_5,
127-
dotButton3 to R.string.braille_dot_6
128-
) { (dotButton, id) ->
129-
dotButton.contentDescription = context.getString(id)
130-
}
131-
Reading -> forEach(
132-
dotButton1 to R.string.braille_dot_1,
133-
dotButton2 to R.string.braille_dot_2,
134-
dotButton3 to R.string.braille_dot_3,
135-
dotButton4 to R.string.braille_dot_4,
136-
dotButton5 to R.string.braille_dot_5,
137-
dotButton6 to R.string.braille_dot_6
138-
) { (dotButton, id) ->
139-
dotButton.contentDescription = context.getString(id)
140-
}
125+
val dotsMapping = when (mode) {
126+
Writing -> listOf(
127+
Triple(dotButton4, R.string.braille_dot_1, R.string.braille_dot_1_text),
128+
Triple(dotButton5, R.string.braille_dot_2, R.string.braille_dot_2_text),
129+
Triple(dotButton6, R.string.braille_dot_3, R.string.braille_dot_3_text),
130+
Triple(dotButton1, R.string.braille_dot_4, R.string.braille_dot_4_text),
131+
Triple(dotButton2, R.string.braille_dot_5, R.string.braille_dot_5_text),
132+
Triple(dotButton3, R.string.braille_dot_6, R.string.braille_dot_6_text)
133+
)
134+
Reading -> listOf(
135+
Triple(dotButton1, R.string.braille_dot_1, R.string.braille_dot_1_text),
136+
Triple(dotButton2, R.string.braille_dot_2, R.string.braille_dot_2_text),
137+
Triple(dotButton3, R.string.braille_dot_3, R.string.braille_dot_3_text),
138+
Triple(dotButton4, R.string.braille_dot_4, R.string.braille_dot_4_text),
139+
Triple(dotButton5, R.string.braille_dot_5, R.string.braille_dot_5_text),
140+
Triple(dotButton6, R.string.braille_dot_6, R.string.braille_dot_6_text)
141+
)
142+
}
143+
dotsMapping.forEach { (dotButton, desc_id, caption_id) ->
144+
dotButton.contentDescription = context.getString(desc_id)
145+
dotButton.text = context.getString(caption_id)
141146
}
142147
}
143148

0 commit comments

Comments
 (0)