Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
Improved Global rate control windows #12246
qBittorrent version and Operating System
4.2.2 (x64) Windows 10 x64 1909
If on linux, libtorrent-rasterbar and Qt version
What is the problem
Adjusting the global download/upload rate in their respective windows (brought up by clicking the global download/upload speed items in the bottom status bar) is difficult: its units cannot be changed (at least I've found no option for it) and the units are printed into the text box.
What is the expected behavior
I believe these control windows could be reworked to omit the units from the text box (so they truly become just number inputs) and the units should be moved into a combo box next to the number input. I think the sliders could also be made somewhat more intuitive (maybe they are already intuitive and I just don't seem to get how they work or in what situations they are supposed to be used - like: what if I want to increase my limit?). The "No limit" could also be moved into a separate checkbox, or just have its own tick mark on the slider.
Steps to reproduce
Extra info (if any)
Maybe something like this?
Exactly, something like that (thank you very much for the ASCII mockup by the way, I really like it!).
I'm still thinking how the slider could be made a bit more useful. Maybe if we had options for its ranges or upper bounds - something like "maximum download speed" (not necessary the best naming!) that would control its maximum (100%) value, it could be customized.
My problem with the fixed 1 to 1024 range is that if you have a 10 MiB/s budget of internet, you'll likely switch to
Would it make the window too cluttered if we had two boxes below the slider that specify the caps? Expanding on your mockup I'm thinking of something like
Side note: since upload/download speed caps are usually not the same, it would likely be more convenient for these range controls to be independent for the download and upload speeds (so I can set my download slider to 3-8 (MiB/s) and my upload to 5-900 (KiB/s)). Handling manually entered values also becomes more tricky here: what if my slider is set to 3-8 but I enter
I also thought of another problem. ~It is not possible to set values like 9.5 MiB/s (unless the checkbox allows for decimal values, but that may no be obvious and what separator would be the valid one? dot or comma?).
I don't like the two boxes solution for the slider, I think it's too complex. How about just one extra box for decimal input?
In this example, the user is setting a limit of 35.625 MiB/s. I think allowing a max of 3 decimal places is reasonable.
Well, I believe putting an extra box for the decimal part would also complicate stuff - I've never seen two inputs used to enter a single number, be it fractional or not.
I mean, while you're right that the decimal separator is locale-dependent (and if we want it to be 100% right, it should be locale-dependent), I'm pretty sure I've met programs that simply didn't care and used
How would we go about the slider's min-max values? Maybe the minimum value can be fixed to 0 (no control needed there), but I think the maximum should have an option to be set somewhere in the application.
I mean we can just allow decimal numbers in on text box, and not allow input if it doesn't comply with the required format, it is not that hard. My issue is is with communicating to the user that it is possible to enter a decimal number. It would not be obvious that it would be allowed. Maybe if the box supports placeholder text? That would be the ideal solution.
I think the slider limits should not be configurable, that's too complex. Maybe they could go up to 10000 like it is now, so that one can input 9 MiB/s easily by setting to KiB and sliding to 9000 instead? That partially solves the problem of the slider being useless for very small values.
Or maybe we can get rid of the slider completely?
Yeah, the placeholder could be a great solution!
If it would not be configurable, then I think it doesn't have much of a value for a lot of people. I feel like it's kind of in the same situation as communicating to the user that it is possible to enter a decimal number: while it's not that hard to "get a feel for it" while dragging the slider around, one might easily realize that it's just not great for their internet speed and they'd have to feel out what part of the slider covers their internet connection in which unit space. Take the 50 MiB/s connection speed for example: the user can either use
I'd rather see a slider as something that ranges from 0 to somewhere around my max speed (which needs user configuration then) as that would be comfortable to use without having to switch units or having huge "dead zones" on the slider. If it's not like that, I'll just enter a speed in the text box myself - due to this nature, I personally haven't touched the slider anytime (and global rates probably don't need changes that often anyway).
If that's that case (ie. no configuration), then I'd rather vote for ditching the slider entirely.
Yeah having a config option just for so we can have another redundant control does not seem like the right choice. We are in agreement then, decimal tickbox with placeholder + unlimited checkbox it is.
It would look approximately like this (in case of the place holder text, the same, but faded):