Skip to content

Commit 8950f22

Browse files
committed
refactor: use backend 'Create deck' string
Assisted-by: Claude Opus 4.8 - all
1 parent 20e6b40 commit 8950f22

10 files changed

Lines changed: 29 additions & 16 deletions

File tree

AnkiDroid/src/main/java/com/ichi2/anki/DeckPicker.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2129,7 +2129,7 @@ open class DeckPicker :
21292129
val createDeckDialog =
21302130
CreateDeckDialog(
21312131
context = this@DeckPicker,
2132-
title = getString(R.string.new_deck),
2132+
title = TR.sentenceCase.createDeck,
21332133
deckDialogType = CreateDeckDialog.DeckDialogType.DECK,
21342134
parentId = null,
21352135
)
@@ -2237,7 +2237,7 @@ open class DeckPicker :
22372237
shortcut("S", Translations::decksStudyDeck),
22382238
shortcut("T", R.string.open_statistics),
22392239
shortcut("C") { this.sentenceCase.checkDatabase },
2240-
shortcut("D", R.string.new_deck),
2240+
shortcut("D") { sentenceCase.createDeck },
22412241
shortcut("F", R.string.new_dynamic_deck),
22422242
if (fragmented) shortcut("DEL") { this.sentenceCase.deleteDeck } else null,
22432243
if (fragmented) shortcut("Shift+DEL", R.string.delete_deck_without_confirmation) else null,

AnkiDroid/src/main/java/com/ichi2/anki/DeckPickerFloatingActionMenu.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@ import android.view.View
2424
import android.widget.LinearLayout
2525
import androidx.annotation.VisibleForTesting
2626
import com.google.android.material.color.MaterialColors
27+
import com.ichi2.anki.CollectionManager.TR
2728
import com.ichi2.anki.databinding.ActivityHomescreenBinding
2829
import com.ichi2.anki.databinding.IncludeFloatingAddButtonBinding
2930
import com.ichi2.anki.ui.DoubleTapListener
31+
import com.ichi2.anki.ui.internationalization.sentenceCase
3032
import timber.log.Timber
3133

3234
class DeckPickerFloatingActionMenu(
@@ -343,6 +345,10 @@ class DeckPickerFloatingActionMenu(
343345
deckPicker.showCreateDeckDialog()
344346
}
345347
}
348+
binding.addDeckButton.apply {
349+
text = with(context) { TR.sentenceCase.createDeck }
350+
contentDescription = text
351+
}
346352
binding.addDeckButton.setOnClickListener(addDeckListener)
347353

348354
// Enable keyboard activation for Enter/DPAD_CENTER keys

AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DeckSelectionDialog.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ class DeckSelectionDialog : AnalyticsDialogFragment() {
176176
val createDeckDialog =
177177
CreateDeckDialog(
178178
context = requireActivity(),
179-
title = getString(R.string.new_deck),
179+
title = TR.sentenceCase.createDeck,
180180
deckDialogType = CreateDeckDialog.DeckDialogType.DECK,
181181
parentId = null,
182182
)

AnkiDroid/src/main/java/com/ichi2/anki/ui/internationalization/SentenceCase.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,12 @@ object SentenceCase {
248248

249249
context(_: Fragment)
250250
val toggleMark get() = TR.browsingToggleMark().toSentenceCase(R.string.sentence_toggle_mark)
251+
252+
context(_: Context)
253+
val createDeck get() = TR.decksCreateDeck().toSentenceCase(R.string.sentence_create_deck)
254+
255+
context(_: Fragment)
256+
val createDeck get() = TR.decksCreateDeck().toSentenceCase(R.string.sentence_create_deck)
251257
}
252258

253259
/**

AnkiDroid/src/main/res/layout/include_floating_add_button.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,7 @@
6868
android:layout_height="wrap_content"
6969
android:layout_margin="8dp"
7070
app:icon="@drawable/ic_add_deck_filled"
71-
android:text="@string/new_deck"
72-
android:contentDescription="@string/new_deck"
71+
tools:text="Create deck"
7372
android:focusable="true"
7473
android:clickable="true"
7574
android:visibility="gone"

AnkiDroid/src/main/res/values/01-core.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@
7979
<string name="menu_enable_voice_playback" maxLength="28">Enable voice playback</string>
8080
<string name="menu_disable_voice_playback">Disable voice playback</string>
8181
<string name="menu_create_backup" maxLength="28">Create backup</string>
82-
<string name="new_deck">Create deck</string>
8382
<string name="new_dynamic_deck">Create filtered deck</string>
8483
<string name="directory_inaccessible">AnkiDroid directory is inaccessible</string>
8584
<!--This is shown when AnkiDroid starts up with no storage permissions.

AnkiDroid/src/main/res/values/sentence-case.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,4 +84,5 @@ undoActionUndone()
8484
<string name="sentence_browser_options">Browser options</string>
8585
<string name="sentence_change_deck" maxLength="28">Change deck</string>
8686
<string name="sentence_toggle_mark">Toggle mark</string>
87+
<string name="sentence_create_deck">Create deck</string>
8788
</resources>

AnkiDroid/src/test/java/com/ichi2/anki/TranslationTest.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,6 @@ class TranslationTest : RobolectricTest() {
338338
"Answer buttons", // R.string.answer_buttons | TR.statisticsAnswerButtonsTitle()
339339
"Answer good", // R.string.answer_good | TR.deckConfigAnswerGood()
340340
"Answer hard", // R.string.answer_hard | TR.deckConfigAnswerHard()
341-
"Create deck", // R.string.new_deck | TR.decksCreateDeck()
342341
"Deck options", // R.string.menu__deck_options | TR.deckConfigTitle()
343342
"Empty cards", // R.string.empty_cards
344343
// TR.actionsEmptyCards()

AnkiDroid/src/test/java/com/ichi2/anki/dialogs/CreateDeckDialogTest.kt

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ class CreateDeckDialogTest : RobolectricTest() {
202202
val createDeckDialog =
203203
CreateDeckDialog(
204204
context = deckPicker,
205-
title = getResourceString(R.string.new_deck),
205+
title = "Create deck",
206206
deckDialogType = DeckDialogType.DECK,
207207
parentId = null,
208208
)
@@ -291,7 +291,7 @@ class CreateDeckDialogTest : RobolectricTest() {
291291
val createDeckDialog =
292292
CreateDeckDialog(
293293
context = activity,
294-
title = getResourceString(R.string.new_deck),
294+
title = "Create deck",
295295
deckDialogType = deckDialogType,
296296
parentId = parentId,
297297
)
@@ -325,7 +325,7 @@ class CreateDeckDialogTest : RobolectricTest() {
325325
@Test
326326
fun `createDeck with activity context shows snackbar for invalid name`() {
327327
activityScenario.onActivity { activity ->
328-
val dialog = CreateDeckDialog(activity, getResourceString(R.string.new_deck), DeckDialogType.DECK, null)
328+
val dialog = CreateDeckDialog(activity, "Create deck", DeckDialogType.DECK, null)
329329
dialog.onNewDeckCreated = { _: DeckId -> }
330330
dialog.createDeck(" ")
331331
Shadows.shadowOf(Looper.getMainLooper()).idle()
@@ -341,7 +341,8 @@ class CreateDeckDialogTest : RobolectricTest() {
341341
@Test
342342
fun `createDeck with non-activity context shows toast for valid name`() {
343343
activityScenario.onActivity { activity ->
344-
val dialog = CreateDeckDialog(ContextWrapper(activity), getResourceString(R.string.new_deck), DeckDialogType.DECK, null)
344+
val dialog =
345+
CreateDeckDialog(ContextWrapper(activity), "Create deck", DeckDialogType.DECK, null)
345346
dialog.onNewDeckCreated = { _: DeckId -> }
346347
dialog.createDeck("Create Deck")
347348

@@ -356,7 +357,8 @@ class CreateDeckDialogTest : RobolectricTest() {
356357
@Test
357358
fun `createDeck with non-activity context shows toast for invalid name`() {
358359
activityScenario.onActivity { activity ->
359-
val dialog = CreateDeckDialog(ContextWrapper(activity), getResourceString(R.string.new_deck), DeckDialogType.DECK, null)
360+
val dialog =
361+
CreateDeckDialog(ContextWrapper(activity), "Create deck", DeckDialogType.DECK, null)
360362
dialog.onNewDeckCreated = { _: DeckId -> }
361363
dialog.createDeck(" ")
362364

@@ -388,7 +390,7 @@ class CreateDeckDialogTest : RobolectricTest() {
388390
@Test
389391
fun `renameDeck with activity context shows snackbar for invalid name`() {
390392
activityScenario.onActivity { activity ->
391-
val dialog = CreateDeckDialog(activity, getResourceString(R.string.new_deck), DeckDialogType.RENAME_DECK, null)
393+
val dialog = CreateDeckDialog(activity, "Create deck", DeckDialogType.RENAME_DECK, null)
392394
dialog.deckName = "Old Deck"
393395
dialog.onNewDeckCreated = { _: DeckId -> }
394396
dialog.renameDeck(" ")
@@ -405,7 +407,7 @@ class CreateDeckDialogTest : RobolectricTest() {
405407
@Test
406408
fun `renameDeck with non-activity context shows toast for valid name`() {
407409
activityScenario.onActivity { activity ->
408-
val dialog = CreateDeckDialog(ContextWrapper(activity), getResourceString(R.string.new_deck), DeckDialogType.RENAME_DECK, null)
410+
val dialog = CreateDeckDialog(ContextWrapper(activity), "Create deck", DeckDialogType.RENAME_DECK, null)
409411
dialog.deckName = "Old Deck"
410412
dialog.onNewDeckCreated = { _: DeckId -> }
411413
dialog.renameDeck("Rename Deck")
@@ -421,7 +423,7 @@ class CreateDeckDialogTest : RobolectricTest() {
421423
@Test
422424
fun `renameDeck with non-activity context shows toast for invalid name`() {
423425
activityScenario.onActivity { activity ->
424-
val dialog = CreateDeckDialog(ContextWrapper(activity), getResourceString(R.string.new_deck), DeckDialogType.RENAME_DECK, null)
426+
val dialog = CreateDeckDialog(ContextWrapper(activity), "Create deck", DeckDialogType.RENAME_DECK, null)
425427
dialog.deckName = "Old Deck"
426428
dialog.onNewDeckCreated = { _: DeckId -> }
427429
dialog.renameDeck(" ")
@@ -445,7 +447,7 @@ class CreateDeckDialogTest : RobolectricTest() {
445447
) {
446448
activityScenario.onActivity { activity: DeckPicker ->
447449
val assertionCalled = AtomicReference(false)
448-
callback(CreateDeckDialog(activity, getResourceString(R.string.new_deck), deckDialogType, parentId)) {
450+
callback(CreateDeckDialog(activity, "Create deck", deckDialogType, parentId)) {
449451
assertionCalled.set(true)
450452
}
451453
assertThat("no call to assertionCalled()", assertionCalled.get(), equalTo(true))

AnkiDroid/src/test/java/com/ichi2/anki/ui/internationalization/SentenceCaseTest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ class SentenceCaseTest : RobolectricTest() {
7474
assertThat(TR.sentenceCase.customStudy, equalTo("Custom study"))
7575
assertThat(TR.sentenceCase.deckOptions, equalTo("Deck options"))
7676
assertThat(TR.sentenceCase.deleteDeck, equalTo("Delete deck"))
77+
assertThat(TR.sentenceCase.createDeck, equalTo("Create deck"))
7778
assertThat(TR.sentenceCase.logIn, equalTo("Log in"))
7879
assertThat(TR.sentenceCase.logOut, equalTo("Log out"))
7980
assertThat(TR.sentenceCase.cardInfo, equalTo("Card info"))

0 commit comments

Comments
 (0)