This commit introduces support for OPDS 1.2 facets, enabling advanced filtering and sorting in compatible catalogs.
To maintain a clean and uncluttered book list, facet options are presented in a dedicated context menu. When a catalog provides facets or a search link, the top-left button now triggers a menu with all available actions.
- Facet links are parsed and grouped by the `opds:facetGroup` attribute.
- The context menu includes facet groups, search, and bookmarking.
- Adds support for `opds:activeFacet` and `thr:count`.
- The parsing logic now cleanly separates feed-level links from entries, correctly handling catalogs with facets but no initial items.
- Unrelated style changes were reverted and the test suite was improved for reliability.
Binary catalogs are more space efficient (total translations disk usage:
14MB instead of 35MB), and easier and faster (roughly 10 times) to load:
no parsing, and less processing (no need to unescape strings).
Not much difference on the Android APK size (a ~600KB reduction), but
other TAR.GZ / ZIP distributions see a reduction of ~3.5MB.
* GestureDetector:adjustGesCoordinate: Remove one layer of indirectiçon in
direction translation
That function call wrapper felt pretty unnecessary to me ;).
* GestureDetector: Translate complex gesture positions, too
i.e., if there's a start and end position, translate those, too.
Fix#13090
Persist is intended for larger objects, which works best for things like cached tiles with some metadata.
For many small to medium entries that you nevertheless don't necessarily want to keep around in memory, that seems a bit inefficient.
SQLite then, is effectively a way of minimizing the amount of writes in this scenario.
Relates to #13061. Depends on #13122.
* implements a Provider singleton, to be used by thirdparty plugins
* exporter: support for thirdparty providers
* splits plugin loading into two steps: discovery and load
1. get a list of all candidate plugins to load for the different paths
2. sort providers before on the rest of them and try to load them
This adds a new setting in "Translation settings" called "Show romanizations" which tells the translation popup to include in the query the parameter dt=rm and then extracts romanizations from the results to display.
Factorize and use a proper separate test for each benchmark.
Note: only open the 9 fist pages (reduce memory so benchmarks
can be run on more limited memory devices, like the Kindle).
Get rid of the weird interaction between device implementations,
`ffi.util` (`isSDL`, `noSDL`) and the device input code: each
device knows if it's using SDL or not, so rely on that to load
the right underlying input implementation.
Using `require` didn't make much sense since most of them are only used in a single place anyway, and it takes care of a few weird interactions in the process (besides not polluting `package.loaded` with useless crap ;)).