@@ -29,6 +29,7 @@ import org.readium.r2.navigator.epub.EpubNavigatorFragment
29
29
import org.readium.r2.navigator.epub.EpubNavigatorViewModel
30
30
import org.readium.r2.navigator.epub.fxl.R2FXLLayout
31
31
import org.readium.r2.navigator.epub.fxl.R2FXLOnDoubleTapListener
32
+ import org.readium.r2.shared.publication.Link
32
33
import org.readium.r2.shared.util.Url
33
34
34
35
internal class R2FXLPageFragment : Fragment () {
@@ -39,6 +40,12 @@ internal class R2FXLPageFragment : Fragment() {
39
40
private val secondResourceUrl: Url ?
40
41
get() = BundleCompat .getParcelable(requireArguments(), " secondUrl" , Url ::class .java)
41
42
43
+ private val firstResourceLink: Link ?
44
+ get() = BundleCompat .getParcelable(requireArguments(), " firstLink" , Link ::class .java)
45
+
46
+ private val secondResourceLink: Link ?
47
+ get() = BundleCompat .getParcelable(requireArguments(), " secondLink" , Link ::class .java)
48
+
42
49
private var webViews = mutableListOf<R2BasicWebView >()
43
50
44
51
private var _doubleBinding : ReadiumNavigatorFragmentFxllayoutDoubleBinding ? = null
@@ -75,8 +82,8 @@ internal class R2FXLPageFragment : Fragment() {
75
82
val left = doubleBinding.firstWebView
76
83
val right = doubleBinding.secondWebView
77
84
78
- setupWebView(left, firstResourceUrl)
79
- setupWebView(right, secondResourceUrl)
85
+ setupWebView(left, firstResourceLink, firstResourceUrl)
86
+ setupWebView(right, secondResourceLink, secondResourceUrl)
80
87
81
88
r2FXLLayout.addOnDoubleTapListener(R2FXLOnDoubleTapListener (true ))
82
89
r2FXLLayout.addOnTapListener(object : R2FXLLayout .OnTapListener {
@@ -100,7 +107,7 @@ internal class R2FXLPageFragment : Fragment() {
100
107
101
108
val webview = singleBinding.webViewSingle
102
109
103
- setupWebView(webview, firstResourceUrl)
110
+ setupWebView(webview, firstResourceLink, firstResourceUrl)
104
111
105
112
r2FXLLayout.addOnDoubleTapListener(R2FXLOnDoubleTapListener (true ))
106
113
r2FXLLayout.addOnTapListener(object : R2FXLLayout .OnTapListener {
@@ -136,7 +143,7 @@ internal class R2FXLPageFragment : Fragment() {
136
143
}
137
144
138
145
@SuppressLint(" SetJavaScriptEnabled" )
139
- private fun setupWebView (webView : R2BasicWebView , resourceUrl : Url ? ) {
146
+ private fun setupWebView (webView : R2BasicWebView , link : Link ? , resourceUrl : Url ? ) {
140
147
webViews.add(webView)
141
148
navigator?.let {
142
149
webView.listener = it.webViewListener
@@ -167,6 +174,15 @@ internal class R2FXLPageFragment : Fragment() {
167
174
168
175
override fun shouldInterceptRequest (view : WebView , request : WebResourceRequest ): WebResourceResponse ? =
169
176
(webView as ? R2BasicWebView )?.shouldInterceptRequest(view, request)
177
+
178
+ override fun onPageFinished (view : WebView ? , url : String? ) {
179
+ super .onPageFinished(view, url)
180
+
181
+ if (link != null ) {
182
+ webView.listener?.onResourceLoaded(webView, link)
183
+ webView.listener?.onPageLoaded(webView, link)
184
+ }
185
+ }
170
186
}
171
187
webView.isHapticFeedbackEnabled = false
172
188
webView.isLongClickable = false
@@ -179,11 +195,13 @@ internal class R2FXLPageFragment : Fragment() {
179
195
180
196
companion object {
181
197
182
- fun newInstance (url : Url ? , url2 : Url ? = null): R2FXLPageFragment =
198
+ fun newInstance (left : Pair < Link , Url > ? , right : Pair < Link , Url > ? = null): R2FXLPageFragment =
183
199
R2FXLPageFragment ().apply {
184
200
arguments = Bundle ().apply {
185
- putParcelable(" firstUrl" , url)
186
- putParcelable(" secondUrl" , url2)
201
+ putParcelable(" firstLink" , left?.first)
202
+ putParcelable(" firstUrl" , left?.second)
203
+ putParcelable(" secondLink" , right?.first)
204
+ putParcelable(" secondUrl" , right?.second)
187
205
}
188
206
}
189
207
}
0 commit comments