Skip to content

[ReaderFooter] keep menu open after arranging items in status bar#13168

Merged
Frenzie merged 3 commits into
koreader:masterfrom
Commodore64user:arrange-footer
Feb 1, 2025
Merged

[ReaderFooter] keep menu open after arranging items in status bar#13168
Frenzie merged 3 commits into
koreader:masterfrom
Commodore64user:arrange-footer

Conversation

@Commodore64user

@Commodore64user Commodore64user commented Jan 30, 2025

Copy link
Copy Markdown
Member

what's new

  • Added a keep_menu_open property to keep the menu open when arranging one's items. why was this not a thing?
  • Introduced an enabled_func to ensure the "Arrange items in status bar" option is only enabled when there is more than one enabled item. (on par with dispatcher's)

screenshots


This change is Reviewable

@Frenzie

Frenzie commented Jan 30, 2025

Copy link
Copy Markdown
Member

I'm not necessarily enthusiastic about this concept. The current behavior is that you can nicely order everything, and you can enable and disable at will. After this change, to order would mean to get rid of your order. (That you currently can't see there which is enabled and which is disabled is a slightly separate matter.)

@hius07

hius07 commented Jan 30, 2025

Copy link
Copy Markdown
Member

you can nicely order everything, and you can enable and disable at will.

I was writing the same words.

@Commodore64user

Commodore64user commented Jan 30, 2025

Copy link
Copy Markdown
Member Author

but I don't think that anyone wants to sort through all the possible items, even those they know they will never use. why should someone arrange 20+ things when they only truly care about 6? furthermore, we don't lose your order, in fact we remember it and if you enable something in the future, it should go back to it's place relative to everything else.

edit: for most people, the status quo is like separating the wheat from the chaff. everything that is disabled but still being shown is noise.

@hius07

hius07 commented Jan 30, 2025

Copy link
Copy Markdown
Member

Disabling the menu item is good, you can break the loop earlier once the count reaches 2.

@yparitcher

yparitcher commented Jan 31, 2025

Copy link
Copy Markdown
Member

👍
When i ordered my footer many years ago i remember have the same frustration having to search through and order around useless (to me) items

@Commodore64user

Commodore64user commented Jan 31, 2025

Copy link
Copy Markdown
Member Author

I feel like this is #12929 all over again. It is understandable for you, that know how all of this works, to think that it is fine. However, most users don't know, nor should they have to. I don't quite understand how someone who is always so pro best practices, simple design, good UX, suddenly goes against the very rules he has tried to implement. We don't ask people to hypnotically hypothetically sort all keyboard layouts, yet we only show them the ones they want to use or are relevant to them.

User Mental Model and Interaction

When users select a subset of items from a larger set, their primary cognitive focus is naturally on the items they've chosen. They've deliberately picked these specific items because they're most relevant or interesting to them. This means users are typically most interested in working with, sorting, and managing their selected subset.

Cognitive Load Reduction

By presenting users with a view that emphasises their selected items, you reduce the cognitive effort required to interact with the interface. When users see only their chosen items:

  • They don't have to visually scan through the entire set
  • Their selected choices are immediately prominent
  • The interface feels more personalised and responsive to their specific needs
  • Reduces visual clutter

mathematically speaking

I know that nobody is going to go through all possible combinations, but this sort of illustrates my point of mental fatigue (cognitive load) due to having too much noise

  • sorting 20 items: 2,432,902,008,176,640,000 possible sortings (2.4 quintillion)
  • sorting 6 items: 720 possible sortings

I would like to hear what @poire-z and @offset-torque might have to say about this as well.

@offset-torque

Copy link
Copy Markdown

Very well said Commodore64user, nothing to add. This might be the only bad UX in KOReader. Thankfully it is a set-once-and-forget kind of setting, but definitely not a nice welcome for the new users.

Frenzie has a valid point with this, some users might prefer this model:

The current behavior is that you can nicely order everything, and you can enable and disable at will.

