@@ -37,6 +37,7 @@ import android.text.TextWatcher
3737import android.view.ActionMode
3838import android.view.KeyEvent
3939import android.view.Menu
40+ import android.view.MenuInflater
4041import android.view.MenuItem
4142import android.view.View
4243import android.view.View.OnFocusChangeListener
@@ -70,6 +71,7 @@ import androidx.core.os.BundleCompat
7071import androidx.core.text.HtmlCompat
7172import androidx.core.util.component1
7273import androidx.core.util.component2
74+ import androidx.core.view.MenuProvider
7375import androidx.core.view.OnReceiveContentListener
7476import androidx.core.view.isVisible
7577import androidx.draganddrop.DropHelper
@@ -192,7 +194,7 @@ import androidx.appcompat.widget.Toolbar as MainToolbar
192194 */
193195@KotlinCleanup(" Go through the class and select elements to fix" )
194196@KotlinCleanup(" see if we can lateinit" )
195- class NoteEditor : AnkiFragment (R .layout.note_editor), DeckSelectionListener, SubtitleListener, TagsDialogListener, BaseSnackbarBuilderProvider, MainToolbar.OnMenuItemClickListener, DispatchKeyEventListener {
197+ class NoteEditor : AnkiFragment (R .layout.note_editor), DeckSelectionListener, SubtitleListener, TagsDialogListener, BaseSnackbarBuilderProvider, DispatchKeyEventListener, MenuProvider {
196198 /* * Whether any change are saved. E.g. multimedia, new card added, field changed and saved. */
197199 private var changed = false
198200 private var isTagsEdited = false
@@ -511,7 +513,7 @@ class NoteEditor : AnkiFragment(R.layout.note_editor), DeckSelectionListener, Su
511513 requireActivity().onBackPressedDispatcher.onBackPressed()
512514 }
513515
514- configureMainToolbar( )
516+ mainToolbar.addMenuProvider( this )
515517 }
516518
517519 /* *
@@ -1249,13 +1251,15 @@ class NoteEditor : AnkiFragment(R.layout.note_editor), DeckSelectionListener, Su
12491251 updateToolbar()
12501252 }
12511253
1254+ override fun onCreateMenu (menu : Menu , menuInflater : MenuInflater ) {
1255+ menuInflater.inflate(R .menu.note_editor, menu)
1256+ onPrepareMenu(menu)
1257+ }
1258+
12521259 /* *
12531260 * Configures the main toolbar with the appropriate menu items and their visibility based on the current state.
12541261 */
1255- private fun configureMainToolbar () {
1256- mainToolbar.setOnMenuItemClickListener(this )
1257- mainToolbar.inflateMenu(R .menu.note_editor)
1258- val menu = mainToolbar.menu
1262+ override fun onPrepareMenu (menu : Menu ) {
12591263 if (addNote) {
12601264 menu.findItem(R .id.action_copy_note).isVisible = false
12611265 val iconVisible = allowSaveAndPreview()
@@ -1293,7 +1297,7 @@ class NoteEditor : AnkiFragment(R.layout.note_editor), DeckSelectionListener, Su
12931297 else -> true
12941298 }
12951299
1296- override fun onMenuItemClick (item : MenuItem ): Boolean {
1300+ override fun onMenuItemSelected (item : MenuItem ): Boolean {
12971301 when (item.itemId) {
12981302 R .id.action_preview -> {
12991303 Timber .i(" NoteEditor:: Preview button pressed" )
@@ -2486,7 +2490,7 @@ class NoteEditor : AnkiFragment(R.layout.note_editor), DeckSelectionListener, Su
24862490 // If a new column was selected then change the key used to map from mCards to the column TextView
24872491 // Timber.i("NoteEditor:: onItemSelected() fired on mNoteTypeSpinner");
24882492 // In case the type is changed while adding the card, the menu options need to be invalidated
2489- invalidateMenu()
2493+ mainToolbar. invalidateMenu()
24902494 changeNoteType(allModelIds!! [pos])
24912495 }
24922496
0 commit comments