Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions AnkiDroid/src/main/java/com/ichi2/anki/CardTemplateEditor.kt
Original file line number Diff line number Diff line change
Expand Up @@ -232,21 +232,20 @@ open class CardTemplateEditor :

topBinding.slidingTabs.doOnTabSelected { tab ->
Timber.i("selected card index: %s", tab.position)
loadTemplatePreviewerFragmentIfFragmented()
loadTemplatePreviewerFragmentIfFragmented(tab.position)
}
}

/**
* Loads or reloads [tempNoteType] in [R.id.fragment_container] if the view is fragmented. Do nothing otherwise.
*/
private fun loadTemplatePreviewerFragmentIfFragmented() {
private fun loadTemplatePreviewerFragmentIfFragmented(ord: CardOrdinal = mainBinding.cardTemplateEditorPager.currentItem) {
if (!fragmented) {
return
}
launchCatchingTask {
val notetype = tempNoteType!!.notetype
val notetypeFile = NotetypeFile(this@CardTemplateEditor, notetype)
val ord = mainBinding.cardTemplateEditorPager.currentItem
val note = withCol { currentFragment?.getNote(this) ?: Note.fromNotetypeId(this@withCol, notetype.id) }
val args =
TemplatePreviewerArguments(
Expand Down
22 changes: 20 additions & 2 deletions AnkiDroid/src/test/java/com/ichi2/anki/CardTemplateEditorTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,16 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import com.ichi2.anki.CardTemplateEditor.CardTemplateFragment.CardTemplate
import com.ichi2.anki.CollectionManager.withCol
import com.ichi2.anki.dialogs.InsertFieldDialog
import com.ichi2.anki.libanki.CardOrdinal
import com.ichi2.anki.libanki.NotetypeJson
import com.ichi2.anki.libanki.testutils.ext.addNote
import com.ichi2.anki.model.SelectableDeck
import com.ichi2.anki.notetype.ManageNoteTypesState.CardEditor
import com.ichi2.anki.previewer.CardViewerActivity
import com.ichi2.anki.previewer.TemplatePreviewerFragment
import com.ichi2.anki.scheduling.selectTab
import com.ichi2.testutils.assertFalse
import com.ichi2.testutils.withTabletUi
import com.ichi2.testutils.withSplitPaneUi
import org.hamcrest.CoreMatchers.equalTo
import org.hamcrest.MatcherAssert
import org.hamcrest.MatcherAssert.assertThat
Expand Down Expand Up @@ -859,7 +861,7 @@ class CardTemplateEditorTest : RobolectricTest() {

@Test
fun `tab changes succeed with tablet UI - Issue 19589`() =
withTabletUi {
withSplitPaneUi {
withCardTemplateEditor(col.notetypes.basicAndReversed) {
selectTab(1)
selectTab(0)
Expand All @@ -868,6 +870,16 @@ class CardTemplateEditorTest : RobolectricTest() {
}
}

@Test
fun `correct ord is previewed after tab change - tablet ui - issue 20097`() =
withSplitPaneUi {
withCardTemplateEditor(col.notetypes.basicAndReversed) {
selectTab(1)

assertThat(previewer.ord, equalTo(1))
}
}

private fun addCardType(
testEditor: CardTemplateEditor,
shadowTestEditor: ShadowActivity,
Expand Down Expand Up @@ -962,3 +974,9 @@ fun RobolectricTest.withCardTemplateEditor(
fun CardTemplateEditor.selectTab(index: Int) = topBinding.slidingTabs.selectTab(index)

val CardTemplateEditor.selectedTabPosition: Int get() = topBinding.slidingTabs.selectedTabPosition

val CardTemplateEditor.previewer: TemplatePreviewerFragment
get() = this.supportFragmentManager.findFragmentById(R.id.fragment_container) as TemplatePreviewerFragment

val TemplatePreviewerFragment.ord: CardOrdinal
get() = this.viewModel.ordFlow.value
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,15 @@ class SetDueDateDialogTest : RobolectricTest() {
}
}

fun TabLayout.selectTab(index: Int) = selectTab(getTabAt(index))
/**
* Selects a tab by index
*
* @throws IllegalArgumentException if index is invalid
*/
fun TabLayout.selectTab(index: Int) =
requireNotNull(getTabAt(index))
{ "Tab $index not found" }
.also { tab -> selectTab(tab) }

fun SetDueDateDialog.selectTab(index: Int) {
val tabLayout = dialog!!.findViewById<TabLayout>(R.id.tab_layout)
Expand Down
4 changes: 2 additions & 2 deletions AnkiDroid/src/test/java/com/ichi2/testutils/ScreenSize.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ package com.ichi2.testutils
import org.robolectric.RuntimeEnvironment
import timber.log.Timber

/** [block] runs with an `xlarge` Runtime qualifier */
fun withTabletUi(block: () -> Unit) = withQualifier("xlarge", block)
/** [block] runs with a runtime qualifier emulating a split-pane display */
fun withSplitPaneUi(block: () -> Unit) = withQualifier("sw700dp", block)

fun withQualifier(
newQualifier: String,
Expand Down