feat: UI themes, Lyra#528
Conversation
ec0ce9d to
5d8178c
Compare
|
Amazing work, I tried this out and I have a few feedback:
Overall really liked the theme and how quick it is to browse around. I think all of my feedback can be taken care of very easily even as a follow-up PR. |
|
Great job with the Themes. Agreeing with @el's observations here, don't want to repeat everything, but things I found most noticable:
Apart from this, I think this looks really professional, and I love the introduction of Themes. |
|
Thanks a lot for the detailed feedback guys! The two separate "Loading" popups you get every time you return to the home screen, is that the plain popup and then the popup with the progress bar? The way it works is we show the plain popup when we're loading existing thumbnails (which should be most of the time) and the progress bar one when we have to generate the thumbnails (which should be the first time only, or whenever a new book is added to the list). I didn't test the case where a book doesn't have a cover, it might try to generate it every time and show you the progress bar, is that what's happening? We need a special case for that then. On the subject of button bindings, we had initially set the side buttons for Up and Down and the front buttons for Left and Right, which would seem more intuitive. But while using it that way all of us found it almost unusable. Switching tabs will happen a lot less than scrolling the list so in the end it makes sense that it's bound to the less prominent side buttons. We could make this a setting too if you'd like. I will leave the designers respond to the visual feedback. I can update the PR today with corrections. Thanks team! |
83f0ff6 to
7f802de
Compare
63eabae to
c6640aa
Compare
|
I updated the PR with a fix for the crashes some users were experiencing while testing, and an empty thumbnail is now created when the book has no cover, so that you don't get the loading popup repeatedly on the home screen. This is now stable and awaiting a response from the design team for the rest of the feedback. |
I agree with @el and @DavidOrtmann that this feels a bit unintuitive. Additionally, I tend to use the side buttons more easily, maybe because I'm left-handed. Adding a setting to control this would be a good idea. |
|
Another thought I've had: Maybe we just don't separate category and setting navigation from each other? We could do all these with the same button pair: |
You mean like in the 0.15 release where there's a first settings menu with the 4 categories, and then another screen for each of them? |
Not like an extra page, no. The page layout would stay the same as in the current dev version. This currently has Settings Categories and the settings themselves on one screen. Now imagine you can reach the categories and the settings with the same button. It would feel like this: (Symbol ↓ means "clicking down button"; bold text is a category) Display ↓ Reader [click select = enters Reader settings] ↓ Controls ↓ System ↓ Font Family ↓ Font Size The above would be the path to change the font size. It would only need the up/down button and the select button, no need for left/right. |
Dude this is actually a step in the right direction! To expand on that we could even treat the tab bar as just another line, meaning you can highlight the tab bar when you land on it with the up/down arrows, and when it's highlighted you can press enter to change tabs. The selection cursor would be the same as any other lines, light grey background and selected tab on black background. Thanks man this sounds like it would be way more intuitive than what we have now, but since we're not using the side buttons at all we could probably keep them as a shortcut to change tabs still. |
|
Really neat work @CaptainFrito! Agree with a lot of the feedback already here, but counter to a few of the others, I actually prefer the new tab/item navigation button layout for basically the reason you mentioned, the side buttons feel like a "higher-order" control and them controlling the sections makes more intuitive sense to me, that being said, I'm sure I'd adjust to either option. |
14d5580 to
9443edf
Compare
Thanks @el it is now fixed, and I added the little inactive button indicator which looks pretty cool! I worked on the controls for the tab bar, and I think we're now at a point where it's a lot more usable: So when we land on a screen with tabs, they are in a selected state first, which lets you change tabs with the confirm button. You can move up and down normally to select the settings, and the tab bar is considered the first item in the list, so when you move your selection to the top they get selected. It's really nice overall to be able to control everything with just up/down/confirm. The selected tab was also made more visible. |
45dd22e to
db2a7f4
Compare
|
In order to simplify interactions on the Library screen, the design team proposed we split the My Library screen into Browse Files and Recents. Both are accessible from the home screen which also gives the main menu a bit more substance. I have updated the PR with this change. This will leave extra room on either screen for extra features that are included in the Lyra mockups:
Most of the other feedback has been addressed, except for:
These things could be added in a separate PR to avoid having this one drag on too long and accumulating conflicts with master. |
Oh yeah good idea! Let's save this for another PR though so we don't pile features into this one |
29d1b0d to
40eeead
Compare
|
PR updated with UITheme as a singleton |
40eeead to
1b15277
Compare
daveallie
left a comment
There was a problem hiding this comment.
Small change needed for recents
| serialization::readString(inputFile, title); | ||
| serialization::readString(inputFile, author); | ||
| recentBooks.push_back({path, title, author}); | ||
| serialization::readString(inputFile, coverBmpPath); |
There was a problem hiding this comment.
This line will crash when reading existing recent book files. We'll need to bump RECENT_BOOKS_FILE_VERSION and then handle the version as 2 / 3.
240cc14 to
99328db
Compare
99328db to
8a82397
Compare
There was a problem hiding this comment.
It's possible to get blank covers for books as part of moving from master to this branch, and as far as I can tell there's no way to fix them.
Replication:
- Checkout and build
master - Open a few books to populate recents
- Swap to this branch and build
- Swap to Lyra theme
- Check home screen
It'll be because empty string is treated as no cover available.
Additionally, the same thing happens to books when you delete their metadata, they become coverless.
I won't be able to have another look tonight, but if you could make sure to test the upgrade pathway for people moving from master -> this branch -> Lyra for a bunch of common usecase and ensure they work properly, that would help the review.
|
I've improved the upgrade path for recent books coming from versions 1 and 2. Now it will reload the books to get the title, author and cover. |
9572fc3 to
111d4b8
Compare
|
Since some people only read one book at a time, would it be possible to display just a single featured book on the homepage? |
|
Single featured book can come as a followup PR, keen to get this one merged to close out this monster |
* master: feat: add shift lock to KeyboardEntryActivity (crosspoint-reader#513) feat: rename and move in file manager (crosspoint-reader#630) feat: Implement fix for sunlight fading issue (crosspoint-reader#603) chore: Add PR title check on sync (crosspoint-reader#698) feat: Go To Position for epubs (crosspoint-reader#666) feat: Calibre Web Automated (CWA) koreader sync server support (crosspoint-reader#594) chore: Add CI check job to consolidate status (crosspoint-reader#696) chore: CI Build Summary - firmware stats, firmware artifact (crosspoint-reader#601) feat: quick rotate option in epub reader menu (crosspoint-reader#685) feat(settings): add "Cover + Custom" sleep screen mode (crosspoint-reader#582) fix: Artifacts on Thumb on Home Screen (crosspoint-reader#662) feat: holding back button while booting, boots to home screen as a mean of escaping boot loop (crosspoint-reader#587) docs: Add small SCOPE.md and GOVERNANCE.md documents (crosspoint-reader#640) feat: front button remapper (crosspoint-reader#664) feat: UI themes, Lyra (crosspoint-reader#528) feat: Add CSS parsing and CSS support in EPUBs (crosspoint-reader#411) fix: move http upload state to heap (crosspoint-reader#657)
## Summary ### What is the goal of this PR? - Visual UI overhaul - UI theme selection ### What changes are included? - Added a setting "UI Theme": Classic, Lyra - The classic theme is the current Crosspoint theme - The Lyra theme implements these mockups: https://www.figma.com/design/UhxoV4DgUnfrDQgMPPTXog/Lyra-Theme?node-id=2003-7596&t=4CSOZqf0n9uQMxDt-0 by Discord users yagofarias, ruby and gan_shu - New functions in GFXRenderer to render rounded rectangles, greyscale fills (using dithering) and thick lines - Basic UI components are factored into BaseTheme methods which can be overridden by each additional theme. Methods that are not overridden will fallback to BaseTheme behavior. This means any new features/components in CrossPoint only need to be developed for the "Classic" BaseTheme. - Additional themes can easily be developed by the community using this foundation    ## Additional Context - Only the Home, Library and main Settings screens have been implemented so far, this will be extended to the transfer screens and chapter selection screen later on, but we need to get the ball rolling somehow :) - Loading extra covers on the home screen in the Lyra theme takes a little more time (about 2 seconds), I added a loading bar popup (reusing the Indexing progress bar from the reader view, factored into a neat UI component) but the popup adds ~400ms to the loading time. - ~~Home screen thumbnails will need to be generated separately for each theme, because they are displayed in different sizes. Because we're using dithering, displaying a thumb with the wrong size causes the picture to look janky or dark as it does on the screenshots above. No worries this will be fixed in a future PR.~~ Thumbs are now generated with a size parameter - UI Icons will need to be implemented in a future PR. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**PARTIALLY**_ This is not a vibe coded PR. Copilot was used for autocompletion to save time but I reviewed, understood and edited all generated code. --------- Co-authored-by: Dave Allie <[email protected]>





Summary
What is the goal of this PR?
What changes are included?
Additional Context
Home screen thumbnails will need to be generated separately for each theme, because they are displayed in different sizes. Because we're using dithering, displaying a thumb with the wrong size causes the picture to look janky or dark as it does on the screenshots above. No worries this will be fixed in a future PR.Thumbs are now generated with a size parameterAI Usage
While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it
helps set the right context for reviewers.
Did you use AI tools to help write this code? PARTIALLY
This is not a vibe coded PR. Copilot was used for autocompletion to save time but I reviewed, understood and edited all generated code.