setProgress
Switch to determinate progress mode. Replaces the spinner with a horizontal progress bar and appends "(N%)" to the overlay message. Pass {@code current = total} when work completes; the caller is expected to hide the overlay after that.
Idempotent: calling with the same values is a no-op. Negative or out-of-range arguments are clamped. For totals < 2 the bar would jump 0%→100% in a single step which is meaningless UX, so we fall back to the indeterminate spinner there.