Skip to content

Emit phoneStateChanged() in VOX setters so UI syncs with keyboard shortcut (#2083)#2084

Merged
ten9876 merged 1 commit into
mainfrom
aetherclaude/issue-2083
Apr 30, 2026
Merged

Emit phoneStateChanged() in VOX setters so UI syncs with keyboard shortcut (#2083)#2084
ten9876 merged 1 commit into
mainfrom
aetherclaude/issue-2083

Conversation

@aethersdr-agent

Copy link
Copy Markdown
Contributor

Summary

Fixes #2083

What was changed

Emit phoneStateChanged() in VOX setters so UI syncs with keyboard shortcut (#2083)

Files modified

  • src/models/TransmitModel.cpp
 src/models/TransmitModel.cpp | 5 +++++
 1 file changed, 5 insertions(+)

Generated by AetherClaude (automated agent for AetherSDR)

…rtcut (#2083)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@aethersdr-agent aethersdr-agent Bot enabled auto-merge (squash) April 27, 2026 09:02

@aethersdr-agent aethersdr-agent Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.cpp is 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 with setMicBoost/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.

@ten9876 ten9876 merged commit 90ea305 into main Apr 30, 2026
5 checks passed
@ten9876 ten9876 deleted the aetherclaude/issue-2083 branch April 30, 2026 03:54
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Keyboard shortcut for VOX toggle not working

1 participant