mirror of
https://github.com/pepaskopec-blip/Graduately.git
synced 2026-10-27 15:14:35 +00:00
Add Czech literature lessons across four secondary-school years.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
16903b99cb
commit
09312d8c93
31 changed files with 4395 additions and 35 deletions
|
|
@ -146,6 +146,26 @@ class AppViewModel(app: Application) : AndroidViewModel(app) {
|
|||
refresh()
|
||||
}
|
||||
|
||||
fun markLit(id: Int) {
|
||||
progress.markLit(id)
|
||||
refresh()
|
||||
}
|
||||
|
||||
fun markLit2(id: Int) {
|
||||
progress.markLit2(id)
|
||||
refresh()
|
||||
}
|
||||
|
||||
fun markLit3(id: Int) {
|
||||
progress.markLit3(id)
|
||||
refresh()
|
||||
}
|
||||
|
||||
fun markLit4(id: Int) {
|
||||
progress.markLit4(id)
|
||||
refresh()
|
||||
}
|
||||
|
||||
fun markMluv(n: Int) {
|
||||
progress.markMluv(n)
|
||||
refresh()
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ import org.maturita.maturita.ui.HomeScreen
|
|||
import org.maturita.maturita.ui.HwQuizScreen
|
||||
import org.maturita.maturita.ui.HwYearsScreen
|
||||
import org.maturita.maturita.ui.LessonListScreen
|
||||
import org.maturita.maturita.ui.LitYearsScreen
|
||||
import org.maturita.maturita.ui.LessonRow
|
||||
import org.maturita.maturita.ui.LitQuizScreen
|
||||
import org.maturita.maturita.ui.MluvExercise
|
||||
|
|
@ -288,6 +289,63 @@ private fun MaturitaAppBody(vm: AppViewModel) {
|
|||
}
|
||||
}
|
||||
is Route.On4Ex -> On4QuizScreen(vm, r.id)
|
||||
Route.LitYears -> LitYearsScreen(vm)
|
||||
Route.LitMap -> LessonListScreen(
|
||||
vm, vm.tr("lit_year1"), vm.tr("lit_sub"),
|
||||
vm.content.lit.map { l ->
|
||||
val id = l.int("id")
|
||||
LessonRow(vm.tr(l.str("titleKey")), vm.progress.litDone(id), Route.LitLesson(id))
|
||||
},
|
||||
)
|
||||
is Route.LitLesson -> {
|
||||
val l = vm.content.litLesson(r.id)
|
||||
if (l != null) SlidesScreen(vm, vm.tr(l.str("titleKey")), vm.tr(l.str("subKey")), l.arr("slides")) {
|
||||
vm.replace(Route.LitEx(r.id))
|
||||
}
|
||||
}
|
||||
is Route.LitEx -> LitQuizScreen(vm, 1, r.id)
|
||||
Route.Lit2Map -> LessonListScreen(
|
||||
vm, vm.tr("lit_year2"), vm.tr("lit2_sub"),
|
||||
vm.content.lit2.map { l ->
|
||||
val id = l.int("id")
|
||||
LessonRow(vm.tr(l.str("titleKey")), vm.progress.lit2Done(id), Route.Lit2Lesson(id))
|
||||
},
|
||||
)
|
||||
is Route.Lit2Lesson -> {
|
||||
val l = vm.content.lit2Lesson(r.id)
|
||||
if (l != null) SlidesScreen(vm, vm.tr(l.str("titleKey")), vm.tr(l.str("subKey")), l.arr("slides")) {
|
||||
vm.replace(Route.Lit2Ex(r.id))
|
||||
}
|
||||
}
|
||||
is Route.Lit2Ex -> LitQuizScreen(vm, 2, r.id)
|
||||
Route.Lit3Map -> LessonListScreen(
|
||||
vm, vm.tr("lit_year3"), vm.tr("lit3_sub"),
|
||||
vm.content.lit3.map { l ->
|
||||
val id = l.int("id")
|
||||
LessonRow(vm.tr(l.str("titleKey")), vm.progress.lit3Done(id), Route.Lit3Lesson(id))
|
||||
},
|
||||
)
|
||||
is Route.Lit3Lesson -> {
|
||||
val l = vm.content.lit3Lesson(r.id)
|
||||
if (l != null) SlidesScreen(vm, vm.tr(l.str("titleKey")), vm.tr(l.str("subKey")), l.arr("slides")) {
|
||||
vm.replace(Route.Lit3Ex(r.id))
|
||||
}
|
||||
}
|
||||
is Route.Lit3Ex -> LitQuizScreen(vm, 3, r.id)
|
||||
Route.Lit4Map -> LessonListScreen(
|
||||
vm, vm.tr("lit_year4"), vm.tr("lit4_sub"),
|
||||
vm.content.lit4.map { l ->
|
||||
val id = l.int("id")
|
||||
LessonRow(vm.tr(l.str("titleKey")), vm.progress.lit4Done(id), Route.Lit4Lesson(id))
|
||||
},
|
||||
)
|
||||
is Route.Lit4Lesson -> {
|
||||
val l = vm.content.lit4Lesson(r.id)
|
||||
if (l != null) SlidesScreen(vm, vm.tr(l.str("titleKey")), vm.tr(l.str("subKey")), l.arr("slides")) {
|
||||
vm.replace(Route.Lit4Ex(r.id))
|
||||
}
|
||||
}
|
||||
is Route.Lit4Ex -> LitQuizScreen(vm, 4, r.id)
|
||||
Route.CzechMap -> CzechMapScreen(vm)
|
||||
Route.Mluvnice -> LessonListScreen(
|
||||
vm, vm.tr("Mluvnice"), vm.tr("mluv_sub"),
|
||||
|
|
|
|||
|
|
@ -30,6 +30,19 @@ sealed class Route(val page: String) {
|
|||
data object On4Map : Route("on4map")
|
||||
data class On4Lesson(val id: Int) : Route("on4unit$id")
|
||||
data class On4Ex(val id: Int) : Route("on4ex$id")
|
||||
data object LitYears : Route("lityears")
|
||||
data object LitMap : Route("litmap")
|
||||
data class LitLesson(val id: Int) : Route("litunit$id")
|
||||
data class LitEx(val id: Int) : Route("litex$id")
|
||||
data object Lit2Map : Route("lit2map")
|
||||
data class Lit2Lesson(val id: Int) : Route("lit2unit$id")
|
||||
data class Lit2Ex(val id: Int) : Route("lit2ex$id")
|
||||
data object Lit3Map : Route("lit3map")
|
||||
data class Lit3Lesson(val id: Int) : Route("lit3unit$id")
|
||||
data class Lit3Ex(val id: Int) : Route("lit3ex$id")
|
||||
data object Lit4Map : Route("lit4map")
|
||||
data class Lit4Lesson(val id: Int) : Route("lit4unit$id")
|
||||
data class Lit4Ex(val id: Int) : Route("lit4ex$id")
|
||||
data object CzechMap : Route("czechmap")
|
||||
data object Mluvnice : Route("mluvnice")
|
||||
data class MluvEx(val n: Int) : Route("mluve$n")
|
||||
|
|
@ -45,7 +58,9 @@ sealed class Route(val page: String) {
|
|||
val isExercise: Boolean
|
||||
get() = this is GermanEx || this is Vocab || this is NetEx || this is HwEx ||
|
||||
this is OnEx || this is On2Ex || this is On3Ex || this is On4Ex || this is MluvEx || this is BookQuiz || this is BookPlot ||
|
||||
this is NetLesson || this is HwLesson || this is OnLesson || this is On2Lesson || this is On3Lesson || this is On4Lesson
|
||||
this is NetLesson || this is HwLesson || this is OnLesson || this is On2Lesson || this is On3Lesson || this is On4Lesson ||
|
||||
this is LitLesson || this is LitEx || this is Lit2Lesson || this is Lit2Ex ||
|
||||
this is Lit3Lesson || this is Lit3Ex || this is Lit4Lesson || this is Lit4Ex
|
||||
|
||||
/** Full stack from the practice root to this screen, so back always goes up one level. */
|
||||
fun stack(): List<Route> = when (this) {
|
||||
|
|
@ -77,6 +92,19 @@ sealed class Route(val page: String) {
|
|||
On4Map -> listOf(Subjects, OnYears, On4Map)
|
||||
is On4Lesson -> listOf(Subjects, OnYears, On4Map, this)
|
||||
is On4Ex -> listOf(Subjects, OnYears, On4Map, On4Lesson(id), this)
|
||||
LitYears -> listOf(Subjects, CzechMap, LitYears)
|
||||
LitMap -> listOf(Subjects, CzechMap, LitYears, LitMap)
|
||||
is LitLesson -> listOf(Subjects, CzechMap, LitYears, LitMap, this)
|
||||
is LitEx -> listOf(Subjects, CzechMap, LitYears, LitMap, LitLesson(id), this)
|
||||
Lit2Map -> listOf(Subjects, CzechMap, LitYears, Lit2Map)
|
||||
is Lit2Lesson -> listOf(Subjects, CzechMap, LitYears, Lit2Map, this)
|
||||
is Lit2Ex -> listOf(Subjects, CzechMap, LitYears, Lit2Map, Lit2Lesson(id), this)
|
||||
Lit3Map -> listOf(Subjects, CzechMap, LitYears, Lit3Map)
|
||||
is Lit3Lesson -> listOf(Subjects, CzechMap, LitYears, Lit3Map, this)
|
||||
is Lit3Ex -> listOf(Subjects, CzechMap, LitYears, Lit3Map, Lit3Lesson(id), this)
|
||||
Lit4Map -> listOf(Subjects, CzechMap, LitYears, Lit4Map)
|
||||
is Lit4Lesson -> listOf(Subjects, CzechMap, LitYears, Lit4Map, this)
|
||||
is Lit4Ex -> listOf(Subjects, CzechMap, LitYears, Lit4Map, Lit4Lesson(id), this)
|
||||
CzechMap -> listOf(Subjects, CzechMap)
|
||||
Mluvnice -> listOf(Subjects, CzechMap, Mluvnice)
|
||||
is MluvEx -> listOf(Subjects, CzechMap, Mluvnice, this)
|
||||
|
|
@ -102,6 +130,11 @@ fun routeFromPage(page: String): Route? = when (page) {
|
|||
"on2map" -> Route.On2Map
|
||||
"on3map" -> Route.On3Map
|
||||
"on4map" -> Route.On4Map
|
||||
"lityears" -> Route.LitYears
|
||||
"litmap" -> Route.LitMap
|
||||
"lit2map" -> Route.Lit2Map
|
||||
"lit3map" -> Route.Lit3Map
|
||||
"lit4map" -> Route.Lit4Map
|
||||
"czechmap" -> Route.CzechMap
|
||||
"mluvnice" -> Route.Mluvnice
|
||||
"readinglist" -> Route.ReadingList
|
||||
|
|
@ -133,6 +166,30 @@ fun routeFromPage(page: String): Route? = when (page) {
|
|||
Regex("""hwex(\d+)""").matchEntire(page)?.let {
|
||||
return Route.HwEx(it.groupValues[1].toInt())
|
||||
}
|
||||
Regex("""lit4unit(\d+)""").matchEntire(page)?.let {
|
||||
return Route.Lit4Lesson(it.groupValues[1].toInt())
|
||||
}
|
||||
Regex("""lit4ex(\d+)""").matchEntire(page)?.let {
|
||||
return Route.Lit4Ex(it.groupValues[1].toInt())
|
||||
}
|
||||
Regex("""lit3unit(\d+)""").matchEntire(page)?.let {
|
||||
return Route.Lit3Lesson(it.groupValues[1].toInt())
|
||||
}
|
||||
Regex("""lit3ex(\d+)""").matchEntire(page)?.let {
|
||||
return Route.Lit3Ex(it.groupValues[1].toInt())
|
||||
}
|
||||
Regex("""lit2unit(\d+)""").matchEntire(page)?.let {
|
||||
return Route.Lit2Lesson(it.groupValues[1].toInt())
|
||||
}
|
||||
Regex("""lit2ex(\d+)""").matchEntire(page)?.let {
|
||||
return Route.Lit2Ex(it.groupValues[1].toInt())
|
||||
}
|
||||
Regex("""litunit(\d+)""").matchEntire(page)?.let {
|
||||
return Route.LitLesson(it.groupValues[1].toInt())
|
||||
}
|
||||
Regex("""litex(\d+)""").matchEntire(page)?.let {
|
||||
return Route.LitEx(it.groupValues[1].toInt())
|
||||
}
|
||||
Regex("""on4unit(\d+)""").matchEntire(page)?.let {
|
||||
return Route.On4Lesson(it.groupValues[1].toInt())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,6 +33,10 @@ class Content(root: JSONObject) {
|
|||
val on2 = raw.arr("on2")
|
||||
val on3 = raw.arr("on3")
|
||||
val on4 = raw.arr("on4")
|
||||
val lit = raw.arr("lit")
|
||||
val lit2 = raw.arr("lit2")
|
||||
val lit3 = raw.arr("lit3")
|
||||
val lit4 = raw.arr("lit4")
|
||||
val mluvnice = raw.arr("mluvnice")
|
||||
val books = raw.arr("books")
|
||||
val changelog = raw.arr("changelog")
|
||||
|
|
@ -44,6 +48,10 @@ class Content(root: JSONObject) {
|
|||
fun on2Lesson(id: Int) = on2.firstOrNull { it.int("id") == id }
|
||||
fun on3Lesson(id: Int) = on3.firstOrNull { it.int("id") == id }
|
||||
fun on4Lesson(id: Int) = on4.firstOrNull { it.int("id") == id }
|
||||
fun litLesson(id: Int) = lit.firstOrNull { it.int("id") == id }
|
||||
fun lit2Lesson(id: Int) = lit2.firstOrNull { it.int("id") == id }
|
||||
fun lit3Lesson(id: Int) = lit3.firstOrNull { it.int("id") == id }
|
||||
fun lit4Lesson(id: Int) = lit4.firstOrNull { it.int("id") == id }
|
||||
fun mluv(n: Int) = mluvnice.firstOrNull { it.int("id") == n }
|
||||
fun book(id: String) = books.firstOrNull { it.str("id") == id }
|
||||
|
||||
|
|
|
|||
|
|
@ -44,6 +44,15 @@ class ProgressStore(context: Context) {
|
|||
fun on4Done(id: Int) = prefs.getBoolean("on4.$id", false)
|
||||
fun markOn4(id: Int) { prefs.edit().putBoolean("on4.$id", true).apply() }
|
||||
|
||||
fun litDone(id: Int) = prefs.getBoolean("lit.$id", false)
|
||||
fun markLit(id: Int) { prefs.edit().putBoolean("lit.$id", true).apply() }
|
||||
fun lit2Done(id: Int) = prefs.getBoolean("lit2.$id", false)
|
||||
fun markLit2(id: Int) { prefs.edit().putBoolean("lit2.$id", true).apply() }
|
||||
fun lit3Done(id: Int) = prefs.getBoolean("lit3.$id", false)
|
||||
fun markLit3(id: Int) { prefs.edit().putBoolean("lit3.$id", true).apply() }
|
||||
fun lit4Done(id: Int) = prefs.getBoolean("lit4.$id", false)
|
||||
fun markLit4(id: Int) { prefs.edit().putBoolean("lit4.$id", true).apply() }
|
||||
|
||||
fun mluvDone(n: Int) = prefs.getBoolean("mluv.$n", false)
|
||||
fun markMluv(n: Int) { prefs.edit().putBoolean("mluv.$n", true).apply() }
|
||||
|
||||
|
|
@ -114,6 +123,38 @@ fun summarize(content: Content, p: ProgressStore): ProgressSum {
|
|||
sum.doneUnits += 1
|
||||
}
|
||||
}
|
||||
content.lit.forEach { l ->
|
||||
sum.totalEx += 1
|
||||
sum.openUnits += 1
|
||||
if (p.litDone(l.int("id"))) {
|
||||
sum.doneEx += 1
|
||||
sum.doneUnits += 1
|
||||
}
|
||||
}
|
||||
content.lit2.forEach { l ->
|
||||
sum.totalEx += 1
|
||||
sum.openUnits += 1
|
||||
if (p.lit2Done(l.int("id"))) {
|
||||
sum.doneEx += 1
|
||||
sum.doneUnits += 1
|
||||
}
|
||||
}
|
||||
content.lit3.forEach { l ->
|
||||
sum.totalEx += 1
|
||||
sum.openUnits += 1
|
||||
if (p.lit3Done(l.int("id"))) {
|
||||
sum.doneEx += 1
|
||||
sum.doneUnits += 1
|
||||
}
|
||||
}
|
||||
content.lit4.forEach { l ->
|
||||
sum.totalEx += 1
|
||||
sum.openUnits += 1
|
||||
if (p.lit4Done(l.int("id"))) {
|
||||
sum.doneEx += 1
|
||||
sum.doneUnits += 1
|
||||
}
|
||||
}
|
||||
sum.totalEx += content.mluvnice.size
|
||||
sum.openUnits += 1
|
||||
val md = content.mluvnice.count { p.mluvDone(it.int("id")) }
|
||||
|
|
|
|||
|
|
@ -146,6 +146,7 @@ private fun ChoiceEx(vm: AppViewModel, title: String, sub: String?, spec: J, onD
|
|||
if (revealed) {
|
||||
meanings.getOrNull(i)?.let { Meaning(vm.tr(it), true) }
|
||||
expls.getOrNull(i)?.let { Meaning(it, true) }
|
||||
q.strOrNull("expl")?.let { Meaning(it, true) }
|
||||
}
|
||||
Spacer(Modifier.height(12.dp))
|
||||
}
|
||||
|
|
@ -848,6 +849,30 @@ fun NetQuizScreen(vm: AppViewModel, id: Int) {
|
|||
DispatchExercise(vm, spec, vm.tr(lesson.str("exTitleKey"))) { vm.markNet(id) }
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun LitQuizScreen(vm: AppViewModel, year: Int, id: Int) {
|
||||
val lesson = when (year) {
|
||||
2 -> vm.content.lit2Lesson(id)
|
||||
3 -> vm.content.lit3Lesson(id)
|
||||
4 -> vm.content.lit4Lesson(id)
|
||||
else -> vm.content.litLesson(id)
|
||||
} ?: return
|
||||
val spec = J(org.json.JSONObject().apply {
|
||||
put("type", "choice")
|
||||
put("title", vm.tr(lesson.str("exTitleKey")))
|
||||
put("sub", lesson.str("quizHeadKey"))
|
||||
put("questions", lesson.o.optJSONArray("quiz"))
|
||||
})
|
||||
DispatchExercise(vm, spec, vm.tr(lesson.str("exTitleKey"))) {
|
||||
when (year) {
|
||||
2 -> vm.markLit2(id)
|
||||
3 -> vm.markLit3(id)
|
||||
4 -> vm.markLit4(id)
|
||||
else -> vm.markLit(id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun OnQuizScreen(vm: AppViewModel, id: Int) {
|
||||
val lesson = vm.content.onLesson(id) ?: return
|
||||
|
|
|
|||
|
|
@ -308,8 +308,13 @@ private fun subjectSum(vm: AppViewModel, s: J): ProgressSum {
|
|||
vm.content.on4.count { vm.progress.on4Done(it.int("id")) }
|
||||
}
|
||||
"czechmap" -> {
|
||||
sum.totalEx = vm.content.mluvnice.size
|
||||
sum.doneEx = vm.content.mluvnice.count { vm.progress.mluvDone(it.int("id")) }
|
||||
val litDone = vm.content.lit.count { vm.progress.litDone(it.int("id")) } +
|
||||
vm.content.lit2.count { vm.progress.lit2Done(it.int("id")) } +
|
||||
vm.content.lit3.count { vm.progress.lit3Done(it.int("id")) } +
|
||||
vm.content.lit4.count { vm.progress.lit4Done(it.int("id")) }
|
||||
sum.totalEx = vm.content.mluvnice.size + vm.content.lit.size + vm.content.lit2.size +
|
||||
vm.content.lit3.size + vm.content.lit4.size
|
||||
sum.doneEx = vm.content.mluvnice.count { vm.progress.mluvDone(it.int("id")) } + litDone
|
||||
}
|
||||
}
|
||||
return sum
|
||||
|
|
@ -514,6 +519,27 @@ private fun buildSearch(vm: AppViewModel): List<Hit> {
|
|||
add(vm.tr(l.str("titleKey")), vm.tr("search_lesson"), "on4unit${l.int("id")}", extra = "obcanka")
|
||||
add(vm.tr(l.str("titleKey")), vm.tr("search_exercise"), "on4ex${l.int("id")}")
|
||||
}
|
||||
add(vm.tr("Literatura"), vm.tr("search_lesson"), "lityears", extra = "literatura")
|
||||
add(vm.tr("lit_year1"), vm.tr("search_lesson"), "litmap", extra = "rocnik")
|
||||
add(vm.tr("lit_year2"), vm.tr("search_lesson"), "lit2map", extra = "rocnik")
|
||||
add(vm.tr("lit_year3"), vm.tr("search_lesson"), "lit3map", extra = "rocnik")
|
||||
add(vm.tr("lit_year4"), vm.tr("search_lesson"), "lit4map", extra = "rocnik")
|
||||
vm.content.lit.forEach { l ->
|
||||
add(vm.tr(l.str("titleKey")), vm.tr("search_lesson"), "litunit${l.int("id")}", extra = "literatura")
|
||||
add(vm.tr(l.str("titleKey")), vm.tr("search_exercise"), "litex${l.int("id")}")
|
||||
}
|
||||
vm.content.lit2.forEach { l ->
|
||||
add(vm.tr(l.str("titleKey")), vm.tr("search_lesson"), "lit2unit${l.int("id")}", extra = "literatura")
|
||||
add(vm.tr(l.str("titleKey")), vm.tr("search_exercise"), "lit2ex${l.int("id")}")
|
||||
}
|
||||
vm.content.lit3.forEach { l ->
|
||||
add(vm.tr(l.str("titleKey")), vm.tr("search_lesson"), "lit3unit${l.int("id")}", extra = "literatura")
|
||||
add(vm.tr(l.str("titleKey")), vm.tr("search_exercise"), "lit3ex${l.int("id")}")
|
||||
}
|
||||
vm.content.lit4.forEach { l ->
|
||||
add(vm.tr(l.str("titleKey")), vm.tr("search_lesson"), "lit4unit${l.int("id")}", extra = "literatura")
|
||||
add(vm.tr(l.str("titleKey")), vm.tr("search_exercise"), "lit4ex${l.int("id")}")
|
||||
}
|
||||
add(vm.tr("Mluvnice"), vm.tr("search_lesson"), "mluvnice")
|
||||
vm.content.mluvnice.forEach { m -> add(m.str("name"), vm.tr("Mluvnice"), "mluve${m.int("id")}") }
|
||||
add(vm.tr("Maturitní četba"), vm.tr("search_book"), "readinglist")
|
||||
|
|
@ -626,11 +652,27 @@ fun OnYearsScreen(vm: AppViewModel) {
|
|||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun LitYearsScreen(vm: AppViewModel) {
|
||||
DetailScaffold(vm, vm.tr("Literatura"), vm.tr("lit_years_sub")) { inner ->
|
||||
LazyColumn(contentPadding = PaddingValues(top = inner.calculateTopPadding(), bottom = inner.calculateBottomPadding() + 16.dp)) {
|
||||
item {
|
||||
NavRow(title = vm.tr("lit_year1"), subtitle = vm.tr("lit_sub"), leading = { Text("1.", style = MaterialTheme.typography.titleMedium) }) { vm.go(Route.LitMap) }
|
||||
NavRow(title = vm.tr("lit_year2"), subtitle = vm.tr("lit2_sub"), leading = { Text("2.", style = MaterialTheme.typography.titleMedium) }) { vm.go(Route.Lit2Map) }
|
||||
NavRow(title = vm.tr("lit_year3"), subtitle = vm.tr("lit3_sub"), leading = { Text("3.", style = MaterialTheme.typography.titleMedium) }) { vm.go(Route.Lit3Map) }
|
||||
NavRow(title = vm.tr("lit_year4"), subtitle = vm.tr("lit4_sub"), leading = { Text("4.", style = MaterialTheme.typography.titleMedium) }) { vm.go(Route.Lit4Map) }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun CzechMapScreen(vm: AppViewModel) {
|
||||
DetailScaffold(vm, vm.tr("Český jazyk a literatura"), vm.tr("czech_sub")) { inner ->
|
||||
LazyColumn(contentPadding = PaddingValues(top = inner.calculateTopPadding(), bottom = inner.calculateBottomPadding() + 16.dp)) {
|
||||
item { NavRow(title = vm.tr("Literatura"), locked = true, onClick = null) }
|
||||
item {
|
||||
NavRow(title = vm.tr("Literatura"), subtitle = vm.tr("lit_years_sub")) { vm.go(Route.LitYears) }
|
||||
}
|
||||
item {
|
||||
NavRow(
|
||||
title = vm.tr("Mluvnice"),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue