Add Continuous vertical reading mode (#2833)

* Add Continuous Vertical reader mode

* Remove separate webtoon padding option

(cherry picked from commit 3e7d15e51856297210e46e9f5bb0b8394067ce1a)

* Continuas vertical Lowercase v

(cherry picked from commit 515cca7d6704343eb9acb1a38a2bdcda01e7395a)
This commit is contained in:
jobobby04 2020-04-07 22:35:43 -04:00 committed by GitHub
parent b2fba5083b
commit 38ceaf5253
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 7 additions and 22 deletions

View file

@ -49,8 +49,6 @@ object PreferenceKeys {
const val cropBordersWebtoon = "crop_borders_webtoon" const val cropBordersWebtoon = "crop_borders_webtoon"
const val padPagesVertWebtoon = "pad_pages_vert_webtoon"
const val readWithTapping = "reader_tap" const val readWithTapping = "reader_tap"
const val readWithLongTap = "reader_long_tap" const val readWithLongTap = "reader_long_tap"

View file

@ -107,8 +107,6 @@ class PreferencesHelper(val context: Context) {
fun cropBordersWebtoon() = rxPrefs.getBoolean(Keys.cropBordersWebtoon, false) fun cropBordersWebtoon() = rxPrefs.getBoolean(Keys.cropBordersWebtoon, false)
fun padPagesVertWebtoon() = rxPrefs.getBoolean(Keys.padPagesVertWebtoon, false)
fun readWithTapping() = rxPrefs.getBoolean(Keys.readWithTapping, true) fun readWithTapping() = rxPrefs.getBoolean(Keys.readWithTapping, true)
fun readWithLongTap() = rxPrefs.getBoolean(Keys.readWithLongTap, true) fun readWithLongTap() = rxPrefs.getBoolean(Keys.readWithLongTap, true)

View file

@ -123,6 +123,7 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
const val RIGHT_TO_LEFT = 2 const val RIGHT_TO_LEFT = 2
const val VERTICAL = 3 const val VERTICAL = 3
const val WEBTOON = 4 const val WEBTOON = 4
const val VERTICAL_PLUS = 5
fun newIntent(context: Context, manga: Manga, chapter: Chapter): Intent { fun newIntent(context: Context, manga: Manga, chapter: Chapter): Intent {
return Intent(context, ReaderActivity::class.java).apply { return Intent(context, ReaderActivity::class.java).apply {
@ -388,6 +389,7 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
RIGHT_TO_LEFT -> R2LPagerViewer(this) RIGHT_TO_LEFT -> R2LPagerViewer(this)
VERTICAL -> VerticalPagerViewer(this) VERTICAL -> VerticalPagerViewer(this)
WEBTOON -> WebtoonViewer(this) WEBTOON -> WebtoonViewer(this)
VERTICAL_PLUS -> WebtoonViewer(this, true)
else -> L2RPagerViewer(this) else -> L2RPagerViewer(this)
} }

View file

@ -23,7 +23,6 @@ import kotlinx.android.synthetic.main.reader_settings_sheet.cutout_short
import kotlinx.android.synthetic.main.reader_settings_sheet.fullscreen import kotlinx.android.synthetic.main.reader_settings_sheet.fullscreen
import kotlinx.android.synthetic.main.reader_settings_sheet.keepscreen import kotlinx.android.synthetic.main.reader_settings_sheet.keepscreen
import kotlinx.android.synthetic.main.reader_settings_sheet.long_tap import kotlinx.android.synthetic.main.reader_settings_sheet.long_tap
import kotlinx.android.synthetic.main.reader_settings_sheet.pad_pages_vert_webtoon
import kotlinx.android.synthetic.main.reader_settings_sheet.page_transitions import kotlinx.android.synthetic.main.reader_settings_sheet.page_transitions
import kotlinx.android.synthetic.main.reader_settings_sheet.pager_prefs_group import kotlinx.android.synthetic.main.reader_settings_sheet.pager_prefs_group
import kotlinx.android.synthetic.main.reader_settings_sheet.rotation_mode import kotlinx.android.synthetic.main.reader_settings_sheet.rotation_mode
@ -73,7 +72,7 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia
viewer.onItemSelectedListener = IgnoreFirstSpinnerListener { position -> viewer.onItemSelectedListener = IgnoreFirstSpinnerListener { position ->
activity.presenter.setMangaViewer(position) activity.presenter.setMangaViewer(position)
if (activity.presenter.getMangaViewer() == ReaderActivity.WEBTOON) { if (activity.presenter.getMangaViewer() == ReaderActivity.WEBTOON || activity.presenter.getMangaViewer() == ReaderActivity.VERTICAL_PLUS) {
initWebtoonPreferences() initWebtoonPreferences()
} else { } else {
initPagerPreferences() initPagerPreferences()
@ -104,7 +103,6 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia
scale_type.bindToPreference(preferences.imageScaleType(), 1) scale_type.bindToPreference(preferences.imageScaleType(), 1)
zoom_start.bindToPreference(preferences.zoomStart(), 1) zoom_start.bindToPreference(preferences.zoomStart(), 1)
crop_borders.bindToPreference(preferences.cropBorders()) crop_borders.bindToPreference(preferences.cropBorders())
pad_pages_vert_webtoon.bindToPreference(preferences.padPagesVertWebtoon())
page_transitions.bindToPreference(preferences.pageTransitions()) page_transitions.bindToPreference(preferences.pageTransitions())
} }
@ -116,7 +114,6 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia
webtoon_prefs_group.visible() webtoon_prefs_group.visible()
crop_borders_webtoon.bindToPreference(preferences.cropBordersWebtoon()) crop_borders_webtoon.bindToPreference(preferences.cropBordersWebtoon())
pad_pages_vert_webtoon.bindToPreference(preferences.padPagesVertWebtoon())
} }
/** /**

View file

@ -31,9 +31,6 @@ class WebtoonConfig(preferences: PreferencesHelper = Injekt.get()) {
var imageCropBorders = false var imageCropBorders = false
private set private set
var padPagesVert = false
private set
var doubleTapAnimDuration = 500 var doubleTapAnimDuration = 500
private set private set
@ -50,9 +47,6 @@ class WebtoonConfig(preferences: PreferencesHelper = Injekt.get()) {
preferences.cropBordersWebtoon() preferences.cropBordersWebtoon()
.register({ imageCropBorders = it }, { imagePropertyChangedListener?.invoke() }) .register({ imageCropBorders = it }, { imagePropertyChangedListener?.invoke() })
preferences.padPagesVertWebtoon()
.register({ padPagesVert = it }, { imagePropertyChangedListener?.invoke() })
preferences.doubleTapAnimSpeed() preferences.doubleTapAnimSpeed()
.register({ doubleTapAnimDuration = it }) .register({ doubleTapAnimDuration = it })

View file

@ -125,7 +125,7 @@ class WebtoonPageHolder(
private fun refreshLayoutParams() { private fun refreshLayoutParams() {
frame.layoutParams = FrameLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT).apply { frame.layoutParams = FrameLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT).apply {
if (viewer.config.padPagesVert) { if (viewer.isVerticalPlus) {
bottomMargin = 15.dpToPx bottomMargin = 15.dpToPx
} }
} }

View file

@ -22,7 +22,7 @@ import timber.log.Timber
/** /**
* Implementation of a [BaseViewer] to display pages with a [RecyclerView]. * Implementation of a [BaseViewer] to display pages with a [RecyclerView].
*/ */
class WebtoonViewer(val activity: ReaderActivity) : BaseViewer { class WebtoonViewer(val activity: ReaderActivity, val isVerticalPlus: Boolean = false) : BaseViewer {
/** /**
* Recycler view used by this viewer. * Recycler view used by this viewer.

View file

@ -146,11 +146,6 @@ class SettingsReaderController : SettingsController() {
titleRes = R.string.pref_crop_borders titleRes = R.string.pref_crop_borders
defaultValue = false defaultValue = false
} }
switchPreference {
key = Keys.padPagesVertWebtoon
titleRes = R.string.pref_webtoon_padding_vert
defaultValue = false
}
} }
preferenceCategory { preferenceCategory {

View file

@ -20,6 +20,7 @@
<item>@string/right_to_left_viewer</item> <item>@string/right_to_left_viewer</item>
<item>@string/vertical_viewer</item> <item>@string/vertical_viewer</item>
<item>@string/webtoon_viewer</item> <item>@string/webtoon_viewer</item>
<item>@string/vertical_plus_viewer</item>
</string-array> </string-array>
<string-array name="reader_themes"> <string-array name="reader_themes">
@ -107,5 +108,4 @@
<item>@string/filter_mode_multiply</item> <item>@string/filter_mode_multiply</item>
<item>@string/filter_mode_screen</item> <item>@string/filter_mode_screen</item>
</string-array> </string-array>
</resources> </resources>

View file

@ -250,6 +250,7 @@
<string name="right_to_left_viewer">Right to left</string> <string name="right_to_left_viewer">Right to left</string>
<string name="vertical_viewer">Vertical</string> <string name="vertical_viewer">Vertical</string>
<string name="webtoon_viewer">Webtoon</string> <string name="webtoon_viewer">Webtoon</string>
<string name="vertical_plus_viewer">Continuous vertical</string>
<string name="pager_viewer">Pager</string> <string name="pager_viewer">Pager</string>
<string name="pref_image_decoder">Image decoder</string> <string name="pref_image_decoder">Image decoder</string>
<string name="pref_image_scale_type">Scale type</string> <string name="pref_image_scale_type">Scale type</string>