Fix: remove muted 'M' header icon that overlapped GPS text
With GPS enabled, the bold 'M' mute indicator in the status bar collided with the GPS text. Drop the header icon; the flashing red LED already indicates the muted state. Docs updated. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
d774604d74
commit
c770693848
4 changed files with 16 additions and 18 deletions
|
|
@ -9,6 +9,12 @@ single running list until the first versioned release.
|
|||
|
||||
_Nothing yet._
|
||||
|
||||
## 0.10.1
|
||||
|
||||
- **Fix:** the muted **"M"** indicator in the status bar overlapped the GPS text
|
||||
when GPS was enabled. The header icon is removed; the muted state is shown by
|
||||
the flashing red LED alone.
|
||||
|
||||
## 0.10.0
|
||||
|
||||
- **SMS recipient from contacts** — when composing a message, press **GREEN** in
|
||||
|
|
|
|||
|
|
@ -80,8 +80,7 @@ Editing colours in the CPS only affects **Custom**; the built-in presets are
|
|||
fixed. Every element (S-meter, frequencies, menus) follows the selected theme.
|
||||
|
||||
### Mute indicator — 🟢 [FreeTRX]
|
||||
While muted, a bold **"M"** appears in the status bar (just left of the battery)
|
||||
and the **red LED flashes** (0.5 s every 2 s). See *Mute* below.
|
||||
While muted, the **red LED flashes** (0.5 s every 2 s). See *Mute* below.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -1853,12 +1853,12 @@ void uiUtilityRenderQSOData(void)
|
|||
displayThemeResetToDefault();
|
||||
}
|
||||
|
||||
// Toggle the audio mute (speaker) state. The header shows a mute icon and the LED
|
||||
// flashes amber (see the main loop) while muted.
|
||||
// Toggle the audio mute (speaker) state. The flashing red LED (see the main
|
||||
// loop) indicates the muted state.
|
||||
void toggleAudioMute(void)
|
||||
{
|
||||
audioAmpMute(!audioAmpIsMuted());
|
||||
headerRowIsDirty = true; // refresh the header so the mute icon appears/clears
|
||||
headerRowIsDirty = true;
|
||||
}
|
||||
|
||||
void uiUtilityRenderHeader(bool isVFODualWatchScanning, bool isVFOSweepScanning, bool forceBatteryDisplay)
|
||||
|
|
@ -1878,8 +1878,6 @@ void uiUtilityRenderHeader(bool isVFODualWatchScanning, bool isVFOSweepScanning,
|
|||
static uint32_t blinkTime = 0;
|
||||
int radioMode = trxGetMode();
|
||||
uint8_t powerLevel = trxGetPowerLevel();
|
||||
// Muted either explicitly (SK2) or by the volume knob turned fully down (-99).
|
||||
bool audioIsMuted = (audioAmpIsMuted() || (lastVolume == -99));
|
||||
bool isPerChannelPower = (currentChannelData->libreDMR_Power != 0x00);
|
||||
bool scanIsActive = (uiDataGlobal.Scan.active || uiDataGlobal.Scan.toneActive);
|
||||
bool batteryIsLow = batteryIsLowWarning();
|
||||
|
|
@ -2000,7 +1998,7 @@ void uiUtilityRenderHeader(bool isVFODualWatchScanning, bool isVFOSweepScanning,
|
|||
displayPrintCore(MODE_TEXT_X_OFFSET, DISPLAY_Y_POS_HEADER, buffer,
|
||||
(((nonVolatileSettings.hotspotType != HOTSPOT_TYPE_OFF) && (uiDataGlobal.dmrDisabled == false)) ? FONT_SIZE_1_BOLD : FONT_SIZE_1), TEXT_ALIGN_LEFT, isInverted);
|
||||
|
||||
// (mute is shown by the header "M" indicator, not a strike-through)
|
||||
// (mute is indicated by the flashing red LED, not a strike-through)
|
||||
}
|
||||
|
||||
if ((aprsIsTransmittingOnSameQRG == false) && (monitorModeData.isEnabled == false) && (isVFOSweepScanning == false) && (isVFODualWatchScanning == false) &&
|
||||
|
|
@ -2068,7 +2066,7 @@ void uiUtilityRenderHeader(bool isVFODualWatchScanning, bool isVFOSweepScanning,
|
|||
|
||||
displayPrintCore(MODE_TEXT_X_OFFSET, DISPLAY_Y_POS_HEADER, (isVFODualWatchScanning ? "[DW]" : "DMR"), ((nonVolatileSettings.hotspotType != HOTSPOT_TYPE_OFF) ? FONT_SIZE_1_BOLD : FONT_SIZE_1), TEXT_ALIGN_LEFT, isInverted);
|
||||
|
||||
// (mute is shown by the header "M" indicator, not a strike-through)
|
||||
// (mute is indicated by the flashing red LED, not a strike-through)
|
||||
}
|
||||
|
||||
if (isVFODualWatchScanning == false)
|
||||
|
|
@ -2180,13 +2178,8 @@ void uiUtilityRenderHeader(bool isVFODualWatchScanning, bool isVFOSweepScanning,
|
|||
bool displayTime = (settingsIsOptionBitSet(BIT_DISPLAY_TIME_IN_HEADER) && (forceBatteryDisplay == false) && (batteryIsLow == false));
|
||||
#endif
|
||||
#endif
|
||||
// Mute indicator: bold "M" just left of the battery indicator.
|
||||
if (audioIsMuted)
|
||||
{
|
||||
displayThemeApply(THEME_ITEM_FG_HEADER_TEXT, THEME_ITEM_BG_HEADER_TEXT);
|
||||
displayPrintCore((DISPLAY_SIZE_X - 40), DISPLAY_Y_POS_HEADER, "M", FONT_SIZE_1_BOLD, TEXT_ALIGN_LEFT, false);
|
||||
displayThemeResetToDefault();
|
||||
}
|
||||
// Mute state is indicated by the flashing red LED only; no header icon
|
||||
// (it collided with the GPS text in the status bar).
|
||||
|
||||
// Display battery percentage/voltage
|
||||
bool apoEnabled = (nonVolatileSettings.apo > 0);
|
||||
|
|
|
|||
|
|
@ -25,8 +25,8 @@ FreeTRX keeps OpenGD77's core (DMR/FM, hotspot, CPS compatibility) and adds:
|
|||
|
||||
- **Audio mute — new SK2 short-tap.** A short tap of **SK2** on the VFO/Channel
|
||||
screen toggles the speaker mute on and off. Turning the **volume knob fully
|
||||
down** counts as muted too. While muted, a bold **"M"** appears in the status
|
||||
bar (left of the battery) and the **red LED flashes** (0.5 s every 2 s). SK2's
|
||||
down** counts as muted too. While muted, the **red LED flashes** (0.5 s every
|
||||
2 s). SK2's
|
||||
existing roles are unchanged: held as a modifier, extra-long-press for
|
||||
monitor/squelch-off, and — while a DMR QSO is on screen — a tap still sets the
|
||||
TX talkgroup to the incoming one.
|
||||
|
|
|
|||
Loading…
Reference in a new issue