Skip to content
Merged
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
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ All notable changes to this project will be documented in this file. Take a look

* Removed title inference based on folder names within image and audio archives. Use the archive's filename instead.

#### Shared

* The Presentation Hints properties are deprecated from the Readium Web Publication Manifest models. [See the official documentation](https://readium.org/webpub-manifest/profiles/epub.html#appendix-b---deprecated-properties).

### Fixed

#### Shared
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,10 @@ package org.readium.r2.navigator.epub
import androidx.fragment.app.FragmentFactory
import org.readium.r2.shared.ExperimentalReadiumApi
import org.readium.r2.shared.InternalReadiumApi
import org.readium.r2.shared.publication.Layout
import org.readium.r2.shared.publication.Link
import org.readium.r2.shared.publication.Locator
import org.readium.r2.shared.publication.Publication
import org.readium.r2.shared.publication.epub.EpubLayout
import org.readium.r2.shared.publication.presentation.presentation

/**
* Factory of the EPUB navigator and related components.
Expand All @@ -38,8 +37,8 @@ public class EpubNavigatorFactory(
val defaults: EpubDefaults = EpubDefaults(),
)

private val layout: EpubLayout =
publication.metadata.presentation.layout ?: EpubLayout.REFLOWABLE
private val layout: Layout =
publication.metadata.layout ?: Layout.REFLOWABLE

/**
* Creates a factory for [EpubNavigatorFragment].
Expand Down Expand Up @@ -69,7 +68,7 @@ public class EpubNavigatorFactory(
initialPreferences = initialPreferences,
listener = listener,
paginationListener = paginationListener,
epubLayout = layout,
layout = layout,
defaults = this.configuration.defaults,
configuration = configuration
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,11 +84,10 @@ import org.readium.r2.shared.ExperimentalReadiumApi
import org.readium.r2.shared.InternalReadiumApi
import org.readium.r2.shared.extensions.tryOrLog
import org.readium.r2.shared.publication.Href
import org.readium.r2.shared.publication.Layout
import org.readium.r2.shared.publication.Link
import org.readium.r2.shared.publication.Locator
import org.readium.r2.shared.publication.Publication
import org.readium.r2.shared.publication.epub.EpubLayout
import org.readium.r2.shared.publication.presentation.presentation
import org.readium.r2.shared.publication.services.positionsByReadingOrder
import org.readium.r2.shared.util.AbsoluteUrl
import org.readium.r2.shared.util.Url
Expand Down Expand Up @@ -116,7 +115,7 @@ public class EpubNavigatorFragment internal constructor(
private val initialPreferences: EpubPreferences,
internal val listener: Listener?,
internal val paginationListener: PaginationListener?,
epubLayout: EpubLayout,
layout: Layout,
private val defaults: EpubDefaults,
configuration: Configuration,
) : NavigatorFragment(publication),
Expand Down Expand Up @@ -311,7 +310,7 @@ public class EpubNavigatorFragment internal constructor(
config = this.config,
initialPreferences = initialPreferences,
listener = listener,
layout = epubLayout,
layout = layout,
defaults = defaults
)
}
Expand Down Expand Up @@ -351,7 +350,7 @@ public class EpubNavigatorFragment internal constructor(
positions = positionsByReadingOrder.flatten()

when (viewModel.layout) {
EpubLayout.REFLOWABLE -> {
Layout.REFLOWABLE, Layout.SCROLLED -> {
resourcesSingle = readingOrder.mapIndexed { index, link ->
PageResource.EpubReflowable(
link = link,
Expand All @@ -361,7 +360,7 @@ public class EpubNavigatorFragment internal constructor(
}
}

EpubLayout.FIXED -> {
Layout.FIXED -> {
val resourcesSingle = mutableListOf<PageResource>()
val resourcesDouble = mutableListOf<PageResource>()

Expand Down Expand Up @@ -413,7 +412,7 @@ public class EpubNavigatorFragment internal constructor(
resetResourcePager()

// Fixed layout publications cannot intercept JS events yet.
if (publication.metadata.presentation.layout == EpubLayout.FIXED) {
if (publication.metadata.layout == Layout.FIXED) {
view = KeyInterceptorView(view, inputListener)
}

Expand All @@ -430,9 +429,9 @@ public class EpubNavigatorFragment internal constructor(

resourcePager = R2ViewPager(requireContext())
resourcePager.id = R.id.resourcePager
resourcePager.publicationType = when (publication.metadata.presentation.layout) {
EpubLayout.REFLOWABLE, null -> R2ViewPager.PublicationType.EPUB
EpubLayout.FIXED -> R2ViewPager.PublicationType.FXL
resourcePager.publicationType = when (publication.metadata.layout) {
Layout.REFLOWABLE, Layout.SCROLLED, null -> R2ViewPager.PublicationType.EPUB
Layout.FIXED -> R2ViewPager.PublicationType.FXL
}
resourcePager.setBackgroundColor(viewModel.settings.value.effectiveBackgroundColor)
// Let the page views handle the keyboard events.
Expand Down Expand Up @@ -472,11 +471,11 @@ public class EpubNavigatorFragment internal constructor(
}

private fun resetResourcePagerAdapter() {
adapter = when (publication.metadata.presentation.layout) {
EpubLayout.REFLOWABLE, null -> {
adapter = when (publication.metadata.layout) {
Layout.REFLOWABLE, Layout.SCROLLED, null -> {
R2PagerAdapter(childFragmentManager, resourcesSingle)
}
EpubLayout.FIXED -> {
Layout.FIXED -> {
when (viewModel.dualPageMode) {
// FIXME: Properly implement DualPage.AUTO depending on the device orientation.
DualPage.OFF, DualPage.AUTO -> {
Expand Down Expand Up @@ -560,7 +559,7 @@ public class EpubNavigatorFragment internal constructor(
resourcePager.setBackgroundColor(new.effectiveBackgroundColor)
}

if (viewModel.layout == EpubLayout.REFLOWABLE) {
if (viewModel.layout == Layout.REFLOWABLE) {
if (previous.fontSize != new.fontSize) {
r2PagerAdapter?.setFontSize(new.fontSize)
}
Expand All @@ -577,7 +576,7 @@ public class EpubNavigatorFragment internal constructor(

private inner class PagerAdapterListener : R2PagerAdapter.Listener {
override fun onCreatePageFragment(fragment: Fragment) {
if (viewModel.layout == EpubLayout.REFLOWABLE) {
if (viewModel.layout == Layout.REFLOWABLE) {
if (!config.useReadiumCssFontSize) {
(fragment as? R2EpubPageFragment)?.setFontSize(settings.value.fontSize)
}
Expand Down Expand Up @@ -633,7 +632,7 @@ public class EpubNavigatorFragment internal constructor(
r2PagerAdapter?.loadLocatorAt(index, locator)
}

if (publication.metadata.presentation.layout != EpubLayout.FIXED) {
if (publication.metadata.layout != Layout.FIXED) {
setCurrent(resourcesSingle)
} else {
when (viewModel.dualPageMode) {
Expand Down Expand Up @@ -868,7 +867,7 @@ public class EpubNavigatorFragment internal constructor(
}

override fun goForward(animated: Boolean): Boolean {
if (publication.metadata.presentation.layout == EpubLayout.FIXED) {
if (publication.metadata.layout == Layout.FIXED) {
return goToNextResource(jump = false, animated = animated)
}

Expand All @@ -885,7 +884,7 @@ public class EpubNavigatorFragment internal constructor(
}

override fun goBackward(animated: Boolean): Boolean {
if (publication.metadata.presentation.layout == EpubLayout.FIXED) {
if (publication.metadata.layout == Layout.FIXED) {
return goToPreviousResource(jump = false, animated = animated)
}

Expand Down Expand Up @@ -1003,10 +1002,10 @@ public class EpubNavigatorFragment internal constructor(
if (!::resourcePager.isInitialized) return null

return when (viewModel.layout) {
EpubLayout.FIXED ->
Layout.FIXED ->
currentLocator.value

EpubLayout.REFLOWABLE -> {
Layout.REFLOWABLE, Layout.SCROLLED -> {
val resource = readingOrder[resourcePager.currentItem]
currentReflowablePageFragment?.webView?.findFirstVisibleLocator()
?.copy(
Expand Down Expand Up @@ -1123,7 +1122,7 @@ public class EpubNavigatorFragment internal constructor(
initialPreferences = EpubPreferences(),
listener = null,
paginationListener = null,
epubLayout = EpubLayout.REFLOWABLE,
layout = Layout.REFLOWABLE,
defaults = EpubDefaults(),
configuration = Configuration()
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ import org.readium.r2.shared.ExperimentalReadiumApi
import org.readium.r2.shared.InternalReadiumApi
import org.readium.r2.shared.extensions.mapStateIn
import org.readium.r2.shared.publication.Href
import org.readium.r2.shared.publication.Layout
import org.readium.r2.shared.publication.Link
import org.readium.r2.shared.publication.Publication
import org.readium.r2.shared.publication.epub.EpubLayout
import org.readium.r2.shared.util.AbsoluteUrl
import org.readium.r2.shared.util.RelativeUrl
import org.readium.r2.shared.util.Url
Expand All @@ -50,7 +50,7 @@ internal class EpubNavigatorViewModel(
val publication: Publication,
val config: EpubNavigatorFragment.Configuration,
initialPreferences: EpubPreferences,
val layout: EpubLayout,
val layout: Layout,
val listener: EpubNavigatorFragment.Listener?,
private val defaults: EpubDefaults,
private val server: WebViewServer,
Expand Down Expand Up @@ -91,7 +91,7 @@ internal class EpubNavigatorViewModel(
.mapStateIn(viewModelScope) { settings ->
SimpleOverflow(
readingProgression = settings.readingProgression,
scroll = if (layout == EpubLayout.REFLOWABLE) {
scroll = if (layout == Layout.REFLOWABLE) {
settings.scroll
} else {
false
Expand Down Expand Up @@ -264,12 +264,12 @@ internal class EpubNavigatorViewModel(
*/
val dualPageMode: DualPage get() =
when (layout) {
EpubLayout.FIXED -> when (settings.value.spread) {
Layout.FIXED -> when (settings.value.spread) {
Spread.AUTO -> DualPage.AUTO
Spread.ALWAYS -> DualPage.ON
Spread.NEVER -> DualPage.OFF
}
EpubLayout.REFLOWABLE -> when (settings.value.columnCount) {
else -> when (settings.value.columnCount) {
ColumnCount.ONE -> DualPage.OFF
ColumnCount.TWO -> DualPage.ON
ColumnCount.AUTO -> DualPage.AUTO
Expand All @@ -281,7 +281,7 @@ internal class EpubNavigatorViewModel(
*/
val isScrollEnabled: StateFlow<Boolean> get() =
settings.mapStateIn(viewModelScope) {
if (layout == EpubLayout.REFLOWABLE) it.scroll else false
if (layout == Layout.REFLOWABLE) it.scroll else false
}

// Selection
Expand Down Expand Up @@ -371,7 +371,7 @@ internal class EpubNavigatorViewModel(
fun createFactory(
application: Application,
publication: Publication,
layout: EpubLayout,
layout: Layout,
listener: EpubNavigatorFragment.Listener?,
defaults: EpubDefaults,
config: EpubNavigatorFragment.Configuration,
Expand Down
Loading