Skip to content
This repository was archived by the owner on Jul 29, 2022. It is now read-only.
Closed
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
Original file line number Diff line number Diff line change
Expand Up @@ -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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@stevenzeck To minimize breaking changes, we can add back a getCurrentFragment() API in R2PagerAdapter which will do fm.findFragmentByTag("f${resourcePager.currentItem}")

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 ?: ""
Expand All @@ -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
Comment on lines +604 to +605
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@stevenzeck Same thing, maybe there's a way to have mFragments and getItemId in the new R2PagerAdapter to avoid breaking this?


currentFragment?.webView?.getCurrentSelectionRect {
val rect = JSONObject(it).run {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -32,7 +33,7 @@ import java.io.File

class UserSettings(var preferences: SharedPreferences, val context: Context, private val UIPreset: MutableMap<ReadiumCSSName, Boolean>) {

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")
Expand Down Expand Up @@ -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)
}
}
}
}
Expand Down Expand Up @@ -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()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,14 @@ class MarkJSSearchEngine(private var listener: IR2Activity) : SearchInterface {
val searchResult = mutableListOf<Locator>()

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") {
Expand Down
2 changes: 1 addition & 1 deletion r2-testapp/src/main/res/layout/activity_epub.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
android:layout_height="match_parent"
tools:context="org.readium.r2.navigator.epub.R2EpubActivity">

<org.readium.r2.navigator.pager.R2ViewPager
<androidx.viewpager2.widget.ViewPager2
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@stevenzeck We should look for a way to have R2ViewPager work as well. I'll put more details in the general review comment.

android:id="@+id/resourcePager"
android:layout_width="0dp"
android:layout_height="0dp"
Expand Down