Acclorite / book-story

Material3 eBook reader - Book's Story. Built with Jetpack Compose. Free & Open Source & Ad Free. 7 supported file formats (.txt, .pdf, .epub, .fb2, .zip, .html, .htm), 5 supported languages. Lots of customization.
GNU General Public License v3.0
241 stars 10 forks source link

Preventing accident scrolls in Reader #61

Closed MalcolmReed-ent closed 1 week ago

MalcolmReed-ent commented 2 weeks ago

Why you want this feature to be implemented? Please describe. When reading on a phone with non-physical home buttons, it can be difficult to navigate using the back, home, or recent buttons. The current sliding bar sometimes leads to accidental page turns, which is frustrating when reading. Implementing a confirmation step or a "return to current page" option would prevent unintended navigation.

Describe the feature you'd like to be implemented. I propose adding a confirmation dialog or a quick "undo" option when using the sliding bar for navigation. This feature would work as follows:

When a user slides the bar to change pages, a small pop-up appears asking, "Are you sure you want to navigate to page X?"
The pop-up would include "Yes" and "No" buttons.
If "No" is selected, the reader returns to the previous page instantly.
Alternatively, implement a temporary "Undo" button that appears for a few seconds after a page turn, allowing quick recovery from accidental navigation.

This feature would provide a safety net for readers, ensuring that unintended page turns don't disrupt the reading flow.

Describe alternatives you've considered

Adjusting the sensitivity of the sliding bar to reduce accidental page turns.
Implementing a "lock" feature that temporarily disables navigation controls during reading.
Creating customizable touch zones on the screen for navigation, allowing users to define areas that trigger page turns.
Acclorite commented 2 weeks ago

When reading on a phone with non-physical home buttons, it can be difficult to navigate using the back, home, or recent buttons.

Well, bringing system bars by scrolling edges is not really intended way, I'd suggest to bring Top and Bottom bars first by clicking the screen, then using back button.

The current sliding bar sometimes leads to accidental page turns, which is frustrating when reading.

Yes, I know this may happen and I've considered some solutions.

Implementing a confirmation step or a "return to current page" option would prevent unintended navigation.

I'd say it would be more effective other way around, not confirming, but reverting.

I propose adding a confirmation dialog

Maybe that would work, but it would also frustrate when you actually want to scroll.

When a user slides the bar to change pages, a small pop-up appears asking, "Are you sure you want to navigate to page X?"

Ain't most effective way for sure.

Alternatively, implement a temporary "Undo" button that appears for a few seconds after a page turn, allowing quick recovery from accidental navigation.

Yes, this would be good, but I have a bit different solution.

Adjusting the sensitivity of the sliding bar to reduce accidental page turns.

But how would that be possible? Like you want to scroll till the end, but the last slider position scrolls through half the book?

Implementing a "lock" feature that temporarily disables navigation controls during reading.

This was my initial idea, but after thinking about it, I came to conclusion it would not prevent you from accidentally scrolling if you forgot to lock and would frustrate you even more after that xD

Creating customizable touch zones on the screen for navigation, allowing users to define areas that trigger page turns.

Haha, you just described a part of #13, but I do not plan on dropping slider as you may want to scroll through the whole book.

What is my solution? When you bring bars, you create a "checkpoint", which saves your exact position at the moment of bringing bars. When you scroll, arrow will appear in the direction of checkpoint, maybe even some visual marker of where that checkpoint is. If you click the arrow, you will be brought to the checkpoint position. If you hide bars, checkpoint will disappear, so I may make bars not hide when you scroll fast. This should prevent accident scrolls and be of use only when needed, not resulting in inconvenience when you don't even need lock or confirmation functionality.

Thank you for the feature request!