diff --git a/r2-testapp/src/main/java/org/readium/r2/testapp/epub/EpubActivity.kt b/r2-testapp/src/main/java/org/readium/r2/testapp/epub/EpubActivity.kt index c6e708b9..c6af55ff 100644 --- a/r2-testapp/src/main/java/org/readium/r2/testapp/epub/EpubActivity.kt +++ b/r2-testapp/src/main/java/org/readium/r2/testapp/epub/EpubActivity.kt @@ -575,7 +575,8 @@ class EpubActivity : R2EpubActivity(), CoroutineScope, NavigatorDelegate/*, Visu val searchStorage = getSharedPreferences("org.readium.r2.search", Context.MODE_PRIVATE) Handler().postDelayed({ if (publication.metadata.presentation.layout == EpubLayout.REFLOWABLE) { - val currentFragment = (resourcePager.adapter as R2PagerAdapter).getCurrentFragment() as R2EpubPageFragment +// val currentFragment = (resourcePager.adapter as R2PagerAdapter).getCurrentFragment() as R2EpubPageFragment + val currentFragment = (resourcePager.adapter as R2PagerAdapter).fm.findFragmentByTag("f${resourcePager.currentItem}") as R2EpubPageFragment val resource = publication.readingOrder[resourcePager.currentItem] val resourceHref = resource.href val resourceType = resource.type ?: "" @@ -600,7 +601,8 @@ class EpubActivity : R2EpubActivity(), CoroutineScope, NavigatorDelegate/*, Visu mode?.menu?.run { menuInflater.inflate(R.menu.menu_action_mode, this) findItem(R.id.highlight).setOnMenuItemClickListener { - val currentFragment = ((resourcePager.adapter as R2PagerAdapter).mFragments.get((resourcePager.adapter as R2PagerAdapter).getItemId(resourcePager.currentItem))) as? R2EpubPageFragment +// val currentFragment = ((resourcePager.adapter as R2PagerAdapter).mFragments.get((resourcePager.adapter as R2PagerAdapter).getItemId(resourcePager.currentItem))) as? R2EpubPageFragment + val currentFragment = (resourcePager.adapter as R2PagerAdapter).fm.findFragmentByTag("f${resourcePager.currentItem}") as? R2EpubPageFragment currentFragment?.webView?.getCurrentSelectionRect { val rect = JSONObject(it).run { diff --git a/r2-testapp/src/main/java/org/readium/r2/testapp/epub/UserSettings.kt b/r2-testapp/src/main/java/org/readium/r2/testapp/epub/UserSettings.kt index ef81a9ae..1d938fa5 100644 --- a/r2-testapp/src/main/java/org/readium/r2/testapp/epub/UserSettings.kt +++ b/r2-testapp/src/main/java/org/readium/r2/testapp/epub/UserSettings.kt @@ -18,6 +18,7 @@ import android.view.View import android.view.ViewGroup import android.widget.* import androidx.appcompat.app.AppCompatActivity +import androidx.viewpager2.widget.ViewPager2 import org.json.JSONArray import org.readium.r2.navigator.R2BasicWebView import org.readium.r2.navigator.R2WebView @@ -32,7 +33,7 @@ import java.io.File class UserSettings(var preferences: SharedPreferences, val context: Context, private val UIPreset: MutableMap) { - lateinit var resourcePager: R2ViewPager + lateinit var resourcePager: ViewPager2 private val appearanceValues = listOf("readium-default-on", "readium-sepia-on", "readium-night-on") private val fontFamilyValues = listOf("Original", "PT Serif", "Roboto", "Source Sans Pro", "Vollkorn", "OpenDyslexic", "AccessibleDfA", "IA Writer Duospace") @@ -149,24 +150,28 @@ class UserSettings(var preferences: SharedPreferences, val context: Context, pri } fun updateViewCSS(ref: String) { - for (i in 0 until resourcePager.childCount) { - val webView = resourcePager.getChildAt(i).findViewById(R.id.webView) as? R2WebView - webView?.let { - applyCSS(webView, ref) - } ?: run { - val zoomView = resourcePager.getChildAt(i).findViewById(R.id.r2FXLLayout) as R2FXLLayout - val webView1 = zoomView.findViewById(R.id.firstWebView) as? R2BasicWebView - val webView2 = zoomView.findViewById(R.id.secondWebView) as? R2BasicWebView - val webViewSingle = zoomView.findViewById(R.id.webViewSingle) as? R2BasicWebView - - webView1?.let { - applyCSS(webView1, ref) - } - webView2?.let { - applyCSS(webView2, ref) - } - webViewSingle?.let { - applyCSS(webViewSingle, ref) + val fragments = (resourcePager.adapter as R2PagerAdapter).fm.fragments + fragments.forEachIndexed {i, fragment -> + if (fragment is R2EpubPageFragment) { + val webView = fragment.webView as? R2WebView + webView?.let { + applyCSS(webView, ref) + } ?: run { + // TODO Test what this is doing + val zoomView = resourcePager.getChildAt(i).findViewById(R.id.r2FXLLayout) as R2FXLLayout + val webView1 = zoomView.findViewById(R.id.firstWebView) as? R2BasicWebView + val webView2 = zoomView.findViewById(R.id.secondWebView) as? R2BasicWebView + val webViewSingle = zoomView.findViewById(R.id.webViewSingle) as? R2BasicWebView + + webView1?.let { + applyCSS(webView1, ref) + } + webView2?.let { + applyCSS(webView2, ref) + } + webViewSingle?.let { + applyCSS(webViewSingle, ref) + } } } } @@ -364,9 +369,10 @@ class UserSettings(var preferences: SharedPreferences, val context: Context, pri updateSwitchable(scrollMode) updateViewCSS(SCROLL_REF) - val currentFragment = (resourcePager.adapter as R2PagerAdapter).getCurrentFragment() - val previousFragment = (resourcePager.adapter as R2PagerAdapter).getPreviousFragment() - val nextFragment = (resourcePager.adapter as R2PagerAdapter).getNextFragment() + val adapter = resourcePager.adapter as R2PagerAdapter + val currentFragment = adapter.fm.findFragmentByTag("f${resourcePager.currentItem}") + val previousFragment = adapter.fm.findFragmentByTag("f${resourcePager.currentItem - 1}") + val nextFragment = adapter.fm.findFragmentByTag("f${resourcePager.currentItem + 1}") if (currentFragment is R2EpubPageFragment) { currentFragment.webView.scrollToPosition(currentFragment.webView.progression) (previousFragment as? R2EpubPageFragment)?.webView?.scrollToEnd() diff --git a/r2-testapp/src/main/java/org/readium/r2/testapp/search/SearchInterface.kt b/r2-testapp/src/main/java/org/readium/r2/testapp/search/SearchInterface.kt index 61c222e1..07ee7015 100644 --- a/r2-testapp/src/main/java/org/readium/r2/testapp/search/SearchInterface.kt +++ b/r2-testapp/src/main/java/org/readium/r2/testapp/search/SearchInterface.kt @@ -27,13 +27,14 @@ class MarkJSSearchEngine(private var listener: IR2Activity) : SearchInterface { val searchResult = mutableListOf() for (resourceIndex in 0 until listener.publication.readingOrder.size) { - val fragment = ((listener.resourcePager?.adapter as R2PagerAdapter).mFragments.get((listener.resourcePager?.adapter as R2PagerAdapter).getItemId(resourceIndex))) as R2EpubPageFragment +// val fragment = ((listener.resourcePager?.adapter as R2PagerAdapter).mFragments.get((listener.resourcePager?.adapter as R2PagerAdapter).getItemId(resourceIndex))) as R2EpubPageFragment + val fragment = (listener.resourcePager?.adapter as R2PagerAdapter).fm.findFragmentByTag("f${listener.resourcePager?.currentItem}") as? R2EpubPageFragment val resource = listener.publication.readingOrder[resourceIndex] val resourceHref = resource.href val resourceType = resource.type ?: "" val resourceTitle = resource.title ?: "" Handler().postDelayed({ - fragment.webView.runJavaScript("markSearch('${keyword}', null, '$resourceHref', '$resourceType', '$resourceTitle')") { result -> + fragment?.webView?.runJavaScript("markSearch('${keyword}', null, '$resourceHref', '$resourceType', '$resourceTitle')") { result -> if (DEBUG) Timber.tag("SEARCH").d("result $result") if (result != "null") { diff --git a/r2-testapp/src/main/res/layout/activity_epub.xml b/r2-testapp/src/main/res/layout/activity_epub.xml index a32dcc8b..63317b3a 100644 --- a/r2-testapp/src/main/res/layout/activity_epub.xml +++ b/r2-testapp/src/main/res/layout/activity_epub.xml @@ -15,7 +15,7 @@ android:layout_height="match_parent" tools:context="org.readium.r2.navigator.epub.R2EpubActivity"> -