Commit Graph

3077 Commits (e4b97802a5228f0db4dc3aa1d51cc837ded932a9)

Author SHA1 Message Date
hius07 cb7e670c4a
MultiInputDialog: do not refresh full screen on show (#8760)
Fix ugly full screen flashing on show.
2 years ago
hius07 99edc53919 BookStatusWidget: insert TitleBar 2 years ago
NiLuJe 035b24bb81 UIManager: Give more time to the kernel to figure out if we're actually
plugged in...
2 years ago
NiLuJe 0408816a54 ReaderFooter: Take the PowerCover into account in the battery level
widget

Since we only use a single icon, we have to take a few shortcuts:

* The icon itself is computed based on the average of both batteries.
* The actual value is the sum of both batteries.
* Much like everywhere else, charging means the *aux* battery charging
  (i.e., connected to a power source).

Re #8741, which does the same for ReaderHeader.
2 years ago
hius07 c1c89dd611
TouchMenu: use radio buttons for single choice menu items (#8757) 2 years ago
poire-z f764a61b69 KeyValuePage: allow for more fancy callbacks
Add support for hold_callback.
Provides kv_page and kv_item to callbacks.
Allow for item removal and refresh.
2 years ago
hius07 1c863f76aa
Bookmarks: start Add note with empty text, add some buttons (#8738)
- New button Go to bookmark in Bookmark details dialog.
- New button Latest bookmark in the popup menu.
- Empty input box for new note, new button Paste to
  paste highlighted text (auto-text).
- Allow duplicated bookmarks to avoid orphaned highlights.
- TextBoxWidget: fix enabled up-arrow on empty box in InputDialog.
2 years ago
Philip Chan 978aa2006a
FocusManager:focusTopLeftWidget(): only if hasDPad (#8737)
Focusing (highlighting/inverting) widgets should not
happen on touch devices withoud DPad.
2 years ago
zwim f2557a7aa6
Terminal emulator: full rewrite, real vt52 emulator (#8636)
New real terminal emulator, replacing the old plugin.
The emulator is basically a vt52 terminal (enriched with
some ANSI-sequences, as ash, vi and mksh don't behave well
on a vt52 term).
So far working: ash, mksh, bash, nano, vi, busybox, watch...
The input supports: tab-completion; cursor movement;
backspace; start of line, end of line (long press);
page up, page down (long press).
User scripts may be placed in the koterm.koplugin/scripts/
folder, aliases can be put in the file aliases and startup
command in the file profile.user in that folder.
2 years ago
poire-z eb5e0f9be2 BookMap: long-press on (i) to switch current/initial views 2 years ago
poire-z 95b35ec669 Allow any multiswipe to close some fullscreen widgets
For consistency with BookMap and PageBrowser widgets
where swipe south (the usual gesture to quick close)
can't be used for closing and we had to use any
multiswipe instead, allow any multiswipe to close
these other fullscreen widgets too:
Menu (ToC, Bookmarks), KeyValuePage, ImageViewer,
BookStatusWidget, ReaderProgress, CalendarView.
2 years ago
Philip Chan 3af268dd7a
Non-Touch: improve bottom menu usability (#8712)
- FocusManager: allow managing sub widgets by merging their
  "layout" in the main one; make "press" support simpler by
  handling it as a fake tap event at the center of the
  focused widget.
- Setup gestures on non-touch devices for new focus manager.
- ToggleSwitch: use child layout.
- ButtonProgressWidget: use child layout.
- SpinWidget and DoubleSpinWidget: add keyboard navigation.
2 years ago
poire-z 21932c24a2
UI font fallbacks: allow using more "Noto Sans xyz" (#8722)
Add a submenu allowing users to add Noto Sans fonts
to be used as UI fallback fonts.
Lots of them are alrady there on Android, but can be
downloaded (manually) and side-loaded by the user
on other platforms.
2 years ago
hius07 a7842d134c ja_keyboard spinwidget: no default value in description 2 years ago
hius07 2e49b780bd InputText clipboard: disable Paste if empty 2 years ago
hius07 0cdbe91e2a KeyboardLayoutDialog: insert TitleBar 2 years ago
hius07 a3e901dcd3 OpenWithDialog: movable, addWidget 2 years ago
poire-z 16e3b2f0ac Allow Backspace to work as back button 2 years ago
John Beard ccc49036aa Handle arrow keys and enter in emulator text fields 2 years ago
NiLuJe e39ee325f9 Cleverer UIManager <-> PowerD circular dependency handling
Thanks to @poire-z ;).
2 years ago
NiLuJe 2462c1c5c1 PowerD: Make sure we immediately display accurate battery capacity on
resume.

(MONOTONIC doesn't trick during suspend, so we could happily display the
pre-suspend capacity for a while).
2 years ago
poire-z 402b0cf895 Wikipedia: tweak EPUB css and footnote styletweaks
EPUB: have pages with footnotes marked as non-linear
so they can be hidden with "Hide non-linear flows".
In-page footnotes: keep the footnote number near the
left margin (a recent crengine renders them near the
text by default).
2 years ago
comphilip f468f873bd
Support non-touch device to choose file or folder (#8696)
## Background
`pathchooser.lua` does not support non-touch device to choose file or folder due to those device cannot generate long press event.

## Choose File
Non-touch device can select file in list, it is good enough to choose file without long press to confirm.

## Choose Folder
`pathchooser.lua` changes the label of current directory `.` to `Long-press to choose a folder`. It is user friendly, while for non-device, it is a very good place to let user tell the system I want the current folder to be chosen without extra long press.
2 years ago
hius07 7783d9c8e3
InputDialog: insert TitleBar (#8695)
into InputDialog, MultiInputDialog, OpenWithDialog, LoginDialog widgets.
2 years ago
NiLuJe eb0c2bfc93 Kobo: Handle a few PowerCover quirks...
* The first few capacity reads after connecting to the cover may fail

* The PowerCover may trigger spurious move/add usb_plug uevent,
which translate into Charging events for us.
Instead of blindly lighting up the charging LED on those,
check if the device is actually charging, first.
2 years ago
NiLuJe 5e3790677e OPDS: Add standard ebooks feed to existing installs
c.f., https://github.com/koreader/koreader/pull/8606#issuecomment-1008327687
2 years ago
NiLuJe dc98384177 PowerD: Add a framework to report the status of auxiliary batteries
Implement it on the Kobo Sage, for the PowerCover

TouchMenu: Display auxiliary battery status

Kobo: More accurately report the PowerCover's charging status

i.e., try to actually figure out if the auxiliary battery is charging
instead of just checking the reader's battery (because that one will
often swap between the charging and discharging state as it drains the
aux battery...).

PowerD: Use a cached timestamp when doing battery pull checks
2 years ago
poire-z 0216493c43 Wikipedia: rework wiki languages internal handling
Fix various issues with stacked Wikipedia lookup results,
and follow up lookups when invoked from Wikipedia lookup
history (where going to a search for language LL would
not use language LL when hitting "Full wikipedia").
2 years ago
poire-z dccd0da4cc Fix hold duration in text/html box widgets
Fix very-long-press in DictQuickLookup that should allow
doing the query to the other domain (dict/wiki) instead
of the current one.
Similar to 7dea979.
2 years ago
hius07 ca6d82e668
More widgets: insert TitleBar (#8683)
SpinWidget, DoubleSpinWidget, DateTimeWidget, RadioButtonWidget got new TitleBar.
2 years ago
hius07 2a244278e3
Translator: copy translation to clipboard or save to note (#8669) 2 years ago
hius07 958077364a
Filemanager: insert TitleBar (#8648) 3 years ago
hius07 5c39c19a73
[chore] Remove leftover: cface (#8659)
Ancient menu widget had it.

Not used anymore.
3 years ago
hius07 1bfb49c6a5
PathChooser: add left Home button (#8646) 3 years ago
hius07 55532b1397
Menu widget: insert TitileBar (#8639) 3 years ago
poire-z 6fd4805bd1 ImageViewer: update to TitleBar widget
Rewrite widget layout building and update logic.
3 years ago
poire-z 2d7d6fe088 TitleBar: new options for subtitle and icon rotation 3 years ago
poire-z a6b09c2981 BookMap, PageBrowser: make help_text translatable
Minor wording update.
Add a larger and thicker info.svg for their top left icon.
3 years ago
poire-z ad0454dcdf KeyValuePage, Sortwidget: fix RTL mirrored layout 3 years ago
poire-z 9e1f1f19cc Style tweaks: add "Ignore publisher line-break restrictions" 3 years ago
hius07 9f6355e0ed
SortWidget: insert TitleBar (#8627) 3 years ago
hius07 1bd7b4f088
TextViewer: insert TitleBar (#8625) 3 years ago
poire-z a1cbc3bb9e KeyValuePage: update to TitleBar widget 3 years ago
poire-z 48ca7e820c DictQuickLookup: update to TitleBar widget
Also tweak ReaderHighlight:onHoldRelease() to avoid
doing its stuff when onHold() is clearing highlight
(previous CheckButton was closing/clearing on hold
release, new TitleBar close button does that on hold).
3 years ago
poire-z 4546d826ee TitleBar: new options, dedicated close button
- Fix hold callback name
- Add options to handle long titles (truncated by default):
  "title_multines" and "title_shrink_font_to_fit" (allowing
  setTitle() with them makes the code a bit more complex).
- Add options to set bottom line color and horizontal padding.
- Use an added close.svg (based on exit.svg, tweaked to have
  similar size and baseline as other icons) for close button.

IconButton:
- handle hold/hold_release similar to Button.
- new option allow_flash to allow disabling flashing.
3 years ago
ichnilatis-gr 7163a392a8
Update el_keyboard.lua (#8622)
Adding some combinations with accents and breathings.
3 years ago
poire-z bc16b32395 Add Book map and Page browser features
- Book map: shows a map of content, including TOC,
  boomarks, read pages, non-linear flows...
- Page browser: shows thumbnails of pages.

- ReaderThumbnail: new Reader module that provides
  a service for generating thumbnails of book pages.
  It makes available these 2 new fullscreen widgets.
- ReaderBookmark, ReaderLink, Statistics: add methods
  to return new views of bookmarks, previous locations
  and read pages, that are needed by BookMapWidget.
- ReaderToc: compute TOC max_depth.
- ReaderBookmark, ReaderHighlight: send events on
  bookmark add/update/remove so thumbnails of the
  pages impacted can be trashed.
3 years ago
poire-z 2530e954a2 Add TitleBar widget
Existing widgets building their own title bar with help
of CloseButton should progressively be updated to use
this, for clarity, consistency, and less code duplication.
3 years ago
hius07 9bb096484a
FileChooser: show nb of files and subdirs in folders (#8598)
On folders, instead of "5 items", show "2 dirs 3 files"
separately (using symbols for "dirs" and "files").
Also fix: if files filtering is enabled, PathChooser did
show the full number of files in subfolders, instead
of the number of filtered files.
3 years ago
zwim 6c9e222d33
Screensaver: allow limiting stretch of covers and images (#8570)
ImageWidget: adds stretch_limit_percentage parameter.
Add support for screensaver on the emulator, for easier testing.
3 years ago
hius07 da7ef64773
Menu widget: title bar resize (#8603) 3 years ago
poire-z b35c28e8b4
[Non-Touch] Don't add touch-related menu items (#8608)
They were ending up orphaned as "New:" in the top menu first tab.
3 years ago
Frans de Jonge 6bf85483a8
Style tweaks: add in-page classic classname Polish footnotes (#8587)
See <https://www.mobileread.com/forums/showthread.php?p=4183244#post4183244> for discussion.
3 years ago
Frans de Jonge 1622822931
[chore, CI] Remove unused logger require (#8588) 3 years ago
hius07 20e9f3e80a
textviewer: fix refresh (#8576)
When TextViewer is showing up, it causes screen refresh of the rectangle from the upper left corner of the screen (0,0) till the lower right corner of the TextViewer window (the result of `combine`).
So when the TextViewer is not full-screen, left and upper parts of the screen are refreshed.
This unpleasent screen flashing can be seen, for exampe, when showing book description from the Book information page, or when calling the clipboard (long-press on the text input box).
Let's show the TextViewer in a usual way, as (almost) all other widgets do.
3 years ago
hius07 a9229ec3aa
Menu widget: add extra (left) title button (#8564)
Customizable icon and actions on tap and long-press.
3 years ago
hius07 f83eee02dd
[fix] filechooser: disable long-press in select mode (#8567) 3 years ago
Scarlett 8f1d219154
TextBoxWidget: add option to set bgcolor (#8559) 3 years ago
hius07 1df6ab751b
ButtonDialogTitle: no bold font in the title by default (#8557) 3 years ago
hius07 d4eecd9f00
SpinWidget in Dispatcher fix (#8558)
Enable SpinWidget OK button in dispatcher for unchanged value.
3 years ago
hius07 a703b213f7
File manager: group operations (#8536)
Copy/Move/Delete for group of files.
"Select files" button in the filemanager Plus menu.
3 years ago
ichnilatis-gr 59eaa471e6
Greek keyboard: ancient Greek numerals addition (#8554)
Added the Greek numerals for 6, 90 and 900, they are used
even today when we write numbers with Greek letters.
3 years ago
poire-z 5ed22cafb5
TextBoxWidget: fix crash in legacy mode (#8545)
Just do as in _measureWithXText(): convert to
string when text is not (ie. a number).
3 years ago
yparitcher 2fe5ab0e7a
Trapper: fix doc (#8539) 3 years ago
hius07 4be2c81582
SpinWidget fix enable/disable OK button (#8529)
Regression since #8495. SpinWidget with value_table didn't work.
3 years ago
hius07 19271c08c4
Checkbutton widget optimization (#8522)
-checkmark toggling is separated from the callback
-default width added
3 years ago
Alberto 6ebcfd9e79
[fix, desktop] Use XDG_DATA_HOME to search for fonts (#8521)
Same as <https://github.com/koreader/koreader/pull/8507>.
3 years ago
Frans de Jonge 19a607b548
[i18n] Add context to "Update" (#8519)
In response to the comment by @ilyats on Weblate:

> Text appears in code twice, as menu item and as dialog button label. Ideally, translations should be different.
3 years ago
hius07 785eb5f3ef
Bookmark search (#8504)
From bookmark list, main menu and with a gesture.
3 years ago
Frans de Jonge d9730cf0fc
[chore, CI] Remove empty whitespace (#8506) 3 years ago
hius07 eda8379e8c
SpinWidget, DoubleSpinWidget: enable/disable OK button (#8495)
OK/Apply button is enabled only after changing the input value.
3 years ago
hius07 791bb380ab
ConfigDialog: fix set as default (#8498)
Fix "Set as default" action with SpinWidget and DoubleSpinWidget.
Correct name of the setting to be saved as default.
3 years ago
hius07 ad09411c3f
DoubleSpinWidget buttons move (#8490)
Move Default and extra buttons above Cancel/OK.
Default values shown in the default button.
Precisions can be set for both values separately.
Minor geometry fix for consistence with SpinWidget.
3 years ago
zwim ef4d88ccd6
Battery stats plugin: tidy up, single page (#8491)
KeyValuePage: add a 'single_page' option to force
showing all items on a single page.
3 years ago
zwim 6a01abb52c
[doc] add documentation to a few widgets (#8425) 3 years ago
Dylan Garrett 7495ea29ef
InputDialog: add 'use_available_height' option (#8467)
Use it with bookmark edit, to allow entering longer notes.
3 years ago
Frans de Jonge 10305789dc
[i18n] Add context to various none/auto/small/medium/large (#8489)
Needed for Greek and possibly other languages.

Closes #8478.
3 years ago
zwim b029a6a1ff
[autosuspend, plugin] Switch to datetimewidget and provide default values (#8480) 3 years ago
hius07 372dd9e36b
SpinWidget buttons move (#8485)
SpinWidget "Default value" and extra buttons move up.
Cancel/OK buttons row is in the bottom now.
Default value is shown in the Default button.
3 years ago
poire-z 56d54d2c1a Style tweaks: have "Justify most/all text" work on txt documents 3 years ago
zwim e9ba854ff0
DeviceMenu: Colons and more information (#8435)
Add information to device menu entries
3 years ago
hius07 3a7cba38c2
Customize page turns tap zones (#8475)
Settings for page turn tap zones position (vertical or horizontal) and width.
3 years ago
yparitcher 5dbeddd2a1
Wifi: toggle when connected even if offline (#8468) 3 years ago
Frans de Jonge dcd34d409e
[chore] Change "filebrowser" to "file browser" (#8466) 3 years ago
poire-z 6f2fdd96f8
[chore] Fix a few luacheck errors (#8461) 3 years ago
zwim 8ef426d79f
ReaderMenu/FileManagerMenu: deduplicate Exit menu code (#8459) 3 years ago
zwim 1d92ee19fb
Navigation menu: cleanup, use colons in menu (#8442) 3 years ago
hius07 217937a5bc
ReaderPaging/Rolling: deduplicate inverse_reading_order code (#8445) 3 years ago
roygbyte e995cf1355
Fix typo in ListView doc (#8444) 3 years ago
Aleksa Sarai 7e611ac50c
keyboard: japanese: always put digits as the south gesture for latin (#8443)
This is to match GBoard's layout for the latin keyboard mode.

Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
3 years ago
zwim abcd989ec4
[Status bar] Add custom text to footer (#8419)
Allows to add any text to the status bar. Can be a placeholder (empty space) for better positioning of the indicators.
3 years ago
hius07 3dabbd5d73
Typeset menu: adds "Reset document settings to default" (#8412) 3 years ago
Aleksa Sarai cdae66a661 keyboard: japanese: switch to 12-key flick layout
This layout is far more commonly used on mobile devices, and allows for
much easier typing. The keyboard primarily functions through gestures in
the four cardinal directions to select which vowel kana to select. In
addition, users can cycle through each kana row by tapping the key
within a 2-second window (this is the equivalent to T9 input for
Japanese phone keyboards).

This also resolves the long-standing issue that the old keyboard did not
correctly handle dakuten (there was a standalone dakuten key which added
a stray dakuten mark, and the umlat mode which added dakuten to all of
the keys it could) and could not input handakuten characters at all.

In order to allow adding dakuten and cycling through the various
modifiers for the previous kana, we need to wrap the input-box (similar
to korean) but luckily we don't need any state machine magic since we
just need to modify the last character in the character buffer. However
because the tap timeout for T9-like-cycling needs to be reset after any
non-tap key we need to add some basic wrappers around a few other
input-box methods.

Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
3 years ago
Aleksa Sarai fb0e5fca94 menu: keyboard_layout: add ability for layout-specific settings
A layout might want to make some specific feature configurable, so
create an addToMainMenu-like system for allowing layouts to add their
own configuration sub-menu to the keyboard configuration menu.

Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
3 years ago
Aleksa Sarai cb702fb062 inputtext: add access methods for internal character list
This allows for InputText wrappers (namely the Japanese keyboard which
needs to be able to apply modifiers to the character before the cursor)
to nicely access the character list.

Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
3 years ago
Aleksa Sarai 7baeebc2d4
dictionaries: switch to far more up-to-date JM(ne)dict (#8413)
The previous version of JMdict comes from 2009 and doesn't appear to
work at all when trying to do basic lookups (likely due to some kind of
encoding problem). In addition, the license information and sourcing was
not really in line with the requirements specified by the JMdict
license. This version is far more up-to-date and also includes synonym-based
deinflection (though because KOReader has a Japanese plugin now, this is
technically not necessary).

Since there didn't exist a nicely-maintained place to download these
dictionaries (because StarDict is not widely used for Japanese
dictionaries), I've set up a personal GitHub repository where I've
hosted them. Note that we're intentionally not pinning the commit hash
because GitHub only recommends we use gh-pages for CDN purposes, and one
of the requirements of the JMdict license is that you need to be able to
update to later versions.

Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
3 years ago
NiLuJe 4d261d29a4 ProgressWidget: Better contrast in thin mode
Re #8400

Also, use the proper colors when switching between thick & thin.
3 years ago
NiLuJe bc5da5276d NetworkManager: Always prefer system APs as intended.
If we had a local prefered AP with a higher RSSI,
we attempted to associate with it over wpa_supplicant
being already attempting to associate with its own preferred AP.
That... failed horribly.

Also adapt to the new lj-wpaclient API, fixing a few other edge-cases,
and making the whole thing slightly faster because we no longer
uselessly sleep.
And more reliable because we now actually wait for replies to our
requests.

Bump base

https://github.com/koreader/koreader-base/pull/1424
3 years ago
hius07 bfddf710d6
InputDialog: fix "number" input (#8383) 3 years ago
zwim a7cfc65928
Fix crash when entering a digit on the SDL keyboard (#8388)
Fixes #8387.
3 years ago
Aleksa Sarai 7c5243667b reader: implement language-support plugin system
This creates a new plugin system which hooks into a handful of reader
operations in order to allow plugins to add language-specific support
where the default reader falls short. The two hooks added are:

 * During hold-without-pan taps, language plugins can modify the
   selection in order to better match what users expect koreader to
   highlight when selecting a single word.

   The vast majority of CJK language words are more than one character,
   but KOReader treats all CJK characters as a single word by default,
   so adding this hook means that readers no longer need to manually
   select the whole word every time they need to look something.

 * During dictionary lookup, language plugins can propose alternative
   candidate words to look up if the selected word could not be found in
   the dictionary.

   This is pretty necessary for Japanese and Korean, both of which are
   highly agglutinative languages and the fuzzy searching system of
   StarDict is simply not usable because often the inflection of the
   word is so much longer than the dictionary form that sdcv decides to
   chop off the actual word and search for the inflection (which yields
   useless results).

This system is of particular interest for readers of CJK languages
(without this, looking up words using KOReader was fairly painful) but
this system is designed to be minimal and language-agnostic enough that
other languages could make use of it by creating their own plugins if
the default "whole word" highlight and fuzzy-search system doesn't match
their needs.

Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
3 years ago
Aleksa Sarai da70fe9de1 common_settings: migrate document menu to menu_order ordering
This is necessary in order to allow the language support module to be
added to the menu outside of the common_settings menu table definition.

Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
3 years ago
Aleksa Sarai 7a0e3d5e68 readerhighlight: remove selected_word and use selected_text everywhere
There were two ways of specifing selected text for a highlight depending
on whether it was a "single word" or text selected using hold-and-pan.
In addition to being a bit more complicated than is necessary, with the
addition of the language support plugin system (where the "single word"
selected might be expanded), it makes more sense to simply use the same
logic and table structure for both cases.

The dictionary lookup special case (hold-without-pan triggering a
dictionary lookup by default) still works as before.

In addition, this patch fixes a minor inefficiency during dictionary
quick lookup -- before this patch, the highlight would be re-selected
because the quick lookup window is run concurrently and tries to fetch
ReaderHighlight.selected_text but this is set to nil immediately after
triggering the lookup. This is unnecessary because :clear() will be
called anyway when the quick pop-up closes, and so clearing this can be
left until then.

Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
3 years ago
Aleksa Sarai a29d24f86d geom: supplement :combine with more generic .boundingBox
It is a bit cleaner to do all of the necessary looping over lists of
Geoms within a straight-forward Geom.boundingBox function rather than
looping over :combine every time (or reimplementing :combine in some
cases). Geom:combine can be trivially reimplemented in terms of
Geom.boundingBox as well.

Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
3 years ago
NiLuJe 942ea70235 ProgressWidget: Simplify painting logic.
* Use paintRect and plain colors instead of lightenRect and a weird
  dimming factor.
* Update call sites to the new API
* Handle FP maths properly (i.e., floor coordinates & ceil dimensions at
  the latest possible time).
* Fix border handling in the fill bar (make sure we actually honor it
  when computin the x position, and that we won't overflow into it when
  computing the width).
* Update docs
3 years ago
hius07 22a012e729
[chore] RadioButtonWidget: remove unused "Use default" string (#8354) 3 years ago
hius07 d652eec2cd
ReaderHighlight: allow updating a highlight drawing style (#8323)
Also modify highlight dialog's "Edit" button to be "Add note"
or "Edit note" whether a note has already beed added.
Adds a new RadioButtonWidget.
3 years ago
hius07 f0b992d425
Bookmarks: new settings and tweaks (#8301)
Bookmarks list:
- page numbers are displayed
- page bookmarks are marked with a star
- new setting: Sort by largest page number (default: checked)
New bookmark setting: Add page number / timestamp to bookmark
- If enabled (default), bookmark name is 'Page # notes @ time'.
- If disabled, bookmark name is equal to the notes field.
Rename bookmark dialog:
- page number and timestamp are displayed in the input
  dialog description
- blank input renames bookmark to the default name in
  accordance with the new setting
Also fix: changing boundaries of the highlight: the name of the
highlight is not changed if it was previously edited by the user.
3 years ago
hius07 7036500f5b
Menu widget: adapt font size of shrunken items (#8340) 3 years ago
hius07 4ffabcf087
Screensaver: correct call of BookStatusWidget 3 years ago
poire-z ca1c3484d8
DictQuickLookup: two minor fixes (#8333)
- Allow Wikipedia languages cycling when invoked
  from File browser.
- Fix TextBoxWidget content not updated when next/prev
  when use_xtext=false.
3 years ago
yparitcher 1c2e5eee1d
BookStatusWidget: fix status toggle (#8329)
Fix:  #8324

cf: #7671
3 years ago
ichnilatis-gr a1e0d87c62
Greek keyboard: minor updates (#8319)
New popup menu on the Greek acute key for Greek numeral signs.
3 years ago
poire-z ade89cb9b6
Adds ScrollableContainer, to be used with tall widgets (#8299)
And use it with KeyboardLayoutDialog.
3 years ago
hius07 b2a7d0d5ce
BookStatusWidget: use correct read percentage (#8318)
Closes #8317.
3 years ago
ichnilatis-gr 23be2f278c
[UX] Keyboard: Fix Greek Y popup (#8308)
Correction of the "Υ" popup, where instead of Greek upsilon (as was written) there was the Greek capital tau ("Τ").
3 years ago
yparitcher feab232f35 Kopt: keep 4 items per panel
move newly enabled auto straighten from settings to crop
3 years ago
yparitcher 888802f618 kopt: allow pdf auto straighten 3 years ago
NiLuJe 75706ca0be
TextBoxWidget: Unbreak Wikipedia (bis) (#8298)
re: https://github.com/koreader/koreader/pull/8275#issuecomment-933744596
3 years ago
ichnilatis-gr e4337d1306
Greek keyboard: minor updates (#8292)
Adds Greek semicolon (upper dot) to the dot pop-up menu.
3 years ago
ichnilatis-gr c6b3d5d3a5
Greek keyboard: minor updates (#8291)
Adds Greek semicolon (upper dot) to the dot pop-up menu.
3 years ago
hius07 3fe09ecc01
CenterContainer: options to handle larger content (#8277) 3 years ago
hius07 4c9d1ac3f8
Spinwidgets: can now get width or width_factor (#8269) 3 years ago
hius07 2b87b1d8ed
Virtualkeyboard: allow grey'ing the legacy umlaut mode key (#8276)
This key is still available on non-updated keyboard layouts.
3 years ago
NiLuJe 0ea8bee4e1
TextBoxWidget: Unbreak Wikipedia (#8275)
Turns out we can't release line_num_to_image early, so, delay it until the final, full widget teardown.

(Regression since #8250, c.f., https://github.com/koreader/koreader/pull/8250#discussion_r716646211)
3 years ago
zwim 0c7d174cd7
[frontlight, kobo, cervantes] Remove auto_warmth (#8154)
The feature is now provided by the "Auto warmth
and night mode" plugin (#8129).
3 years ago
zwim 9ed22df03f
DateTimeWidget: replaces DateWidget and TimeWidget (#8240)
Deduplicate code by combining DateWidget and TimeWidget.
ReadTimer plugin: some rewording.
3 years ago
ichnilatis-gr 84baf00416
Greek keyboard: minor updates (#8258) 3 years ago
zwim 20f7d14495
Plugin: Auto warmth and night mode (#8129)
("Auto nightmode" only on devices without warmth.)
3 years ago
hius07 e3cf8eea56
Many widgets: similar size in portrait and landscape (#8238)
- ButtonTable, ButtonDialog, ButtonDialogTitle
- ConfirmBox, MultiConfirmBox, SkimToWidget
- KeyboardLayoutDialog (and initially move the dialog
  down to show the title in landscape mode)
- InputText's Clipboard dialog
Also: Notification: truncate long text
3 years ago
hius07 1e47cd7e5f
SpinWidget: similar size in portrait and landscape (#8226) 3 years ago
hius07 3e313be22b
Screenshoter: allow reset default folder from menu (#8227) 3 years ago
hius07 02170ee9b6
Progresswidget: lighter background color (#8195)
Should make ticks more visible.
3 years ago
NiLuJe 65abac9431 TextBoxWidget: Fix getSize when recycling an instance.
* Make sure we have a BB to measure in getSize, in case the instance is
  recycled. (fix #8241)

* nil `line_num_to_image` early in `:free`

* Hide the _renderText calls that are used across the whole module to
  simply update the text layout & instantiate the inner bb behind a
  wrapper function with a slightly less obscure name.
3 years ago
hius07 859327dea5
Input dialogs: keep size in rotation (#8223) 3 years ago
hius07 5b049a5a82
Help text fixes (#8217)
* Update css_tweaks.lua

* Update readersearch.lua
3 years ago
hius07 e934a4ad67 Refresh menu table: more remove unused 3 years ago
hius07 aa210e96ce Refresh menu table: remove unused 3 years ago
hius07 5c62c11aa8 TimeWidget: keep "colon space" size 3 years ago
hius07 28c132a740 DateWidget: keep "dash space" size 3 years ago
hius07 054d94a560 Refresh menu custom settings: keep size in rotation 3 years ago
hius07 11aca120a9 ConfigDialog: keep size in rotation 3 years ago
hius07 bdccc7de07 DateWidget: keep size in rotation 3 years ago
hius07 a321bade2b TimeWidget: keep size in rotation 3 years ago
hius07 611e576b7e DoubleSpinWidget: keep size in rotation 3 years ago
hius07 66156084e6 NumberPickerWidget: keep size in rotation 3 years ago
yparitcher c40874d300 book shortcuts plugin 3 years ago
hius07 f6020a7260
Readerhighlight: manage actions (#8199)
Discussion in #6409.

Highlight action renamed to Long-press on text and moved from Gear - Document to Gear - Taps and gestures.

Added action Do nothing.
Removed menu item Typeset - Highlighting - Allow highlighting.

Fixed untranslated strings in the Cycle highlight action notification.

Long-press on images always opens ImageViewer. Closes #6409.
3 years ago
Mel-kior 9e55e4da3d Fix syntax 3 years ago
Mel-kior 3001efb85f Fix quote and text 3 years ago
Mel-kior 224e167309 Add passwordless wifi support 3 years ago
hius07 07c8b0029e Buttontable: pass icon size to the button 3 years ago
hius07 3b6fd8a1d5 Button: default icon size 3 years ago
hius07 e16d36d5da
Readersearch: add button to recall search input dialog (#8190) 3 years ago
poire-z 084ae1509d
Style tweaks: add a few ruby specific tweaks (#8189) 3 years ago
hius07 0283c44ff7
Page overlap: long-press to set as default (#8180)
Also deduplicate code out of ReaderPaging and ReaderRolling,
now in ReaderView and a specific menu module.
3 years ago
hius07 3a677f40de
Spinwidget: update default width (#8182) 3 years ago
hius07 ab4e27908b
Standardize: long-press/hold to long-press (#8185)
* Gestures: standardize hold to long-press

* Common settings menu: standardize hold to long-press

* Readerstyletweak: standardize hold to long-press

* Readersearch: standardize hold to long-press
3 years ago
NiLuJe acbf4b7a8c
Document: Round dimensions properly in getPageDimensions (#8170)
* Geom:transformByScale:
  * Apply the right scaling factor to the y axis
  * Round in a more sensible fashion (àla fz_round_rect, since we pretty much exclusively use it in a similar fashion).
* Bump base (https://github.com/koreader/koreader-base/pull/1407)
3 years ago
hius07 1a127633c2
InputDialog: add :addWidget(), use it for checkboxes (#8168)
Also: Text editor now closes its keyboard when calling Find
and Go to line (which open their own keyboards) to avoid
conflicts between multiple keyboards.
3 years ago
hius07 85cfb552cb
Keyboard preferred layouts: usability fixes (#8159)
Store list of layouts in settings file as array of enabled
layouts only (up to 4 elements). Optimize code.
Allows sorting of the abbreviations in the globe popup:
just check layouts in the desired order (the first checked
will be northeast).
Requires onetime migration to clean up the settings.
3 years ago
yparitcher 31397e10ef Dispatcher: initial Kopt support 3 years ago
yparitcher 36fd668093 ConfigDialog: remove uneeded support for muliple events
Fixes reflow support for dispatcher
3 years ago
Martín Fernández 903646debe
[plugin] Exporter plugin without evernote (#7983) 3 years ago
ichnilatis-gr 785200d76b
VirtualKeyboard: Update el_keyboard.lua (#8148) 3 years ago
NiLuJe 426e56613c
FrontLightWidget: Fix "Auto" max_width (#8144)
re: https://github.com/koreader/koreader/issues/8070#issuecomment-902162990
3 years ago
NiLuJe 910c0bd250
VirtualKeyBoard: Switch to schedule-less visual feedback for flash_keyboard (#8143)
Should prevent open/close races ;).
3 years ago
hius07 32d61c7878
Virtual keyboard: default layout, compact mode (#8142) 3 years ago
mergen3107 39b810a3bd
[lang] Change "full" to "best" (#8141)
I guess `full` was in on of the old iterations. Might affect translations though
3 years ago
hius07 68782c3f89
Checkbutton: optimize callback (#8134) 3 years ago
NiLuJe c171a06212 USBMS: Dismiss ConfirmBox on unplug
Fix #8112
3 years ago
yparitcher c6a8dc34a2
[UX] HE keyboard: Use updated symbols from new layout (#8131) 3 years ago
mergen3107 fdae07e2cc
VirtualKeyboard: redesign and enhancements (#8089)
See #8089 for all the details.
3 years ago
hius07 684fd6c12d
Standardize select/choose to choose (#8128)
Closes #8105.
3 years ago
asynchronous-sheep c16d2712ef
Fix link for Portuguese dictionary “Dicionário Aberto” (#8118) 3 years ago
hius07 3c3361addf
File browser, Path chooser: fix margin of the long folder name in the header (#8103)
* Filemanager: margin of the folder name in the header

* Menu: margin of the folder name in the header
3 years ago
hius07 66b644295a
Checkbutton: remove unused (#8108)
* Inputtext checkbutton: add "parent"
3 years ago
NiLuJe edfb29b406 Fix duplicate suspend scheduling in Device:onPowerEvent
We should always unschedule suspend before scheduling it again (i.e.,
use rescheduleSuspend ;)).

Fix #8097 (many thanks to @Mel-kior for the detailed repro!)
3 years ago
NiLuJe c044480658 Don't exclude the full .kobo directory tree
Only exclude the useless/dangerous bits.
Allows getting to the Dropbox folder.

Fix #8101
3 years ago
poire-z 1a12e8555e
Translator: add "Translate from book language" option (#8094)
When enabled, if the book has some supported language tag
in its metadata, use it as the source language. Otherwise,
fallback to the current settings (auto-detect or selected
source language).
3 years ago
poire-z 55a4d6fd1f Button: avoid cut words when switching to multilines
Followup to 954ba960
3 years ago
poire-z 6e02e62dcb Dict: avoid list items bullet/digit truncation with HTML dicts 3 years ago
poire-z 5df84bcb4f Footnote popups/in-page: support type/role=endnote 3 years ago
hius07 b875ccc6f9
InputText: fix hold handling, add clipboard empty hint (#8091)
Before: when holding the input box in input dialogs
for calling the Clipboard, hold release was passed to
MovableContainer and input dialog moved a little bit.
3 years ago
hius07 19f43c47e1
CheckButton: accurate vertical alignment (#8083) 3 years ago
poire-z 54eb2e1137
Quick start guide: fix links to images (#8072)
"../resources/..." was not working on some devices like
Android. Build the correct relative path on all devices.
3 years ago
poire-z 954ba9608e
Button: reduce font size to avoid truncation (#8078)
If the button text would be truncated, try to avoid
it by reducing the font size, and even switching to
a 2-lines TextBoxWidget.
TextBoxWidget: fix possible glyphs truncations when
a small line_height is used. Also avoid some bad
result from getFontSizeToFitHeight(), possible due
to some rounding errors.
3 years ago
hius07 ef1dea990e
Menu/GoTo: tweak go to page/letter dialog layout (#8056)
2 columns instead of 3, to get larger buttons and
avoid truncation with some translations.
3 years ago
hius07 fa4784cf13
Screenshoter: options to View and Delete after screenshot (#8050)
Also remove code duplication in ImageViewer.
3 years ago
hius07 c8a7f52672
Checkbutton: ensure max width, multiline if needed (#8066) 3 years ago
hius07 ace3f0ee16
ConfirmBox: new properties (#8065)
* keep_dialog_open, default to false.
Set to true to keep dialog open upon pressing any button, except Cancel and dismissable tap.

* other_buttons_first, default to false.
Set to true to put other buttons above Cancel - OK row
3 years ago
zwim b3c4b8dc94
[fix, lang] SortWidget: make "go to page" string translateable (#8061) 3 years ago
Frans de Jonge 3f8d389ee4
[fix, lang] KeyValuePage: make "go to page" string translateable (#8059) 3 years ago
hius07 e5f28a0f60
"Page turns" menu development (#8022)
Make "Taps and gestures - Page turns" available only in reader.
Move there other page turn related menu items from Navigation.
Remove duplicated code. Added standard "star" for default RTL.
3 years ago
Evan Boehs 9bb6b70c7a
Check for update → Check for updates (#8027) 3 years ago
hius07 45d770b131
Activate menu: standardize to 2 checkboxes (#8017) 3 years ago
poire-z 5bab3e5e98
Fix luacheck after d9cc3af2 3 years ago
hius07 2ab31a9a36
File browser: Settings submenu reordering (#8000) 3 years ago
Brian Hughes d9cc3af220
Reset everyone's duration time to classic (#8008)
Reset unwanted migration of this setting to "modern"
done with #7897.
3 years ago
Galunid e7fa044807
Remove zsync plugin (#7957) 3 years ago
poire-z b31b7728db
Quick start guide: revamp text and look (#7985)
By @offset-torque, extracts from his upcoming user manual.
See https://github.com/koreader/koreader/discussions/7898
3 years ago
zwim 48d1b23469
FileSearcher honor filemanagers sorting order (#7978) 3 years ago
hius07 41f2a6f8a4
InputText: fix search on multi-bytes UTF-8 (#7981)
Also fix crashes when text is invalid UTF-8.
3 years ago
zwim 9d2c6b07aa
Fix date in onetime_migration (#7980)
Fixes #7979
3 years ago
hius07 7eea2ae7cd
InputText/InputDialog: add case sensitive search (#7966) 3 years ago
hius07 5947085ba4
InputText: up/down arrows move cursor to start/end of line (#7976)
when already on the first or last line.
3 years ago
ichnilatis-gr 4b7ac191dc
Greek keyboard: translate Space key (#7974) 3 years ago
poire-z ca91df1f87
CheckButton: fix hold when in a movable container (#7948) 3 years ago
Frans de Jonge f411035d7d
[plugin] Remove GoodReads plugin (#7943)
Deprecated half a year ago in <https://github.com/koreader/koreader/pull/7101>.

Any potential remaining users whose API key hasn't yet automatically expired through inactivity can copy it over from an older release if desired.

Discussed in <https://github.com/koreader/koreader/discussions/7898#discussioncomment-976475>.
3 years ago
NiLuJe 0e60625160
Screensaver: Fix an old w/h typo (#7941)
Fix #7938, exposed by #7929
3 years ago
hius07 f711f060bf
A few small design fixes (#7933)
Reduce CheckButton font size.
Remove icons in TouchMenu truncated items popup.
Fix some wording.
3 years ago
NiLuJe ed5a9294a4
ScreenSaver: Saner close behavior (#7929)
Should fix #7643
3 years ago
jimman2003 a7bbf24f87
Greek keyboard: tweak popup keys (#7930)
By @ichnilatis-gr
3 years ago
poire-z c0386e5dd0
Greek keyboard: add more diacritics (polytonic) (#7906)
Provided by @ichnilatis-gr
3 years ago
hius07 8146bbf13b
KeyboardLayoutDialog movable (#7911) 3 years ago
Brian Hughes ba65dc155b
Adds time left for chapter and document to the screensaver message options (#7897) 3 years ago
hius07 6c35e01acb
InputDialog: manage keyboard hiding (#7908)
Disable keyboard hiding with Tap in some cases.
3 years ago
poire-z 859c68d3f9 Menu: fix item sizes when switching display modes 3 years ago
hius07 884c664f63
Device status alarm: battery and memory (#7857)
Move former low battery alarm into a device status
alarm menu, and add high memory usage checks.
3 years ago
hius07 5e2d83965b
InputDialog, InputText: a bunch of updates (#7896)
- New way to hide the VirtualKeyboard: to hide the keyboard
  tap any point of the screen outside the inputbox and above
  the keyboard; to show the keyboard tap the inputbox.
  (Removed hacky "holding the arrow-down key" which is no
  longer needed).
- InputDialog windows are movable/translucent by default
- Redesign of the Clipboard dialog
3 years ago
hius07 db60ba48b7
OPDS catalog, Cloud storage: hold return arrow to go to top (#7845) 3 years ago
hius07 2d764d47b8
InputText: fix typo (#7880) 3 years ago
hius07 c6ccc73d55
Status bar: hide battery if level higher than threshold (#7876)
closes #7242
3 years ago
hius07 61d24879d3
Translator: copy translation input to the clipboard (#7855) 3 years ago
NiLuJe e7f7ac9547 Menu: Also avoid calling input handlers on unpainted widgets
Fix #7869
3 years ago
NiLuJe 240a4acdcc TouchMenu: Abort early if tap/hold handlers are called on an unpainted
widget

May happen if we have blocking stuff on startup (e.g., Wi-Fi), and you
spam tap the screen during the white screen.
3 years ago
NiLuJe d2db93431a DictQuickLookup: Fix stupid thinko in #7432
Fix #7864
3 years ago
yparitcher 002b4d4be9 Kopt/Creoptions: change to using an event to update configurable. Abstract implimentation out of ConfigDialog 3 years ago
yparitcher 0577f57617 TouchMenu: open to items page when going up a level
Builds on #7490
3 years ago
Martín Fernández 9f097da4f0
Bump android backend (#7813)
* Bumps the target Sdk to Android 11 (API30)
* Add a crash handler
3 years ago
hius07 d8ea93662f
NumberPicker: correct max day in input dialog (#7803) 3 years ago
hius07 0d161272fc
Menu/ToC: harmonize font sizes (#7795)
Menu: display the right item ("mandatory") with a
smaller font size related to the left item font size,
instead of a function of perpage.
ToC popups: use same font size as in ToC.
3 years ago
NiLuJe 0b58abada5
[fix] ReaderZooming: Deal with some more zoom_mode shenanigans (#7780)
Migrate *global* zoom_mode settings to genus/type, too.

Nothing can actually set this as a global anymore, but we still honored
it nonetheless.

Fix #7778
3 years ago
NiLuJe 8d37d49d70 CSS Tweaks: Update Alt ToC description, now that it moved to a dedicated
menu entry.
3 years ago
NiLuJe df77819dc2 Menu: Allow translating the "Go to" input hint 3 years ago
Frans de Jonge 039947886f
Revert "Hyphenation: add custom hyphenation rules (#7746)" (#7785)
This reverts commit f25da5d0d5.
3 years ago
hius07 ecafdbfed8
KeyValuePage: use items font size in child TextViewer (#7782) 3 years ago
zwim f25da5d0d5
Hyphenation: add custom hyphenation rules (#7746)
The hyphenation of a word can be changed from its default
by long pressing for 3 seconds and selecting 'Hyphenate'.
These overrides are stored in a per-language file, i.e:
koreader/settings/user-German.hyph.
3 years ago
yparitcher b30e366ccd
ReaderLink: option to add location to stack on opening book (#7685) 3 years ago
hius07 4973134fb6
VirtualKeyboard: Allow hiding the keyboard with a hold on the down arrow key (#7751)
(And showing it again with a tap on an input field)
3 years ago
NiLuJe 5a468b8cf2 VirtualKeyBoard: Handle UX fallouts of VirtualKeyPopup overflow.
Don't close the popup on the first hold_release, ensuring it won't
immediately close on a *different* key if the finger hasn't moved.

If the finger *did* move, that's a quick swipe, and that's unaffected by
this tweak.
3 years ago
NiLuJe ad3bc29b1e
Events: Never stop propagating CloseWidget (#7744)
That seems like a rather terrible idea to beign with, and that that may actually have fatal consequences.

Re #7738

Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>
3 years ago
zwim e955a28796
Uppercase sharp s (#7741) 3 years ago
Martín Fernández fdb0539aae
Bug report changes (#7709)
* android: dump logcat to file
* Update .github/ISSUE_TEMPLATE/bug_report.md

Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>
3 years ago
zwim 8315ee1c7e
Notifications menu: remove "No notifications" (#7736)
Implemented when all other menu items are unchecked.
3 years ago
hius07 7419820c09
VirtualKeyboard: hold left/right arrows moves to start/end of line (#7730) 3 years ago
NiLuJe dac6fb4008
Notifications: Sort the settings appropriately in the FM (#7734)
Otherwise it's flagged as orphaned ;).

(Also tweak indenting of said settings to be more in line with how we
usually do these).

Overlooked in #7718
3 years ago
NiLuJe c05b1a4ee4
ReaderZooming: Deal with some more fallout of the new zoom modes (#7728)
* Namely, ensure zoom_mode is consistent with genus & type *both ways*. (I only dealt with the "no zoom_mode" case in my original fixup).
Because documents with settings dating back from before the new zoom modes had "old" zoom_mode settings mixed with "new" genus/type defaults that didn't agree with each other.
It lead to super-confusing ConfigDialog behavior, because ConfigDialog was in fact not reflecting the reality.
(As the source of truth is actually `zoom_mode`).

* There was a snafu in manual mode, because of the extremely weird way prefixes are handled by Configurable/ReaderConfig/DocSettings/ConfigDialog.
So, make sure we only have a *single* zoom_factor, and that it's updated and saved properly under the right name everywhere.

Fixes inconsistencies between first swapping to manual mode, and what the ConfigDialog said/did (because again: possibly a lie), vs., re-opening the same document, which would magically use *different* settings, closer to what was expected (but still broken because of the prefix mismatch and a disagreement on defaults between the two variants).

Fallout from #6885
3 years ago
hius07 fdb69e0eee
InputText: show clipboard dialog on long-press (#7719) 3 years ago
zwim 6e2be98edc
Notifications: options to show none/some/more (#7718)
Notification: adds some functions so it can be used as
a notification manager.
Have various bits of code emitting events that may generate
notifications advertize themselves as the source for following
notifications.
Add a menu to allow selecting some subsets of sources
to show or hide.
3 years ago
Frans de Jonge 6e1950676a
[lang] Fix minor inconsistency (#7714)
It should be "Not found." as in "Find next".
3 years ago
poire-z d0165f8bd1 Fix scrolling, add inertial scroll on non-eInk devices
Add a new reader module: ReaderScrolling, that exposes
some Scrolling options to the menu (which are to be used
by and implemented in ReaderPaging and ReaderRolling
themselves) and implement some inertial scrolling logic
used by both of them.
Default to "Classic scrolling" which is the expected
behaviour on phones and tablets.
The old CreDocument buggy behaviour is available as
"Turbo scrolling" for both Paging and Rolling documents.
Added a "On release scrolling" option that might be
useful on eInk to avoid dynamic pan/scrolling.

Try to avoid bad interactions between pan and swipe,
cancelling unwanted panning if we ended up doing a
swipe or multiswipe.
3 years ago
poire-z 001d48f6cc Fix a few possible crashes
- TextWidget: avoid crash with small max_width (could happen
  when opening menu on a small emulator window)
- TextWidget: avoid crash if re-used after :free()
- ReaderHighlight:clear(): fix possible crash when
  scheduled and run after document closed
- DictQuickLookup: minor canSearch() tweak ('selected_text'
  is normally available only on multiple words selection,
  but is currently available on single word selection thanks
  to some unrelated side effect)
3 years ago
NiLuJe 90c38e2d0d ReadHistory: nil guard a Document instance access
We're now more careful about this, so, I suppose weird timings may mean
we might be trying to access a nil here.

Fix #7706

Guard a few other similar constructs
3 years ago
NiLuJe 189035cafc ReaderFooter: Get rid of magic nil settings
And go through one-time-migration to ensure the settings are properly
filled.

Also, disable hold-to-skim by default.
3 years ago
NiLuJe 99ee3763c1 USBMS: Close all widgets before quitting
FFI finalizers can fire in unspecified orders, but for MuPDF,
we need to ensure that the context is the *very* last thing that get
destroyed.
As such, we need to make sure we close open documents properly on our
end, first.

This prevents potential crashes while switchign to USBMS inside an open
document handled by MuPDF.

Fix #7428
3 years ago
hius07 e70bc60f0f
Inputtext: don't allow the cursor to move within a hint (#7687)
Same as 17e6049e but for "hold".
3 years ago
hius07 f3fe643d81
InputDialog: add search (#7701)
Searches for a string in the edited text.
Available in the Text editor and other input dialogs with the navigation bar enabled.

Find first searches from the beginning of the text.
Find next searches from the next to cursor position, used for continious search.
By now, the Search input window is closed after the search. You need to press the Find button again for continious search, the search string is kept in the input.
Is it better to keep the dialog open for the comfortable continious search? And close it with the Cancel only?

Case insensitive. Cursor jumps to the beginning of the found string.
Notifications are shown for better results visibility.

Unfortunately, violated our standartization to "search", couldn't invent better short wordings.
3 years ago
Martín Fdez ffd5b88c87 warn before downgrading APK. Prompt for download in the browser to get a notification 3 years ago
Martín Fdez 23b7bfe0ce move android specific bits outside OTAManager 3 years ago
hius07 834feef8cd
InputDialog: add 'Go to line' button (#7673) 3 years ago
NiLuJe e6027313e9 ConfigDialog: Gesture range needs to be a Geom
Regression since #7664
Fix #7681
3 years ago
NiLuJe bb65a69193
Geom: nil guard a few rect methods (#7664)
We've managed to trip a few of those on dimen fields post-init but
pre-paintTo in a few weird coner-cases, a point at which dimen is often
nil.

ConfigDialog: Deal with that very thing in update()

Fix #7656
3 years ago
poire-z f0ecbeb1d5
ReaderToc: option to show a dotted line (#7669)
A dotted line joining the ToC entry text to the
page number may make it easier to use.
(This replaces the menu item separator from d879062e.)
Also fix baselines aligment, which could be a bit off.
3 years ago
NiLuJe de6f2e84a3
FileManager/ReaderUI: Clarify the current instance accessor (#7658)
* FileManager/ReaderUI: Clarify the current instance accessor

Make it clearer that we actually store it in a *module/class* member, not an *instance* member.

Also, warn if there's a close/open mismatch.
3 years ago
Martín Fernández 939fcf7f0e
android: avoid downloading the APK again if there's one download in progress + fix signature error (#7657) 3 years ago
Hzj_jie 1a08f2cb69
Plugins: adds PluginMenuInserter helper (#7419)
Allows user-plugins to register themselves
into "More tools" menu.
3 years ago
NiLuJe 1ffbd8760d KOPTInterface: Minor optimization when hashing the configurable status
Use a table & table.concat instead of individual concats.
And then use that same table for every hash-related operation.

(Nothing else uses the configurable hash function, otherwise I'd have
limited the table shenanigans to the function itself).
3 years ago
NiLuJe 2635593890 Cache: Some more tweaks after #7624
* Allow doing away with CacheItem
  Now that we have working FFI finalizers on BBs, it's mostly useless overhead.
  We only keep it for DocCache, because it's slightly larger, and memory pressure might put us in a do or die situation where waiting for the GC might mean an OOM kill.
* Expose's LRU slot-only mode
  And use it for CatalogCache, which doesn't care about storage space
* Make GlyphCache slots only (storage space is insignificant here, it was
  always going to be evicted by running out of slots).
* More informative warning when we chop the cache in half
3 years ago
Martín Fernández d303fdf694
android: Prompt for install updates when they're downloaded (#7632) 3 years ago
NiLuJe 06a273b48d Port ffiUtil.getTimestamp users to TimeVal:now()
They were all using it to compute durations,
something which is going to be more sensible
from a monotonic clock source.
3 years ago
NiLuJe 21b067792d Cache: Rewrite based on lua-lru
Ought to be faster than our naive array-based approach.
Especially for the glyph cache, which has a solid amount of elements,
and is mostly cache hits.
(There are few things worse for performance in Lua than
table.remove @ !tail and table.insert @ !tail, which this was full of :/).

DocCache: New module that's now an actual Cache instance instead of a
weird hack. Replaces "Cache" (the instance) as used across Document &
co.
Only Cache instance with on-disk persistence.

ImageCache: Update to new Cache.

GlyphCache: Update to new Cache.
Also, actually free glyph bbs on eviction.
3 years ago
NiLuJe ce624be8b8 Cache: Fix a whole lot of things.
* Minor updates to the min & max cache sizes (16 & 64MB). Mostly to satisfy my power-of-two OCD.
  * Purge broken on-disk cache files
  * Optimize free RAM computations
  * Start dropping LRU items when running low on memory before pre-rendring (hinting) pages in non-reflowable documents.
  * Make serialize dump the most recently *displayed* page, as the actual MRU item is the most recently *hinted* page, not the current one.
  * Use more accurate item size estimations across the whole codebase.

TileCacheItem:

  * Drop lua-serialize in favor of Persist.

KoptInterface:

  * Drop lua-serialize in favor of Persist.
  * Make KOPTContext caching actually work by ensuring its hash is stable.
3 years ago
NiLuJe e7acec1526 ReaderUI: Saner FM/RD lifecycle
* Ensure that going from one to the other tears down the former and
    its plugins before instantiating the latter and its plugins.

UIManager: Unify Event sending & broadcasting
  * Make the two behave the same way (walk the widget stack from top to
    bottom), and properly handle the window stack shrinking shrinking
    *and* growing.
    Previously, broadcasting happened bottom-to-top and didn't really
    handle the list shrinking/growing, while sending only handled the list
    shrinking by a single element, and hopefully that element being the one
    the event was just sent to.

These two items combined allowed us to optimize suboptimal
refresh behavior with Menu and other Menu classes when
opening/closing a document.
e.g., the "opening document" Notification is now properly regional,
and the "open last doc" option no longer flashes like a crazy person
anymore.

Plugins: Allow optimizing Menu refresh with custom menus, too.

Requires moving Menu's close_callback *after* onMenuSelect, which, eh,
probably makes sense, and is probably harmless in the grand scheme of
things.
3 years ago
NiLuJe b24ecf35d4 CreOptions: Display weight classes names, in addition to their raw value. 3 years ago
NiLuJe 56d7a2d86b CreOptions: Minor wording tweak after #7616
c.f., https://github.com/koreader/koreader/pull/7616#discussion_r622732969
3 years ago
poire-z 9ef435c97a
bump crengine: more granular font weights (#7616)
Includes:
- MathML: a few minor fixes
- (Upstream) lvtext: fix possible index out of range
- Fonts: RegisterExternalFont() should take a documentId
- Fonts: fix: letter-spacing should not be applied on diacritic
- (Upstream) Fonts: more granular synthetic weights
- Fonts: synthesized weights: tweak some comments
- Fonts: keep hinting with synthetic weight
- Fonts: fix synthesized weight inconsitencies
- Fonts: fix getFontFileNameAndFaceIndex()
- Fonts: adds LVFontMan::RegularizeRegisteredFontsWeights()
- Fonts: handle synth_weight tweaks in glyph/glyphinfo slots
- (Upstream) Fonts: fix some compiler warnings
- Fix hyphenation on Armenian and Georgian text

Update the bottom menu widget "Font Weight" to allow more
granular weights than the previous "regular | bold".

Also bump thirdparty/luasec to v1.0.1.
3 years ago
gbyl 617ed2c078
Gestures: Allow disabling tap and/or swipes for page turns (#7572)
Co-authored-by: gbyl <gbyl@users.noreply.github.com>
Co-authored-by: NiLuJe <ninuje@gmail.com>
3 years ago
NiLuJe 9e9a87434b
NetworkManager: Just warn if the gateway is unreachable after a (#7570)
successful authentication.

Fully tearing down Wi-Fi was a bit optimistic, as the AP list can
technically still be up, so the user might want to try again and/or
connect to another AP.

Fix #5912, regression since #4616.

The reasoning behind #4616 doesn't really apply anymore anyway, as the
Wi-Fi prompt now handles this inconsistent state properly.

The whole codepath should be *extremely* rare anyway (and/or require
super-broken network conditions).
3 years ago
Martín Fernández 53234fcdc1
add hasSystemFonts device property (#7535)
Add system + user paths to the ReMarkable (has normal linux paths)
3 years ago
hius07 3df1ce3644
Style tweaks: add links italic style (#7567) 3 years ago
gbyl 508a294016
ScreenSaver: Allow toggling the reboot/poweroff overlay message (#7566)
Co-authored-by: gbyl <gbyl@users.noreply.github.com>
3 years ago
NiLuJe d3213e6b80 UIManager: Follow the same ScreenSaver preparations than Generic's
PowerEvent handler

(i.e., flash to white befor eimages).

Re #7519
3 years ago
NiLuJe 832d915795 SortWidget: More tweaks
* Support cancelling individual moves.

Coopt the cancel button to actually do just that, cancel, instead of close.

* Don't close when hitting the accept button, allowing to chain multiple moves.

Changes are still propagated to the caller on each individual move, though.

* Update the new icons to match our usual stroke width.
3 years ago
NiLuJe 6def0bb7f0 FrontLight: Workaround potential crashes when swiping the frontlight bar.
This whole widget is a mess.
3 years ago
NiLuJe 956ecdc910 FrontLight: Ensure the warmth bar is empty at 0
Fix #7548
3 years ago
NiLuJe 7f3a9f4761 ReaderToc: Minor look'n feel tweaks
* ReaderToc: Tweak padding around items to be a tad more balanced for multi-level ToCs, and perfectly balanced for flat ToCs. (Re #7548)
* ReaderToc: Make the onHold popup's width match said padding. (Re #7548)
* InfoMessage: Allow passing the alignment flag to TextBoxWidget
* ReaderToc: Center text inside the InfoMessage onHold popup
3 years ago
NiLuJe 1ac0ad2f1a Android: More input handling tweaks
* Android: Fix #7552 by simply ensuring we drain the input/cmd queue first, simply by scheduling the task to the next tick, instead of locally re-implementing part of the event loop ;). (Requires https://github.com/koreader/koreader-base/pull/1356 for extra safety).
* Android: Clear input state when the window loses focus. (Related to the above fix).

* Bump base:

https://github.com/koreader/koreader-base/pull/1356
https://github.com/koreader/koreader-base/pull/1357

* Bump android-luajit-launcher:

https://github.com/koreader/android-luajit-launcher/pull/293
https://github.com/koreader/android-luajit-launcher/pull/298
https://github.com/koreader/android-luajit-launcher/pull/299
3 years ago
NiLuJe 97b81a7eb6 Menu: Don't share the `dimen` object across Menu instances (!)
The object was never re-assigned, so closing a smaller menu (e.g.,
Calibre metadata search) made the underlying one (e.g., CoverBrowser's
ListMenu) inherit the smaller dimensions...

Instead of creating the object in the Class constructor, create it in the
instance constructor (i.e., :init).

Similar cleanups in other Menu* related classes.
3 years ago
NiLuJe 3274183466 Minor Input & TimeVal cleanups
* Input: Don't create a new TimeVal object for input frame timestamps, just promote our existing table by assigning it the `TimeVal` metatable.
* TimeVal: Export (const) `zero` & `huge` TimeVal objects, because they're common enough in our codebase. (NOTE: not actually const, that's a Lua 5.4 feature ;p).
* GestureDetector: Explain the behavior of the `last_tevs` & `first_tevs` tables, and why one needs a new object and not the other.
* Speaking of, simplify the copy method for `first_tevs`, because it doesn't need to create a new TimeVal object, we can just reference the original, it's unique and re-assigned for each frame.
3 years ago
hius07 fce63d3c0f
Numberpicker: show hint with boundaries instead of the current value (#7529)
* Numberpicker: show hint with boundaries

* Show current value in the hint
3 years ago
hius07 c560be3740
SortWidget: Redesign the footer to be more in line w/ Menu & KeyValuePage 3 years ago
hius07 d879062eeb
ReaderToc: Add an option to display a separator between entries (#7551) 3 years ago
hius07 7092df7f4e
Button setIcon: Allow keep button width (#7546)
Useful when said Button was instantiated with a custom width, as is the case in SortWidget.
3 years ago
NiLuJe ea3fa5c2c7
Calibre: More QoL tweaks (#7545)
* Wireless: Optimize memory usage in StreamMessageQueue (use an array of string ropes, that we only concatenate once). Allowed to relax the throttling, making transfers that much faster.
* Persist: Add a "zstd" codec, that uses the "luajit" codec, but compressed via zstd. Since both of those are very fast, it pretty much trounces everything in terms of speed and size ;).
* Persist: Implemented a "writes_to_file" framework, much like the existing "reads_from_file" one. And use it in the zstd codec to avoid useless temporary string interning.
* Metadata: Switch to the zstd codec.
3 years ago
NiLuJe 47c59e0e5a
Persist: Add the new native LuaJIT serializer to the list of supported codecs (#7543)
And swap the Calibre metadata cache to it.
3 years ago
NiLuJe 22b9396696
Centralize one time migration code after updates (#7531)
There have been a couple of these this month, and keeping stuff that should only ever run once piling up in their respective module was getting ugly, especially when it's usually simple stuff (settings, files).

So, move everything to a dedicated module, run by reader.lua on startup, and that will actually only do things once, when necessary.
3 years ago
NiLuJe f2e90f505b
Input: Minor cleanups (#7542)
* TimeVal: Log the results of the COARSE probes in debug logs
* GestureDetector: Print details of failed clock probes in debug logs
* GestureDetector: Skip the BOOTTIME probe when CLOCK_BOOTTIME is unsupported.
* Input: Decode ABS_DISTANCE events in debug logs
* Get rid of duplicated <linux/input.h> constants, use the FFI module everywhere (re #7536)
* Kobo: Get rid of the `touch_alyssum_protocol` quirk. Replace it by setting `main_finger_slot` to `1`, like on the H2O.
3 years ago
NiLuJe b8d0cc4c35
Calibre: Minor QoL fixes (#7528)
* CalibreMetadata: Get rid of the now useless NULL-hunt: here, this was basically looking for `rapidjson.null` to replace them with... `rapidjson.null` :?. IIRC, that's a remnant of a quirk of the previous JSON parser (possibly even the previous, *previous* JSON parser ^^).
* CalibreSearch: Update the actually relevant NULL-hunt to make it explicit: replace JSON NULLs with Lua nils, instead of relying on an implementation detail of Lua-RapidJSON, because that detail just changed data type ;).
* UIManager: Make sure tasks scheduled during the final ZMQ callback are honored. e.g., the Calibre "Disconnect" handler. This happened to mostly work purely by chance before the event loop rework.
* Calibre: Restore a proper receiveCallback handler after receiving a book, in order not to break the "Disconnect" handler's state (and, well, get a working Disconnect handler, period ^^).
* Calibre: Unbreak metadata cache when it's initialized by a search (regression since #7159).
* Calibre: Handle UTC <-> local time conversions when checking the cache's timestamp against the Calibre metadata timestamp.
* Bump base (Unbreak CRe on Android, update RapidJSON)
3 years ago
hius07 ad924e3c1c
Dict/Wiki lookup results window: improve the 'pencil' button (#7523) 3 years ago