2
0
mirror of https://github.com/koreader/koreader synced 2024-11-13 19:11:25 +00:00
Commit Graph

693 Commits

Author SHA1 Message Date
Frans de Jonge
635927269d
[feat] ReaderGesture: add multiswipe support (#4607)
This basic initial implementation offers an introductory message
on the first multiswipe with the option to disable, as well as
a few example multiswipes.

Custom multiswipes can be added to `settings/multiswipes.lua`.
2019-02-17 21:38:02 +01:00
poire-z
62d548fc61 Highlight adjusting: avoid start and end crossing each other 2019-02-17 16:54:54 +01:00
Frans de Jonge
1623acc007 [UX] ReaderGesture: add option - toggle rotation 2019-02-16 22:13:19 +01:00
Frans de Jonge
e4b4680b04 [UX] ReaderGesture: add option - show history 2019-02-16 22:13:19 +01:00
Frans de Jonge
45b87307b4 [UX] ReaderGesture: add option - suspend action 2019-02-16 22:13:19 +01:00
Frans de Jonge
333f8658bb
[UX] ReaderGesture: add back to previous location as an option (#4600)
See https://github.com/koreader/koreader/issues/4333#issuecomment-464361133
2019-02-16 18:20:30 +01:00
Frans de Jonge
33840c17cb
[fix] Highlight moving button text shouldn't be translated (#4597) 2019-02-16 15:03:27 +01:00
Galunid
015fb4d34e Allows adjusting highlight start and end (#4582)
Adds arrow buttons under Delete|Edit.
Tap to move by word, hold to move by char.
2019-02-16 00:42:27 +01:00
NiLuJe
b274080846
Some more repaint/refresh tweaks (#4578)
* ReaderView & ReaderPaging panning should *probably* keep using "partial" ;). (Fix #4575)
* Try to avoid unnecessary footer repaints (mini status bar)
2019-02-11 03:28:46 +01:00
NiLuJe
5eb4fc5c2d [UX] Add Prev/Next page actions to GestureManager (#4570)
c.f., https://www.mobileread.com/forums/showthread.php?t=315023
2019-02-09 16:28:22 +01:00
NiLuJe
491f24d3d1 [UX] Don't show low battery warning when charging (#4563)
Fix #4560
2019-02-08 18:51:13 +01:00
NiLuJe
abc6d17a25
A few minor fixes after #4541 (#4561)
* Enforce dithering in PicDocument
* Ensure we'll get a flashing update on ScreenSaver exit
2019-02-08 18:31:40 +01:00
NiLuJe
8189945be9
A few graphics fixes after #4541 (#4554)
* Various FocusManager related tweaks to limit its usage to devices with a DPad, and prevent initial button highlights in Dialogs on devices where it makes no sense (i.e., those without a DPad. And even on DPad devices, I'm not even sure how we'd go about making one of those pop up anyway, because no Touch ;)!).
* One mysterious fix to text-only Buttons so that the flash_ui highlight always works, and always honors `FrameContainer`'s pill shape. (Before that, an unhighlight on a text button with a callback that didn't repaint anything [say, the find first/find last buttons in the Reader's search bar when you're already on the first/last match] would do a square black highlight, and a white pill-shaped unhighlight (leaving the black corners visible)).
The workaround makes *absolutely* no sense to me (as `self[1] -> self.frame`, AFAICT), but it works, and ensures all highlights/unhighlights are pill-shaped, so at least we're not doing maths for rounded corners for nothing ;).
2019-02-08 00:56:32 +01:00
NiLuJe
812e595608
Enable HW dithering in a few key places (#4541)
* Enable HW dithering on supported devices (Clara HD, Forma; Oasis 2, PW4)
  * FileManager and co. (where appropriate, i.e., when covers are shown)
  * Book Status
  * Reader, where appropriate:
    * CRe: on pages whith image content (for over 7.5% of the screen area, should hopefully leave stuff like bullet points or small scene breaks alone).
    * Other engines: on user-request (in the gear tab of the bottom menu), via the new "Dithering" knob (will only appear on supported devices).
  * ScreenSaver
  * ImageViewer
* Minimize repaints when flash_ui is enabled (by, almost everywhere, only repainting the flashing element, and not the toplevel window which hosts it).
  (The first pass of this involved fixing a few Button instances whose show_parent was wrong, in particular, chevrons in the FM & TopMenu).
* Hunted down a few redundant repaints (unneeded setDirty("all") calls),
  either by switching the widget to nil when only a refresh was needed, and not a repaint,
  or by passing the appropritate widget to setDirty.
  (Note to self: Enable *verbose* debugging to catch broken setDirty calls via its post guard).
  There were also a few instances of 'em right behind a widget close.
* Don't repaint the underlying widget when initially showing TopMenu & ConfigDialog.
  We unfortunately do need to do it when switching tabs, because of their variable heights.
* On Kobo, disabled the extra and completely useless full refresh before suspend/reboot/poweroff, as well as on resume. No more double refreshes!
* Fix another debug guard in Kobo sysfs_light
* Switch ImageWidget & ImageViewer mostly to "ui" updates, which will be better suited to image content pretty much everywhere, REAGL or not.

PS: (Almost 💯 commits! :D)
2019-02-07 01:14:37 +01:00
poire-z
e802b96e45 cre: allow text selection/highlighting across pages
Panning to the bottom right corner (or top left corner) switches
to scroll mode and scroll the page forward (resp. backward) 1/3rd
of the screen.
One has to pan out of the corner to continue selection.
Panning again to that corner scrolls another 1/3rd of screen.
Page mode is restored when highlighting or dismissing the highlight
dialog, and a little marker is shown at where selection was started
so one does not get lost after all that scrolling and restoring.
2019-02-03 22:12:00 +01:00
poire-z
6e3b40e2bf Adds CreDocument:getScreenPositionFromXPointer()
Factorize same code used by ReaderLink and ReaderRolling into
CreDocument:getScreenPositionFromXPointer().
2019-02-03 22:12:00 +01:00
poire-z
895589ddaa
Page overlap menu (cre): set nb of overlap lines (#4538)
Make this existing setting tunable with a menu item.
Also make the Page overlap and Highlight menus use a
checkbox, and their items grayed out when disabled.
2019-02-03 11:17:27 +01:00
poire-z
335a513826 [chore] cleanup multi-lines translatable strings
Revert 9971eb85 and make multi-lines strings more readable.
(Multiline translatable strings extraction has been fixed
in koreader-misc tralua_xgettext.py.)
2019-01-29 00:05:55 +01:00
Martín Fernández
23f1597246 android: disable exit menu 2019-01-22 14:27:14 +01:00
Galunid
0678d75438 Adds choice of default action when highlighting (#4486)
New menu Document > Highlight action.
2019-01-17 22:12:38 +01:00
poire-z
4d67dd59ca Rationalize Links> menu items
- Remove duplicated "Show footnote popup". Have the same setting
  applied for Tap or 'Swipe to follow nearest link'.
- Make some menu items enabled or disabled depending on if they would
  have some effect with the current state of other menu items, as
  some kind of visual self-documentation of these dependancies.
- Add menu item to set the footnote popup font size, relative to
  the book font size.
- SpinWidget: allow for showing some informative text
2019-01-15 23:56:11 +01:00
poire-z
f533acb7f9 InfoMessage: avoid overflowing screen height with long messages
When no height= provided, and the InfoMessage would overflow
screen height when some long message is provided, decrease the
font size until the widget fit.
2019-01-15 23:02:40 +01:00
Frans de Jonge
fd662bc829
[fix, lang] Swipe to show footnotes in popup setting text (#4477)
Duplicate with the tap to show footnotes text, reported on https://www.mobileread.com/forums/showthread.php?p=3798627
2019-01-13 15:49:50 +01:00
NiLuJe
d113cb9475
A few Kobo input tweaks (#4450)
* Fix the Touch input probe on Trilogy devices that depend on the touch_probe_ev_epoch_time quirk (fix #630)
* Expose a "Pageturn button inversion" feature in the Navigation menu (for all devices with keys) (fix #4446)
* Allow ignoring the accelerometer on the Forma (Screen > Ignore accelerometer rotation events; also available from the Gesture Manager) (fix #4451)
* Fix SleepCover handling on the Forma (fix #4457)
* Make isWifiOn a tiny bit more accurate (check the actual WiFi module instead of sdio_wifi_pwr)
* Move all flash related Screen options to the eInk submenu
2019-01-08 02:59:47 +01:00
poire-z
3fe6eeff71 cre: adds in-page footnotes and alternative TOC hints tweaks
Adds 2 tweaks to allow displaying footnotes at the bottom of pages,
like it's done in some printed books. This will work only with
books with correctly specified footnotes with the adequate EPUB
attributes, and with Wikipedia EPUBs. But users may be able to
activate them for other books with some user style tweaks.

Adds a few tweaks to control the build of the alternative TOC.
With some user style tweaks, one may be able to build a usable
TOC for some badly formatted or converted books.

Also fixes 2 paragraphs tweaks.
2019-01-02 09:46:39 +01:00
poire-z
fddb77d758 ReaderRolling: remove swipe north/south
Fix some conflict on Android where a swipe north from the
bottom to show system buttons (to exit or swith apps) would
cause a page change.
These gestures have never been available in ReaderPaging, so
it shouldn't be a big loss.
2019-01-01 20:19:09 +01:00
NiLuJe
f6743a45db
Proper Forma support (#4414)
* Enforce a known rotation on startup, to make sure we handle touch input coordinates properly.
* Proper FrontLight warmth support (thanks to @cairnsh & @pazos in #4291)!
* Fix the PageTurn buttons mapping to match Nickel's defaults
* Properly remap PageTurn buttons depending on the current rotation.
* Actually enable the Mk.7 screen refresh codepath on *all* Mk.7 devices (I'd messed up the device check...).
* Full accelerometer handling (includes a touch of refactoring regarding orientation handling in general).
* Fix insidiously broken USBMS behavior in Nickel after we exit on FW >4.8.

Fix #4291
Fix #3002
2018-12-28 04:32:42 +01:00
Frans de Jonge
b21a9efa53
[UX] Download dictionary: keep menu open (#4412)
As suggested by @poire-z in https://github.com/koreader/koreader/pull/4401#issuecomment-447629244
2018-12-23 19:49:06 +01:00
poire-z
80cb9d0db1 adds "Translation settings" menu
and the list of 104 languages supported by Google Translate
2018-12-17 15:19:25 +01:00
poire-z
22b7f17cd8 Fix translator, enable selected text translation
Update translator.lua to use a still working google translate API.
Add a method to show translations (main and alternates) in
a TextViewer.
Re-enable "Translate" button in text selection/highlight buttons
dialog.
Target language can be set with a manually added setting:
    translator_target_language = "fr"
and will fallback to the UI language.
2018-12-17 15:19:25 +01:00
Frans de Jonge
b261a647c2
[feat] Add dictionary download option (#3176)
You can now download pretty much all of the easily available freely licensed dictionaries I could find.
2018-12-13 06:27:49 +00:00
poire-z
8f77de8481
Fix crash when tap on external link in non-EPUB documents (#4391) 2018-12-10 20:39:31 +01:00
poire-z
ea946d52d6 bump crengine: tables rendering improvements and others
bump crengine, which includes:
- Adds support for symbol fonts (local or embedded)
- Fix some issues when rendering text in constrained width
- Page splitting: fix possible missing blocks
- CSS: adds support for 'auto', ignore % for borders
- Fix right border drawing position
- Fix: adds missing properties in copystyle()
- Adds comments, erm_killed rendering method
- Adds getRenderedWidths(): get node min/max node content width
- Tables rendering: fixes and improvements
- getRenderedWidths: enable min_width to be a single CJK char
- Fix wrong text wrap avoid in some case
- epub.css: add style for 'blockquote'
- Fix rendering issue when line ends with an image

Adds a few style tweaks related to tables.

Enforce table width: 100% in Wikipedia EPUBs to keep
previous look, which feels better with the various kinds
of tables in Wikipedia pages.

Fix unit tests as juliet.epub (full of blockquotes), grew quite
a few pages with the epub.css update.
2018-12-07 14:11:46 +01:00
poire-z
2b9694d7d2 [fix] Ensure "Open last/previous" point to existing files (#4367) 2018-11-28 21:14:07 +01:00
poire-z
85ac59ae00 CreDocument: fix document loading interferences (#4349)
When a main document is opened for displaying, some other
document openings (for getting metadata or cover image)
could affect the main document.
Split some code from CreDocument:init() into another new
method CreDocument:setupDefaultView(), that will only be
called by ReaderUI when opening the main document (and not
by these other openings like Book inforation, View cover...)

Also speed up some of these other openings (Search, Screensaver)
by using doc:loadDocument(false) to load only metadata and
avoid parsing the HTML.

Details in https://github.com/koreader/koreader/issues/4346#issuecomment-440036496
2018-11-20 21:07:59 +01:00
poire-z
afc4be3ae0
Double-tap chapter nav: add origin page to location stack (#4339) 2018-11-16 23:51:47 +01:00
poire-z
f8199dd493
Fix a few edge cases crashes and issues (#4334)
- ReaderConfig does not need to call again self:initGesListener() on
  screen rotation/resize, as it uses the TouchZone infrastructure
  that deals itself with rotation. So, it was adding new gestures
  that were overriding tap on footer and preventing it from working.
- ReaderFooter: fix refresh area (which was too small when toggling
  from hidden to visible)
- ReaderToc: fix crash when showing TOC in scroll mode after rotation
- Menu: fix crash when no onReturn defined (could happen when tap on
  bottom left corner when showing an empty TOC)
2018-11-14 20:58:56 +01:00
Frans de Jonge
b5911076bc
[fix, lang] Bottom left/right adjective order (#4301)
Also put left first, which seems more logical.
2018-11-02 10:35:41 +01:00
Martín Fernández
1e69fae7bc [feat] Add support for BQ/Fnac devices (#4294)
Adds support for devices found in https://blog.bq.com/es/bq-ereaders-developers-program/. Tested on BQ Cervantes 4 (last BQ device from 2017).

It adds a new touch input event handler (discussed in #4275) which should work on other single touch devices (ie: Kobo Touch, Mini, Glo, Aura HD) but wasn't tested.

Includes base bump with: [feat] Add BQ/Fnac device support (https://github.com/koreader/koreader-base/pull/745)
2018-10-31 23:48:36 +01:00
poire-z
2a8ab2b311 View HTML: adds Prettify button to CSS viewer
Quick and non-full-proof prettification, but quite good
and enough to make unreadable/minified CSS files readable
for Style tweaks cooking.
2018-10-23 13:12:40 +02:00
poire-z
b3efd5a333 ReaderDictionary:dismissLookupInfo(): avoid forceRePaint()
Avoid forceRePaint() (and showing the full page without any
widget) between closing the "Looking up..." info message and
displaying the Dictionary result window, as it's not really
needed (I must have added it for symmetry with
ReaderDictionary:showLookupInfo() where it is needed.)
This avoids some occasional refresh competition glitches.

Also trim spaces at start or end of selection (can't hurt),
and replaced ugly string.gsub(text) with text:gsub().
2018-10-23 13:12:40 +02:00
poire-z
233f375af4 Cleanup onSetStatusLine()
Follow up to fa0117bb (#4268), to make things a bit clearer:
Only ReaderRolling get the 'SetStatusLine' event, and tells
crengine about the change, and then send the 'UpdatePos' event.
ReaderFooter now just gets a :setVisible() method.

Now, all the code that calls a self.ui.document:set* method, that
most probably triggers a full re-rendering by crengine, do signal
'UpdatePos' immediately after. This event signals that all page
number, pages count, positions... are no more valid and must be
queried or computed again.
This could also be used if we ever want to cache Page Links or
Screen Boxes: this event will have us dropped these caches.
2018-10-23 13:12:40 +02:00
onde2rock
53e7a0b6c9 [Non-touch] Add a menu item to toggle a bookmark on the current page (#4262) 2018-10-16 21:05:58 +02:00
poire-z
fa0117bb2a Fix default not being used for View mode and Progress bar
Default setting set by holding on the bottom config buttons
for "View mode" (scroll/page) and "Progress bar" (full/mini)
were not used.

Also, when switching Progress bar from 'full' to 'mini',
show the mini bar again.
2018-10-14 21:32:31 +02:00
poire-z
1b3d974bec Footnotes: fix current link being unhighlight in some cases
When a link is covered by the footnote widget, we highlight it
again when closing the footnote, and schedule an unhighlight
0.5s later.
When we tap on another footnote link, this was happening too
but the unhighlight unhighlighted all, including the new
footnote link.
This disable the former when the latter happens.
2018-10-14 21:32:31 +02:00
poire-z
9d8531a4b5 Fix footnotes and markers with full status bar
Take full/top status bar's height into account when
computing coordinates.
Also wrap getPageMargins() in CreDocument, so we
don't use cre.cpp _document directly anywhere else.
2018-10-14 21:32:31 +02:00
Martín Fernández
717184f1d6 move e-ink related settings to a submenu (#4246) 2018-10-10 21:34:47 +02:00
onde2rock
42a7dd4502 disable panning in page view_mode (#4265) 2018-10-10 20:39:34 +02:00
poire-z
f9086a2ba9
EPUB links: show footnotes in popup, larger tap area (#4261)
Adds new options to the Links> submenu, for now only
available and used with CRE documents.
- Allow larger tap area around links
- Ignore external links
- Show footnotes in popup
- Show more links as footnotes

(This last item is mostly for testing and loosening the
footnote detection algorithm, and see how it would behave
with glossary-like links and inter glossary terms links.)

Fix distance computation from gesture position to link by
using segments.
Code for detecting if a link is a footnote is in cre.cpp, and
tweakable a bit with flags in ReaderLink:showAsFoonotePopup().

Footnotes HTML content is displayed by a new FootnoteWidget,
which uses MuPDF for its rendering.
From it, swipe south or tap outside to close, swipe to the left
to follow the original link and jump to the footnote location
in the book.

Also fix tap on highlights after the recent change to use segments
for displaying: use segments also when checking taps.
2018-10-10 18:50:24 +02:00
poire-z
0e2a3b6263 Selection menu: allow viewing HTML 2018-10-08 22:04:50 +02:00