InfiniTimeOrg / InfiniTime

Firmware for Pinetime smartwatch written in C++ and based on FreeRTOS
GNU General Public License v3.0
2.64k stars 904 forks source link

Swiping up on metronome switches arc input to counter for higher precision #1808

Open borkymcgee opened 11 months ago

borkymcgee commented 11 months ago

Swipe up to switch the arc to a counter to make precise BPMs easier to input Swipe down to switch back to the arc

Implements fix proposed in https://github.com/InfiniTimeOrg/InfiniTime/issues/1191#issuecomment-1408550849 Resolves #1191

image image

github-actions[bot] commented 11 months ago
Build size and comparison to main: Section Size Difference
text 377024B 224B
data 940B 0B
bss 63420B 0B
minacode commented 11 months ago

Two UIs seem like one too much for such a restricted device. I agree with the solution, though. Do you think the bpb setting could be made into a slimmer counter widget right of the tempo counter as well? With a long play/pause button underneath?

borkymcgee commented 11 months ago

Oops! Misclicked blush sorry!

borkymcgee commented 11 months ago

@minacode I think you can have arbitrarily sized counter elements, so you COULD probably do that.

I'm not sure it's a good idea though:

-I think it'd look garish -That's a lot of little touch buttons for one small screen -I'm not sure there are any problems with the dropdown as-is, it seems a good UI fit for the application

minacode commented 11 months ago

Ok, fair points. I almost never use the metronome, so maybe I should not argue too much about its usability.

  1. This is the only drop-down in the whole code base, right? Could we make the UI more consistent and remove some lvgl code if we replace it? The diff of the resulting image would be interesting.
  2. The argument regarding too much stuff is not that valid, because the time settings or the alarm have the same UI with two counters.
borkymcgee commented 10 months ago

I don't use the metronome function either, so it's hard to know what usability is like

I was imagining the bpb counter being smaller than the bpm one, since it's less important. I like the way the current design puts the bpm front and center and big, with bpb and start/stop smaller. It gives the app a simple, clean feel.

If we can figure out a good alternative, removing the dropdown might be a good idea, especially since it's a bit buggy (#1806).

Baggypants commented 6 months ago

I want to use the metronome but it's current input is utterly hopeless, so I don't. Tapping the requested bpm in binary coded decimal using morse code would be better ux than what you have currently in 1.14.0

Having an 'up' only button that increments every value between 0 and 600 and loops round to zero would be more accurate, and faster.

Baggypants commented 6 months ago

What about using the input method for the stop watch, move to colon to be between the 3rd and 4th element so the first three would set hundreds, tens and units and the 4th one would be 0-9 for beat. Sure anyone who has a piece in 11/4 or 17/4 might complain but I'd suggest they already have bigger problems.

vkareh commented 5 months ago

Honestly I think using an arc is the wrong widget for precise input. It works for something like the shake calibration because it's a gradual sensitivity thing. It works for steps because it's a visual read-only widget.

It does not work to select precise bpm values. In my opinion it should be an up/down input only, then you can create side-by-side bpm and bpb widgets and solve both issues in one shot.

mark9064 commented 5 months ago

The one thing I like about the arc is that keying in the BPM approximately is pretty fast - ideally you want to be able to quickly select any frequency (roughly) in the range and then refine it.

I'm not totally sure what'd work better though. Does tap tempo still work with this branch? I think tapping to set it approximately and then refining with the spinner would be OK