Emit phoneStateChanged() in VOX setters so UI syncs with keyboard shortcut (#2083)#2084
Merged
Conversation
…rtcut (#2083) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2 tasks
Contributor
Author
There was a problem hiding this comment.
Looks good — clean, minimal fix that follows the established pattern in this file.
What this does: Adds emit phoneStateChanged() (and optimistic local state updates for m_voxLevel/m_voxDelay) to setVoxEnable, setVoxLevel, and setVoxDelay. This matches exactly how neighboring setters like setMicBoost, setMicBias, setDexp, and setDexpLevel already work.
Review notes:
- Only
TransmitModel.cppis touched — tightly scoped to the issue. - No bugs, null pointer risks, or resource leaks.
- No AetherSDR convention violations (no QSettings usage, no raw pointers introduced).
- The unconditional emit (no
if (old != new)guard) is consistent withsetMicBoost/setMicBias/setDexpLevel— harmless for a UI sync signal and keeps the code uniform. - No Copilot flags to verify.
Thanks for the fix, @aethersdr-agent — this is a straightforward gap that was causing the UI desync reported in #2083.
This was referenced May 5, 2026
M7HNF-Ian
added a commit
to M7HNF-Ian/AetherSDR
that referenced
this pull request
May 28, 2026
…Sb (aethersdr#2180) Both setters updated m_micLevel / m_monGainSb and emitted commandReady but never emitted micStateChanged(), so any UI control bound to mic state via the model signal — e.g. a MIC level slider updated by MIDI controller, keyboard shortcut, or radio echo — would not repaint until the next unrelated state event. The fix mirrors the pattern established for VOX setters in aethersdr#2084 (setVoxEnable/Level/Delay all emit phoneStateChanged() unconditionally). Full setter audit: all other setters that mutate mic-state members (setMicSelection, setSpeechProcessorEnable, setSpeechProcessorLevel) already emit micStateChanged(). setMonGainCw and setMonPanCw correctly emit phoneStateChanged(). Fixes aethersdr#2180
ten9876
pushed a commit
that referenced
this pull request
May 28, 2026
## Problem `TransmitModel::setMonGainSb()` updates `m_monGainSb` and emits `commandReady` but never emits `micStateChanged()`. A UI slider bound to monitor gain via the model signal won't repaint when the value is changed by MIDI controller, keyboard shortcut, or radio echo — until an unrelated event happens to trigger a redraw. Same class of gap as #2084 (VOX setters) and the `setMicLevel` part of #2180. **Note:** `setMicLevel` was fixed concurrently in PR #3234 (with a change guard). This PR addresses the remaining gap — `setMonGainSb`. ## Fix Add `emit micStateChanged()` after updating `m_monGainSb`, consistent with how all other mic-state setters behave. ## Setter audit (per #2180) | Setter | Signal emitted? | |---|---| | `setMicSelection` | ✅ `micStateChanged()` | | `setMicLevel` | ✅ `micStateChanged()` — fixed in #3234 | | `setSpeechProcessorEnable` | ✅ `micStateChanged()` | | `setSpeechProcessorLevel` | ✅ `micStateChanged()` | | `setMonGainSb` | ❌ **missing** — fixed here | | `setMonGainCw` | ✅ `phoneStateChanged()` | | `setMonPanCw` | ✅ `phoneStateChanged()` | Fixes #2180
G6PWY-Chris
pushed a commit
to G6PWY-Chris/AetherSDR
that referenced
this pull request
Jun 22, 2026
…) (aethersdr#3240) ## Problem `TransmitModel::setMonGainSb()` updates `m_monGainSb` and emits `commandReady` but never emits `micStateChanged()`. A UI slider bound to monitor gain via the model signal won't repaint when the value is changed by MIDI controller, keyboard shortcut, or radio echo — until an unrelated event happens to trigger a redraw. Same class of gap as aethersdr#2084 (VOX setters) and the `setMicLevel` part of aethersdr#2180. **Note:** `setMicLevel` was fixed concurrently in PR aethersdr#3234 (with a change guard). This PR addresses the remaining gap — `setMonGainSb`. ## Fix Add `emit micStateChanged()` after updating `m_monGainSb`, consistent with how all other mic-state setters behave. ## Setter audit (per aethersdr#2180) | Setter | Signal emitted? | |---|---| | `setMicSelection` | ✅ `micStateChanged()` | | `setMicLevel` | ✅ `micStateChanged()` — fixed in aethersdr#3234 | | `setSpeechProcessorEnable` | ✅ `micStateChanged()` | | `setSpeechProcessorLevel` | ✅ `micStateChanged()` | | `setMonGainSb` | ❌ **missing** — fixed here | | `setMonGainCw` | ✅ `phoneStateChanged()` | | `setMonPanCw` | ✅ `phoneStateChanged()` | Fixes aethersdr#2180
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #2083
What was changed
Emit phoneStateChanged() in VOX setters so UI syncs with keyboard shortcut (#2083)
Files modified
src/models/TransmitModel.cppGenerated by AetherClaude (automated agent for AetherSDR)