diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/NoteEditorFragment.kt b/AnkiDroid/src/main/java/com/ichi2/anki/NoteEditorFragment.kt index fee01c57961b..9d30af0b4bd0 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/NoteEditorFragment.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/NoteEditorFragment.kt @@ -842,6 +842,27 @@ class NoteEditorFragment : if (addNote) { noteTypeSpinner!!.onItemSelectedListener = SetNoteTypeListener() requireAnkiActivity().setToolbarTitle(R.string.menu_add) + + // set the note type + val noteTypeId: Long? = + if (!allNoteTypeIds.isNullOrEmpty()) { + requireArguments().getLong( + EXTRA_NOTE_TYPE_ID, + allNoteTypeIds!![0], + ) + } else { + null + } + val noteTypeIdIndex: Int = + if (noteTypeId != null && !allNoteTypeIds.isNullOrEmpty()) { + allNoteTypeIds!!.indexOfFirst { it == noteTypeId }.let { + if (it == -1) 0 else it + } + } else { + 0 + } + noteTypeSpinner!!.setSelection(noteTypeIdIndex) + // set information transferred by intent var contents: String? = null val tags = requireArguments().getStringArray(EXTRA_TAGS) @@ -1571,7 +1592,14 @@ class NoteEditorFragment : } fun copyNote() { - launchNoteEditor(NoteEditorLauncher.CopyNote(deckId, fieldsText, selectedTags)) { } + val noteTypeId = + if (currentlySelectedNotetype != null) { + currentlySelectedNotetype!!.id + } else { + editorNote?.notetype?.id + } + + launchNoteEditor(NoteEditorLauncher.CopyNote(deckId, fieldsText, selectedTags, noteTypeId)) { } } private fun launchNoteEditor( @@ -2986,6 +3014,7 @@ class NoteEditorFragment : const val RELOAD_REQUIRED_EXTRA_KEY = "reloadRequired" const val EXTRA_IMG_OCCLUSION = "image_uri" const val IN_CARD_BROWSER_ACTIVITY = "inCardBrowserActivity" + const val EXTRA_NOTE_TYPE_ID = "NOTE_TYPE_ID" // calling activity enum class NoteEditorCaller( diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/noteeditor/NoteEditorLauncher.kt b/AnkiDroid/src/main/java/com/ichi2/anki/noteeditor/NoteEditorLauncher.kt index c3941d33372f..dbdc0ce249b3 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/noteeditor/NoteEditorLauncher.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/noteeditor/NoteEditorLauncher.kt @@ -207,12 +207,14 @@ sealed interface NoteEditorLauncher : Destination { val deckId: DeckId, val fieldsText: String, val tags: List? = null, + val noteTypeId: Long? = null, ) : NoteEditorLauncher { override fun toBundle(): Bundle = bundleOf( NoteEditorFragment.EXTRA_CALLER to NoteEditorCaller.NOTEEDITOR.value, NoteEditorFragment.EXTRA_DID to deckId, NoteEditorFragment.EXTRA_CONTENTS to fieldsText, + NoteEditorFragment.EXTRA_NOTE_TYPE_ID to noteTypeId, ).also { bundle -> tags?.let { tags -> bundle.putStringArray(NoteEditorFragment.EXTRA_TAGS, tags.toTypedArray()) } } diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/NoteEditorTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/NoteEditorTest.kt index 0bcf69b9e9db..c9d6f58385c5 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/NoteEditorTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/NoteEditorTest.kt @@ -635,9 +635,10 @@ class NoteEditorTest : RobolectricTest() { } fun buildInternal(): NoteEditorFragment { - col.notetypes.setCurrent(notetype) val noteEditor = getNoteEditorAddingNote(REVIEWER) advanceRobolectricLooper() + noteEditor.setCurrentlySelectedNoteType(notetype.id) + advanceRobolectricLooper() // image occlusion does not need a first field if (this.firstField != null) { noteEditor.setFieldValueFromUi(0, firstField)