feat(app): study with faces on the ratings, centred cards and the session's figures

The study session, reworked:

- Ratings are coloured tiles with a face each (frown, meh, smile,
  laugh), when the card comes back below them with a clock ("in 1
  min", "in 3 days"), always shown, so a card can be rated without
  revealing it; at most 540 dp wide, centred.
- Cards are centred in a section card: the question large, then a line
  with 24 dp on either side and the answer a size smaller, or "Show
  answer" 40 dp below; a tap anywhere on the card shows or hides the
  answer. Read-only rich text takes a text style and an alignment.
- Words show their reading small above the expression once answered,
  and several meanings numbered.
- Choice, matching and map cards: Check below the card, the ratings in
  its place once checked; options marked before their text; matching
  lists the categories first, then what is left to place; the map
  fills the card with one caption below it.
- Header and progress on a band of their own; title start-aligned,
  the Pomodoro timer only to watch, the back-first toggle in every
  state; leaving a round under way asks first.
- Cramming goes round the round; back is there with two cards or more,
  skipping always.
- The end of a round: the cards done of those due, accuracy (OK counts
  half) and time, over the whole session.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-07 17:40:32 +02:00
commit 369ce4ade1
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -484,6 +484,21 @@
"studyBackFirstOff": "Show the back of cards first",
"studyShowAnswer": "Show answer",
"studyCheck": "Check",
"studySelectAll": "Select all that apply",
"studySelectOne": "Select the correct answer",
"studyMatchingInstructions": "DRAG AND DROP ONTO CARDS ABOVE",
"studyMatchingAllPlaced": "All placed",
"studyMatchingDropHere": "Drop here",
"studyMapTapPrompt": "Tap a region to answer",
"studyMapSelected": "Selected: {label}",
"@studyMapSelected": {"placeholders": {"label": {"type": "String"}}},
"studyCorrect": "Correct",
"studyCorrectLabel": "Correct — {label}",
"@studyCorrectLabel": {"placeholders": {"label": {"type": "String"}}},
"studyMapAnswer": "Answer: {answer}",
"@studyMapAnswer": {"placeholders": {"answer": {"type": "String"}}},
"studyMapPickedAnswer": "You picked {picked} · Answer: {answer}",
"@studyMapPickedAnswer": {"placeholders": {"picked": {"type": "String"}, "answer": {"type": "String"}}},
"studyRatingBad": "Bad",
"studyRatingOk": "OK",
"studyRatingGood": "Good",
@ -493,13 +508,40 @@
"studyNextDue": "The next card is due in {interval}.",
"@studyNextDue": {"placeholders": {"interval": {"type": "String"}}},
"studyDone": "Done",
"studyRoundDone": "Round complete",
"studySessionComplete": "Session complete",
"studyProgressReviewed": "{reviewed} / {total} reviewed",
"@studyProgressReviewed": {"placeholders": {"reviewed": {"type": "int"}, "total": {"type": "int"}}},
"studyReviewedCount": "{reviewed} reviewed",
"@studyReviewedCount": {"placeholders": {"reviewed": {"type": "int"}}},
"studyStatCards": "Cards",
"studyStatAccuracy": "Accuracy",
"studyStatTime": "Time",
"studyDurationSec": "{sec} sec",
"@studyDurationSec": {"placeholders": {"sec": {"type": "int"}}},
"studyDurationMin": "{min} min",
"@studyDurationMin": {"placeholders": {"min": {"type": "int"}}},
"studyDurationMinSec": "{min} min {sec} sec",
"@studyDurationMinSec": {"placeholders": {"min": {"type": "int"}, "sec": {"type": "int"}}},
"studyLeaveTitle": "Leave this study session?",
"studyLeaveRated": "{count, plural, =1{Your ratings so far are saved, but the last card in this round will be discarded if you leave now.} other{Your ratings so far are saved, but the {count} cards still left in this round will be discarded if you leave now.}}",
"@studyLeaveRated": {"placeholders": {"count": {"type": "int"}}},
"studyLeaveUnrated": "{count, plural, =1{You haven’t rated this card yet — leaving ends the session without recording any progress for this round.} other{You haven’t rated any of the {count} cards in this round yet — leaving ends the session without recording any progress for it.}}",
"@studyLeaveUnrated": {"placeholders": {"count": {"type": "int"}}},
"studyLeaveConfirm": "Leave",
"studyKeepStudying": "Keep studying",
"studyInMinutes": "{count, plural, =1{in 1 min} other{in {count} min}}",
"@studyInMinutes": {"placeholders": {"count": {"type": "int"}}},
"studyInHours": "{count, plural, =1{in 1 hour} other{in {count} hours}}",
"@studyInHours": {"placeholders": {"count": {"type": "int"}}},
"studyInDays": "{count, plural, =1{in 1 day} other{in {count} days}}",
"@studyInDays": {"placeholders": {"count": {"type": "int"}}},
"studyInMonths": "{count, plural, =1{in 1 month} other{in {count} months}}",
"@studyInMonths": {"placeholders": {"count": {"type": "int"}}},
"studyInYears": "{count, plural, =1{in 1 year} other{in {count} years}}",
"@studyInYears": {"placeholders": {"count": {"type": "int"}}},
"studyContinue": "Continue learning",
"studyPrevious": "Previous card",
"studyNext": "Next card",
"studyReading": "Reading",
"studyMeanings": "Meanings",
"studyPlaceItems": "Drag each item onto its category, or tap an item and then a category.",
"studySkipCard": "Skip card",
"studyMinutes": "{count} min",
"@studyMinutes": {"placeholders": {"count": {"type": "int"}}},
"studyHours": "{count} h",