@@ -78,6 +78,7 @@ import com.ichi2.anki.dialogs.CardBrowserMySearchesDialog
7878import com.ichi2.anki.dialogs.CardBrowserMySearchesDialog.Companion.newInstance
7979import com.ichi2.anki.dialogs.CardBrowserMySearchesDialog.MySearchesDialogListener
8080import com.ichi2.anki.dialogs.CardBrowserOrderDialog
81+ import com.ichi2.anki.dialogs.ChangeNoteTypeDialog
8182import com.ichi2.anki.dialogs.CreateDeckDialog
8283import com.ichi2.anki.dialogs.DeckSelectionDialog
8384import com.ichi2.anki.dialogs.DeckSelectionDialog.Companion.newInstance
@@ -789,6 +790,11 @@ open class CardBrowser :
789790 searchForMarkedNotes()
790791 return true
791792 }
793+ if (event.isCtrlPressed && event.isShiftPressed) {
794+ Timber .i(" Ctrl+Shift+M: Change Note Type" )
795+ showChangeNoteType()
796+ return true
797+ }
792798 }
793799 KeyEvent .KEYCODE_Z -> {
794800 if (event.isCtrlPressed) {
@@ -1217,6 +1223,10 @@ open class CardBrowser :
12171223 toggleBury()
12181224 return true
12191225 }
1226+ R .id.action_change_note_type -> {
1227+ showChangeNoteType()
1228+ return true
1229+ }
12201230 R .id.action_change_deck -> {
12211231 showChangeDeckDialog()
12221232 return true
@@ -1468,6 +1478,21 @@ open class CardBrowser :
14681478 }
14691479 }
14701480
1481+ private fun getChangeNoteTypeDialog (noteIds : List <Long >): ChangeNoteTypeDialog = ChangeNoteTypeDialog .newInstance(noteIds)
1482+
1483+ private fun showChangeNoteType () =
1484+ launchCatchingTask {
1485+ if (! viewModel.canChangeNoteType() && viewModel.allSelectedNotesOfSameType()) {
1486+ Timber .i(" All notes are not of the same type" )
1487+ showSnackbar(R .string.different_note_types_selected)
1488+ return @launchCatchingTask
1489+ }
1490+ if (viewModel.canChangeNoteType()) {
1491+ val dialog = getChangeNoteTypeDialog(viewModel.queryAllSelectedNoteIds())
1492+ showDialogFragment(dialog)
1493+ }
1494+ }
1495+
14711496 @KotlinCleanup(" DeckSelectionListener is almost certainly a bug - deck!!" )
14721497 fun getChangeDeckDialog (selectableDecks : List <SelectableDeck >? ): DeckSelectionDialog {
14731498 val dialog =
0 commit comments