Keep the concurrency hint inside the width it has

"(4 on this machine)" sits in whatever the two spinners leave of a fixed 400px
pane. That fit on one machine and ellipsed to "(4 on this machi..." on another,
which left the hint existing only in the tooltip on exactly the machines it was
written for.

Now "(4 at a time)": six characters shorter, and short enough to fit that column
with room over rather than by a hair. Why the number is smaller than the setting
is what the tooltip is for; the number itself is what has to be legible. Classic
reads the same string into its tooltip, so both UIs move together.

Layout geometry is untouched on purpose - the spinner widths and the row structure
are the part that was reported as clean.
This commit is contained in:
Allamagoosa committed 2026-08-24 10:02:46 -07:00
1 parent 326e48c663
commit 5e1ac3f9cc
4 files changed
+14 -4

No files matched your search

@@ -83,7 +83,10 @@
Increment="1"
FormatString="0" />
<!-- Sits in the spare column between the two spinners, and only when this machine
cannot keep up with the number chosen. -->
cannot keep up with the number chosen. That column is whatever the two
spinners leave, so the hint is kept short enough to fit it with room over
rather than sized to it - see ProcessQueueViewModel.ConcurrencyHint. The
trimming below is a backstop, not the plan. -->
<TextBlock
Grid.Column="2"
Classes="settingLabel"
@@ -124,9 +124,16 @@ public class ProcessQueueViewModel : ReactiveObject
/// null when it can. Closes the gap left by bounding the control at the hard limit: the setting
/// keeps saying what was asked for, and this says what will happen.
/// </summary>
/// <remarks>
/// Kept short on purpose. It lives in whatever width is left beside the spinners on a 400px
/// pane, and the longer wording it replaced ("on this machine") fit on some machines and
/// ellipsed to "(4 on this machi..." on others - which left it existing only in the tooltip on
/// exactly the machines it was written for. The reason it is smaller than the setting is what
/// the tooltip is for; the number is what has to be legible.
/// </remarks>
public string? ConcurrencyHint
=> EffectiveConcurrentDownloads < MaxConcurrentDownloads
? $"({EffectiveConcurrentDownloads} on this machine)"
? $"({EffectiveConcurrentDownloads} at a time)"
: null;
public string? RunningTime { get => field; set => RaiseAndSetIfChanged(ref field, value); }
public bool ProgressBarVisible { get => field; set => RaiseAndSetIfChanged(ref field, value); }
@@ -361,7 +361,7 @@ public class ProcessQueueDispatchTests
public void the_hint_says_what_the_machine_will_do_and_is_silent_when_it_can_keep_up()
{
var queue = new ProcessQueueViewModel { MaxConcurrentDownloads = 8, MachineCeilingOverride = 2 };
Assert.AreEqual("(2 on this machine)", queue.ConcurrencyHint);
Assert.AreEqual("(2 at a time)", queue.ConcurrencyHint);
// Nothing to say once the machine can deliver what was asked for.
queue.MachineCeilingOverride = 10;
+1 -1
View File
@@ -22,7 +22,7 @@ If you are seeing license denials, lowering this number is the first thing to tr
Downloading is limited by Audible, but decrypting is limited by your processor. On a machine with fewer processors than the number you chose, Libation runs fewer books at once — your setting is kept as you left it, so moving the same configuration to a larger machine picks up where you meant it to.
When the two differ, Libation says so next to the setting: Chardonnay shows a note reading **(2 on this machine)**, and Classic puts the same thing in the control's tooltip.
When the two differ, Libation says so next to the setting: Chardonnay shows a note reading **(2 at a time)**, and Classic puts the same thing in the control's tooltip.
## Auto-scroll