Skip to content

Commit 65f83db

Browse files
authored
New: Option to show only one page at a time in Vertical Reader
1 parent cdb8800 commit 65f83db

7 files changed

Lines changed: 33 additions & 8 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
1919
- Multiple poster/folder sizes [`c64222a`](https://github.com/ollm/OpenComic/commit/c64222a1b697f6de3f64f0ed79f1a7f293337bcf)
2020
- Implement header scrolling functionality [`cf5615e`](https://github.com/ollm/OpenComic/commit/cf5615eee312dcc4e1239528866bfcbfb86e0b23)
2121
- Clear cache for individual files [`45e2e99`](https://github.com/ollm/OpenComic/commit/45e2e99114c031f64c3b4ba218f3412273a7a169)
22-
- Add support in server settings for show in library the files in subfolders
22+
- Add support in server settings for show in library the files in subfolders [`e2fa97a`](https://github.com/ollm/OpenComic/commit/e2fa97aea24424499910eb90843150f93e6e0c12)
23+
- Option to show only one page at a time in Vertical Reader
2324

2425
##### 🐛 Bug Fixes
2526

languages/ca.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@
116116
"adjustToWidth": "Ajustar a l'ample",
117117
"notEnlargeMoreThanOriginalSize": "No ampliar més de la seva mida original",
118118
"rotateHorizontals": "Rotar les horitzontals",
119+
"forceSinglePage": "Mostra només una pàgina al mateix temps",
119120
"margin": "Marge",
120121
"marginHorizontal": "Marge horitzontal",
121122
"marginVertical": "Marge vertical",

languages/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@
116116
"adjustToWidth": "Adjust to width",
117117
"notEnlargeMoreThanOriginalSize": "Do not enlarge more than its original size",
118118
"rotateHorizontals": "Rotate horizontals",
119+
"forceSinglePage": "Show only one page at a time",
119120
"margin": "Margin",
120121
"marginHorizontal": "Horizontal margin",
121122
"marginVertical": "Vertical margin",

languages/es.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@
116116
"adjustToWidth": "Ajustar a lo ancho",
117117
"notEnlargeMoreThanOriginalSize": "No ampliar más de su tamaño original",
118118
"rotateHorizontals": "Rotar las horizontales",
119+
"forceSinglePage": "Mostrar sólo una página a la vez",
119120
"margin": "Margen",
120121
"marginHorizontal": "Margen horizontal",
121122
"marginVertical": "Margen vertical",

scripts/reading.js

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,8 @@ function disposeImages(data = false)
295295
let marginVertical = _margin.top;
296296
let marginHorizontalsHorizontal = readingHorizontalsMargin(data).left;
297297

298+
const forceSinglePage = (_config.readingForceSinglePage && !_config.readingWebtoon) ? true : false;
299+
298300
let contentRight = template._contentRight();
299301
let rect = contentRight.firstElementChild.getBoundingClientRect();
300302

@@ -384,7 +386,7 @@ function disposeImages(data = false)
384386
marginTop0 = marginTop1 = contentHeight / 2 - imageHeight / 2;
385387
}
386388

387-
if(readingViewIs('scroll'))
389+
if(readingViewIs('scroll') && !forceSinglePage)
388390
marginTop0 = marginTop1 = marginVertical;
389391

390392
let imgHeight0 = (clipVertical > 0 ? (imageHeight0 / (1 - clipVertical)) : imageHeight0);
@@ -570,7 +572,7 @@ function disposeImages(data = false)
570572
}
571573
}
572574

573-
if(readingViewIs('scroll'))
575+
if(readingViewIs('scroll') && !forceSinglePage)
574576
marginTop = marginVertical;
575577

576578
let imgHeight = (clipVertical > 0 ? (imageHeight / (1 - clipVertical)) : imageHeight);
@@ -3076,9 +3078,9 @@ function changePagesView(mode, value, save)
30763078
dom.query('.reading-view-'+value).addClass('active');
30773079

30783080
if(value != 'scroll')
3079-
template.globalElement('.reading-ajust-to-width').addClass('disable-pointer');
3081+
template.globalElement('.reading-ajust-to-width, .reading-force-single-page').addClass('disable-pointer');
30803082
else
3081-
template.globalElement('.reading-ajust-to-width').removeClass('disable-pointer');
3083+
template.globalElement('.reading-ajust-to-width, .reading-force-single-page').removeClass('disable-pointer');
30823084

30833085
if(readingIsEbook) handlebarsContext.loading = true;
30843086
template.loadContentRight('reading.content.right.html', true);
@@ -3151,12 +3153,12 @@ function changePagesView(mode, value, save)
31513153

31523154
if(value)
31533155
{
3154-
template.globalElement('.reading-view, .reading-reading-manga, .reading-double-page, .reading-do-not-apply-to-horizontals, .reading-blank-page, .reading-ajust-to-width, .reading-not-enlarge-more-than-original-size, .reading-margin-vertical').addClass('disable-pointer');
3156+
template.globalElement('.reading-view, .reading-reading-manga, .reading-double-page, .reading-do-not-apply-to-horizontals, .reading-blank-page, .reading-ajust-to-width, .reading-not-enlarge-more-than-original-size, .reading-margin-vertical, .reading-force-single-page').addClass('disable-pointer');
31553157
}
31563158
else
31573159
{
31583160
if(_config.readingView == 'scroll')
3159-
template.globalElement('.reading-ajust-to-width').removeClass('disable-pointer');
3161+
template.globalElement('.reading-ajust-to-width, .reading-force-single-page').removeClass('disable-pointer');
31603162

31613163
if(_config.readingDoublePage)
31623164
template.globalElement('.reading-do-not-apply-to-horizontals, .reading-blank-page').removeClass('disable-pointer');
@@ -3279,6 +3281,17 @@ function changePagesView(mode, value, save)
32793281

32803282
read(readingCurrentPath, imageIndex, false, readingIsCanvas, readingIsEbook);
32813283
}
3284+
else if(mode == 20) // Force show single page in scroll mode
3285+
{
3286+
updateReadingPagesConfig('readingForceSinglePage', value);
3287+
3288+
disposeImages();
3289+
calculateView();
3290+
stayInLine();
3291+
3292+
render.resized(readingDoublePage());
3293+
// updateEbook(true);
3294+
}
32823295
}
32833296