So as a compromise, I think these 2 changes can at least improve the procedure without removing items:

  • Add an icon in front of the enabled items in the sorting window, so it is obvious at a glance which ones are in the status bar currently
  • Make the status bar visible while ordering (I don't know if this is possible)

Here is a mockup from my test setup. It is immediately obvious which items are in the status bar:

koreader_status_bar_mockup

Even better is merging the toggle and sort dialogs. So users can toggle the items from this sorting dialog while seeing the result in real time. (Also I am not sure if this is doable, but this is the best UX for this kind of configuration.)

@Frenzie

Frenzie commented Jan 31, 2025

Copy link
Copy Markdown
Member

My reply wasn't about any of that and I didn't say it's perfect. What I was trying to convey is that the user is holistically focused on putting together their vision for the footer, not on the singular act of sorting. That necessarily includes a bunch of toggling on and off. If said toggling keeps resetting the positioning it undoes their hard work, causing increased cognitive load.

To put it in picture form, something like this would be better:

@Frenzie

Frenzie commented Jan 31, 2025

Copy link
Copy Markdown
Member

For potential reference, adding a basic indicator of some sort seems simple enough:

diff --git a/frontend/apps/reader/modules/readerfooter.lua b/frontend/apps/reader/modules/readerfooter.lua
index 66aaaed59..d26d23c8f 100644
--- a/frontend/apps/reader/modules/readerfooter.lua
+++ b/frontend/apps/reader/modules/readerfooter.lua
@@ -1384,7 +1384,18 @@ function ReaderFooter:addToMainMenu(menu_items)
                 callback = function()
                     local item_table = {}
                     for i=1, #self.mode_index do
-                        table.insert(item_table, {text = self:textOptionTitles(self.mode_index[i]), label = self.mode_index[i]})
+                        local text = self:textOptionTitles(self.mode_index[i])
+                        if text then
+                            if self.settings[self.mode_index[i]] then
+                                text = "A ".. text
+                            else
+                                text = "  " .. text
+                            end
+                        end
+                        table.insert(item_table, {
+                            text = text,
+                            label = self.mode_index[i],
+                        })
                     end
                     local SortWidget = require("ui/widget/sortwidget")
                     local sort_item

@poire-z

poire-z commented Jan 31, 2025

Copy link
Copy Markdown
Contributor

I would like to hear what @poire-z

No real thought, no strong opinon either way.
(It's something I visited once I guess, how bothered I might have been has been forgotten :))

@Commodore64user

Commodore64user commented Jan 31, 2025

Copy link
Copy Markdown
Member Author

Although, yes indicating which item are selected is somewhat an improvement, I still think it is not as good as simply removing all the noise. There is also another side to the coin; however, annoying as this might be on a device with a touchscreen, it is 2–3× more annoying on NT (Kindle) and perhaps even more so on hasFewKeys. I am (personally) not convinced by the argument of sorting all items and can't imagine who it is that needs to sort all items and then toggle them on and off so often that it becomes a problem, but alas, you are the shot-caller. I personally think (much like in #12929) that it is the right decision for the majority of users, and more so for new ones. My tuppence.

edit: and we do remember the last position (compare with the original screenshots at the top)

edit 2: interesting fact

sorting 20 items: 2,432,902,008,176,640,000 possible sortings (2.4 quintillion)

if that number were money (US dollars), one could buy Apple (the trillion-dollar company) 675 billion times over.
in seconds it would be 77.15 billion years.

@offset-torque

Copy link
Copy Markdown

Libreoffice screenshot in Frenzie's message is exactly what I had in mind when writing this:

Even better is merging the toggle and sort dialogs. So users can toggle the items from this sorting dialog while seeing the result in real time.

In that single dialog users can:

  • See which options are available to them
  • Toggle them
  • Order them

They don't have to go to two different menus, one to choose the items and another to sort them. Also this kind of interface can be easily used with NT devices:

  • UP/DOWN arrows - move selection box
  • LEFT/RIGHT arrows - change the order of selected item
  • CENTER button - toggle the item on/off

@Frenzie

Frenzie commented Feb 1, 2025

Copy link
Copy Markdown
Member

There is also another side to the coin; however, annoying as this might be on a device with a touchscreen, it is 2–3× more annoying on NT (Kindle) and perhaps even more so on hasFewKeys.

Funny, I find it an absolute delight on non-touch. On touch I find it mildly annoying; I'd rather just drag & drop more akin to the effortless elegance of non-touch.

I am (personally) not convinced by the argument of sorting all items and can't imagine who it is that needs to sort all items and then toggle them on and off so often that it becomes a problem

It's a problem for someone who's setting it up. But you shouldn't think of it in terms of "all items". Rather in terms of for example 6+4 items.

@hius07

hius07 commented Feb 1, 2025

Copy link
Copy Markdown
Member

Or dim disabled items:

1

@Commodore64user

Commodore64user commented Feb 1, 2025

Copy link
Copy Markdown
Member Author

Funny, I find it an absolute delight on non-touch. On touch I find it mildly annoying; I'd rather just drag & drop more akin to the effortless elegance of non-touch.

is not about pressing buttons per se, that's fine, but there is such a thing as having too much of something. And there is a lot of unnecessary button pressing there. on kindle 2/3 there is also the laaaaaaaaaaaag (let's wait until that catches up), things move at sloweerr speeeeds theeerre.

It's a problem for someone who's setting it up. But you shouldn't think of it in terms of "all items". Rather in terms of for example 6+4 items.

but that is the thing, the three or four settings I re-enabled went back to their position in the original queue.

They don't have to go to two different menus, one to choose the items and another to sort them. Also this kind of interface can be easily used with NT devices:

I am not sure that would work on hasFewKeys, the arrow keys and select are handled by focus manager, so they can't be repurposed for other things. on kindle NT, we have made a few adjustments that makes it less excruciatingly painful

@Commodore64user Commodore64user changed the title [ReaderFooter] add only enabled items to 'arrange items in status bar' [ReaderFooter] keep menu open after arranging items in status bar Feb 1, 2025
@Frenzie Frenzie merged commit d66527c into koreader:master Feb 1, 2025
@Frenzie

Frenzie commented Feb 1, 2025

Copy link
Copy Markdown
Member

What if there were a "move all inactive to the bottom" in the "Sort A to Z" menu, or something along those lines? (Besides the grayed out or similar.)

@offset-torque

Copy link
Copy Markdown

That's a good idea Frenzie. I would even say that this can be the default order after installation. Here is a mockup combined with hius07's dimmed items:

koreader_order_dim

Users (especially new ones who are not familiar with the items yet) can see which items are currently in the status bar and their order is clear. This is not possible with the current one.

@Commodore64user Commodore64user deleted the arrange-footer branch February 1, 2025 21:10
0xstillb pushed a commit to 0xstillb/koreader-thai that referenced this pull request May 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants