MCPcopy Create free account
hub / github.com/aethersdr/AetherSDR / connectSliderSetting

Function connectSliderSetting

src/core/SettingsHelpers.cpp:19–45  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17} // namespace
18
19void connectSliderSetting(QSlider* slider,
20 std::function<void(int)> live,
21 std::function<void(int)> persist)
22{
23 auto* debounce = new QTimer(slider);
24 debounce->setSingleShot(true);
25 debounce->setInterval(kPersistDebounceMs);
26
27 // Reads the slider's current value at fire time so the persisted value
28 // matches what the user sees, even if valueChanged ran but the timer
29 // restart somehow didn't re-arm with the final tick.
30 QObject::connect(debounce, &QTimer::timeout, slider, [slider, persist]() {
31 persist(slider->value());
32 });
33
34 QObject::connect(slider, &QSlider::valueChanged, slider,
35 [debounce, live = std::move(live)](int v) {
36 live(v);
37 debounce->start(); // restart resets the 500 ms window
38 });
39
40 QObject::connect(slider, &QSlider::sliderReleased, slider,
41 [slider, debounce, persist = std::move(persist)]() {
42 debounce->stop();
43 persist(slider->value());
44 });
45}
46
47} // namespace AetherSDR

Callers 2

buildSettingsDrawerMethod · 0.85
PanadapterAppletMethod · 0.85

Calls 4

moveFunction · 0.85
valueMethod · 0.45
startMethod · 0.45
stopMethod · 0.45

Tested by

no test coverage detected