32843297
function change(key, value)

scripts/storage.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var changes = 95; // Update this if readingPagesConfig is updated
1+
var changes = 96; // Update this if readingPagesConfig is updated
22

33
var readingPagesConfig = {
44
readingConfigName: '',
@@ -15,6 +15,7 @@ var readingPagesConfig = {
1515
readingViewAdjustToWidth: false,
1616
readingNotEnlargeMoreThanOriginalSize: true,
1717
readingRotateHorizontals: false,
18+
readingForceSinglePage: false,
1819
readingMargin: {
1920
margin: 16,
2021
top: 16,

templates/reading.elements.menus.pages.html

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,13 @@
370370
<svg viewBox="0 0 52 32"><path d="M 8,0 C 3.58,0 0,3.58 0,8 0,12.42 3.58,16 8,16 8,16 8,16 8,16 12.42,16 16,12.42 16,8 16,3.58 12.42,0 8,0 8,0 8,0 8,0 Z"></path></svg>
371371
</div>
372372
</div>
373+
<div class="menu-simple-text reading-force-single-page gamepad-item{{#if _config.readingWebtoon}} disable-pointer{{else compare _config.readingView '!=' 'scroll'}} disable-pointer{{/if}}">
374+
{{language.reading.pages.forceSinglePage}}
375+
<div class="switch{{#if _config.readingForceSinglePage}} a{{/if}}" on="reading.changePagesView(20, true, false)" off="reading.changePagesView(20, false, false)">
376+
<div></div>
377+
<svg viewBox="0 0 52 32"><path d="M 8,0 C 3.58,0 0,3.58 0,8 0,12.42 3.58,16 8,16 8,16 8,16 8,16 12.42,16 16,12.42 16,8 16,3.58 12.42,0 8,0 8,0 8,0 8,0 Z"></path></svg>
378+
</div>
379+
</div>
373380
<div class="simple-slider gamepad-item" data-gamepad-left="events.rangeMoveStep(this, -1)" data-gamepad-right="events.rangeMoveStep(this, 1)" style="margin-top: 8px;">
374381
<div class="simple-slider-text">{{language.reading.pages.marginHorizontal}}<div><i class="material-icon slider-reset" onclick="events.resetRange(this)" data-default="16">undo</i><span>{{_config.readingMargin.left}}</span>px</div></div>
375382
<div class="range">

0 commit comments

Comments
 (0)