Use last selected row (FreeDV Reporter, main window) instead of prioritizing main window (#1196)
* Logging: Track last seelcted for autofill to reduce user confusion. * Update documentation. * Add PR #1196 to changelog. * Make sure equalizer is actually live on startup. * Record suffix should use last selected source as well. * Make sure drop-down is deselected when no callsigns are selected. * Prepare for 2.2.0 release.ms-hamlib-50-compile-fix
parent
f63432b935
commit
bc8ff4d44c
|
|
@ -1,5 +1,32 @@
|
|||
# Changes in older releases
|
||||
|
||||
## V2.1.0 November 2025
|
||||
|
||||
1. Bugfixes:
|
||||
* Clean up wxWidgets warnings in Audio Config window. (PR #1044)
|
||||
* Fix CAT control and frequency formatting problems on non-English computers. (PR #1050)
|
||||
* Clean up ThreadSanitizer warnings in codebase. (PR #1053)
|
||||
* Clean up UndefinedBehaviorSanitizer warnings in codebase. (PR #1061)
|
||||
* Divide displayed TX Attenuation level by 10 on startup. (PR #1060)
|
||||
* Fix issue preventing FreeDV Reporter from properly being restored to the correct display. (PR #1055)
|
||||
* Fix intermittent FreeDV Reporter related crash on Windows. (PR #1075)
|
||||
* Update Visual Studio Redistributable to version 17 to resolve RADE startup crashes. (PR #1074)
|
||||
2. Enhancements:
|
||||
* Additional cleanup of code that runs in real-time. (PR #1039, #1068, #1077)
|
||||
* Print error if one attempts to use a stereo WAV file instead of a mono one. (PR #1052)
|
||||
* Hamlib: Add support for automatically displaying only the valid baud rates. (PR #1057)
|
||||
* CPU reductions when rendering plots, especially on X11/Xwayland systems. (PR #1064)
|
||||
* Add implementation of Flex waveform for Flex 6000/8000/Aurora series. (PR #1018, #1088)
|
||||
* Add ka9q-radio integration for use with web-based SDRs and similar. (PR #1066)
|
||||
* Support bulk updates from FreeDV Reporter server. (PR #1079)
|
||||
* Hide Stats box by default. (PR #1081)
|
||||
* Always allow frequency drop-down to be used, even if CAT and reporting are disabled. (PR #1080, #1093)
|
||||
3. Build system:
|
||||
* Add support for Thread/Undefined Behavior Sanitizer instrumentation on macOS and Linux builds. (PR #1075)
|
||||
* Force all compiler warnings to be errors. (PR #1076)
|
||||
* Enable clang-tidy scans on codebase. (PR #1086)
|
||||
* Update CI process to enable automatic code signing of macOS and Linux builds. (PR #1078)
|
||||
|
||||
## V2.0.2 October 2025
|
||||
|
||||
1. Bugfixes:
|
||||
|
|
|
|||
|
|
@ -58,12 +58,12 @@ endif(NOT DEFINED LINUX)
|
|||
# Adds a tag to the end of the version string. Leave empty
|
||||
# for official release builds.
|
||||
if(NOT DEFINED FREEDV_VERSION_TAG)
|
||||
set(FREEDV_VERSION_TAG "dev")
|
||||
set(FREEDV_VERSION_TAG "")
|
||||
|
||||
# Uncomment the below definition to cause the build to expire
|
||||
# six months from the day it was built. This should be commented
|
||||
# for official releases.
|
||||
add_definitions(-DUNOFFICIAL_RELEASE)
|
||||
#add_definitions(-DUNOFFICIAL_RELEASE)
|
||||
endif(NOT DEFINED FREEDV_VERSION_TAG)
|
||||
|
||||
# Prevent in-source builds to protect automake/autoconf config.
|
||||
|
|
|
|||
|
|
@ -408,6 +408,13 @@ click the "Log QSO" button on the left side of the window. You will then see a d
|
|||
enter any additional information about the contact. Upon clicking the OK button, this information will be
|
||||
transmitted to your logging tool.
|
||||
|
||||
You can also log a contact if they're using FreeDV Reporter. Simply left-click on a row in the FreeDV Reporter
|
||||
window and then click on the Log QSO button. This will autofill the callsign, grid square/locator and frequency
|
||||
from the FreeDV Reporter servers in the dialog box.
|
||||
|
||||
The last selected logging source (either the FreeDV Reporter window or the drop-down callsign list at the bottom
|
||||
of the main window) is used for auto-filling of logging data. This is to avoid confusion (for instance, if a row
|
||||
in the main window is selected but it's intended to log from FreeDV Reporter instead).
|
||||
|
||||
# FreeDV Modes
|
||||
|
||||
|
|
@ -868,7 +875,7 @@ LDPC | Low Density Parity Check Codes - a family of powerful FEC codes
|
|||
|
||||
# Release Notes
|
||||
|
||||
## V2.2.0 TBD TBD
|
||||
## V2.2.0 January 2026
|
||||
|
||||
1. Bugfixes:
|
||||
* Radio integrations:
|
||||
|
|
@ -927,7 +934,7 @@ LDPC | Low Density Parity Check Codes - a family of powerful FEC codes
|
|||
* Reduce CPU usage rendering "scalar" plots (i.e. From Mic). (PR #1133)
|
||||
* Linux: List /dev/rfcomm* serial devices when configuring. (PR #1106) - thanks @NespaLa!
|
||||
* Hamlib: Allow selection of baud rates greater than 115200. (PR #1125)
|
||||
* Add support for loggers that support the WSJT-X networking protocol. (PR #1129, #1153)
|
||||
* Add support for loggers that support the WSJT-X networking protocol. (PR #1129, #1153, #1184, #1196)
|
||||
* Add support for recording decoded audio. (PR #1145, #1184)
|
||||
* Display Hamlib version in Help->About. (PR #1169)
|
||||
3. Build system:
|
||||
|
|
@ -940,36 +947,9 @@ LDPC | Low Density Parity Check Codes - a family of powerful FEC codes
|
|||
*Note: Legacy modes (700D, 700E, 1600) are now hidden by default. (PR #1108) You can show them
|
||||
again by going to Tools->Options->Modem and selecting "Enable Legacy Modes".*
|
||||
|
||||
## V2.1.0 November 2025
|
||||
## Earlier than V2.2.0
|
||||
|
||||
1. Bugfixes:
|
||||
* Clean up wxWidgets warnings in Audio Config window. (PR #1044)
|
||||
* Fix CAT control and frequency formatting problems on non-English computers. (PR #1050)
|
||||
* Clean up ThreadSanitizer warnings in codebase. (PR #1053)
|
||||
* Clean up UndefinedBehaviorSanitizer warnings in codebase. (PR #1061)
|
||||
* Divide displayed TX Attenuation level by 10 on startup. (PR #1060)
|
||||
* Fix issue preventing FreeDV Reporter from properly being restored to the correct display. (PR #1055)
|
||||
* Fix intermittent FreeDV Reporter related crash on Windows. (PR #1075)
|
||||
* Update Visual Studio Redistributable to version 17 to resolve RADE startup crashes. (PR #1074)
|
||||
2. Enhancements:
|
||||
* Additional cleanup of code that runs in real-time. (PR #1039, #1068, #1077)
|
||||
* Print error if one attempts to use a stereo WAV file instead of a mono one. (PR #1052)
|
||||
* Hamlib: Add support for automatically displaying only the valid baud rates. (PR #1057)
|
||||
* CPU reductions when rendering plots, especially on X11/Xwayland systems. (PR #1064)
|
||||
* Add implementation of Flex waveform for Flex 6000/8000/Aurora series. (PR #1018, #1088)
|
||||
* Add ka9q-radio integration for use with web-based SDRs and similar. (PR #1066)
|
||||
* Support bulk updates from FreeDV Reporter server. (PR #1079)
|
||||
* Hide Stats box by default. (PR #1081)
|
||||
* Always allow frequency drop-down to be used, even if CAT and reporting are disabled. (PR #1080, #1093)
|
||||
3. Build system:
|
||||
* Add support for Thread/Undefined Behavior Sanitizer instrumentation on macOS and Linux builds. (PR #1075)
|
||||
* Force all compiler warnings to be errors. (PR #1076)
|
||||
* Enable clang-tidy scans on codebase. (PR #1086)
|
||||
* Update CI process to enable automatic code signing of macOS and Linux builds. (PR #1078)
|
||||
|
||||
## Earlier than V2.1.0
|
||||
|
||||
See [this](https://github.com/drowe67/codec2/blob/master/CHANGELOG_OLD.md) for more information about changes in versions prior to v1.9.0.
|
||||
See [this](https://github.com/drowe67/codec2/blob/master/CHANGELOG_OLD.md) for more information about changes in versions prior to 2.2.0.
|
||||
|
||||
# References
|
||||
|
||||
|
|
|
|||
|
|
@ -927,6 +927,7 @@ void FreeDVReporterDialog::DeselectItem()
|
|||
wxDataViewItem item = m_listSpots->GetSelection();
|
||||
if (item.IsOk())
|
||||
{
|
||||
wxGetApp().lastSelectedLoggingRow = MainApp::UNSELECTED;
|
||||
m_listSpots->Unselect(item);
|
||||
}
|
||||
}
|
||||
|
|
@ -1096,6 +1097,9 @@ void FreeDVReporterDialog::OnItemSelectionChanged(wxDataViewEvent& event)
|
|||
// Bring up tooltip for longer reporting messages if the user happened to click on that column.
|
||||
wxMouseEvent dummyEvent;
|
||||
AdjustToolTip(dummyEvent);
|
||||
|
||||
// For logging: make sure FreeDV Reporter information is used
|
||||
wxGetApp().lastSelectedLoggingRow = MainApp::FREEDV_REPORTER;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
30
src/main.cpp
30
src/main.cpp
|
|
@ -599,6 +599,7 @@ bool MainApp::OnInit()
|
|||
m_locale.Init();
|
||||
#endif // wxCHECK_VERSION(3,2,0)
|
||||
|
||||
lastSelectedLoggingRow = LastSelectedRow::UNSELECTED;
|
||||
m_reporters.clear();
|
||||
m_reportCounter = 0;
|
||||
|
||||
|
|
@ -3080,24 +3081,19 @@ void MainFrame::startRxStream()
|
|||
g_rxUserdata->micInEQEnable = wxGetApp().appConfiguration.filterConfiguration.micInChannel.eqEnable;
|
||||
g_rxUserdata->spkOutEQEnable = wxGetApp().appConfiguration.filterConfiguration.spkOutChannel.eqEnable;
|
||||
|
||||
if (
|
||||
wxGetApp().appConfiguration.filterConfiguration.micInChannel.eqEnable ||
|
||||
wxGetApp().appConfiguration.filterConfiguration.spkOutChannel.eqEnable)
|
||||
if (g_nSoundCards == 1)
|
||||
{
|
||||
if (g_nSoundCards == 1)
|
||||
{
|
||||
designEQFilters(
|
||||
g_rxUserdata,
|
||||
wxGetApp().appConfiguration.audioConfiguration.soundCard1Out.sampleRate,
|
||||
0);
|
||||
}
|
||||
else
|
||||
{
|
||||
designEQFilters(
|
||||
g_rxUserdata,
|
||||
wxGetApp().appConfiguration.audioConfiguration.soundCard2Out.sampleRate,
|
||||
wxGetApp().appConfiguration.audioConfiguration.soundCard2In.sampleRate);
|
||||
}
|
||||
designEQFilters(
|
||||
g_rxUserdata,
|
||||
wxGetApp().appConfiguration.audioConfiguration.soundCard1Out.sampleRate,
|
||||
0);
|
||||
}
|
||||
else
|
||||
{
|
||||
designEQFilters(
|
||||
g_rxUserdata,
|
||||
wxGetApp().appConfiguration.audioConfiguration.soundCard2Out.sampleRate,
|
||||
wxGetApp().appConfiguration.audioConfiguration.soundCard2In.sampleRate);
|
||||
}
|
||||
|
||||
m_newMicInFilter = m_newSpkOutFilter = false;
|
||||
|
|
|
|||
13
src/main.h
13
src/main.h
|
|
@ -163,6 +163,14 @@ class FreeDVReporterDialog;
|
|||
class MainApp : public wxApp
|
||||
{
|
||||
public:
|
||||
// Indicates which row was last selected (for auto-filling during logging)
|
||||
enum LastSelectedRow
|
||||
{
|
||||
UNSELECTED,
|
||||
MAIN_WINDOW,
|
||||
FREEDV_REPORTER,
|
||||
};
|
||||
|
||||
virtual bool OnInit();
|
||||
virtual void OnInitCmdLine(wxCmdLineParser& parser);
|
||||
virtual bool OnCmdLineParsed(wxCmdLineParser& parser);
|
||||
|
|
@ -171,6 +179,8 @@ class MainApp : public wxApp
|
|||
|
||||
bool CanAccessSerialPort(std::string const& portName);
|
||||
|
||||
LastSelectedRow lastSelectedLoggingRow;
|
||||
|
||||
FreeDVConfiguration appConfiguration;
|
||||
wxString customConfigFileName;
|
||||
|
||||
|
|
@ -431,6 +441,9 @@ class MainFrame : public TopFrame
|
|||
void OnResetMicSpkrLevel(wxMouseEvent& event) override;
|
||||
|
||||
void OnRightClickCallsignList(wxMouseEvent& event) override;
|
||||
|
||||
void OnOpenCallsignList( wxCommandEvent& event ) override;
|
||||
void OnCloseCallsignList( wxCommandEvent& event ) override;
|
||||
|
||||
private:
|
||||
const wxString SNR_FORMAT_STR;
|
||||
|
|
|
|||
|
|
@ -1262,7 +1262,7 @@ void MainFrame::OnLogQSO(wxCommandEvent&)
|
|||
uint64_t dxFreqHz = 0;
|
||||
|
||||
auto selected = m_lastReportedCallsignListView->GetFirstSelected();
|
||||
if (selected != -1)
|
||||
if (wxGetApp().lastSelectedLoggingRow == MainApp::MAIN_WINDOW && selected != -1)
|
||||
{
|
||||
// Get callsign and RX frequency
|
||||
dxCall = m_lastReportedCallsignListView->GetItemText(selected, 0);
|
||||
|
|
@ -1293,7 +1293,10 @@ void MainFrame::OnLogQSO(wxCommandEvent&)
|
|||
|
||||
log_info("Logging %s/%s at %" PRIu64 " Hz from main window drop-down list", (const char*)dxCall.ToUTF8(), (const char*)dxGrid.ToUTF8(), dxFreqHz);
|
||||
}
|
||||
else if (m_reporterDialog != nullptr && m_reporterDialog->getSelectedCallsignInfo(dxCall, dxGrid, dxFreqHz))
|
||||
else if (
|
||||
m_reporterDialog != nullptr &&
|
||||
wxGetApp().lastSelectedLoggingRow == MainApp::FREEDV_REPORTER &&
|
||||
m_reporterDialog->getSelectedCallsignInfo(dxCall, dxGrid, dxFreqHz))
|
||||
{
|
||||
log_info("Logging %s/%s at %" PRIu64 " Hz from FreeDV Reporter", (const char*)dxCall.ToUTF8(), (const char*)dxGrid.ToUTF8(), dxFreqHz);
|
||||
}
|
||||
|
|
@ -1340,6 +1343,7 @@ void MainFrame::OnRightClickCallsignList(wxMouseEvent&)
|
|||
auto index = m_lastReportedCallsignListView->GetFirstSelected();
|
||||
while (index != -1)
|
||||
{
|
||||
wxGetApp().lastSelectedLoggingRow = MainApp::UNSELECTED;
|
||||
m_lastReportedCallsignListView->Select(index, false);
|
||||
index = m_lastReportedCallsignListView->GetFirstSelected();
|
||||
}
|
||||
|
|
@ -1347,6 +1351,24 @@ void MainFrame::OnRightClickCallsignList(wxMouseEvent&)
|
|||
m_BtnCallSignReset->SetFocus();
|
||||
}
|
||||
|
||||
void MainFrame::OnOpenCallsignList( wxCommandEvent& event )
|
||||
{
|
||||
wxGetApp().lastSelectedLoggingRow = MainApp::MAIN_WINDOW;
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
void MainFrame::OnCloseCallsignList( wxCommandEvent& event )
|
||||
{
|
||||
auto index = m_lastReportedCallsignListView->GetFirstSelected();
|
||||
if (index == -1)
|
||||
{
|
||||
// Make sure we're not selected if no callsigns selected.
|
||||
wxGetApp().lastSelectedLoggingRow = MainApp::UNSELECTED;
|
||||
m_BtnCallSignReset->SetFocus();
|
||||
}
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
void MainFrame::resetStats_()
|
||||
{
|
||||
if (m_RxRunning) {
|
||||
|
|
|
|||
|
|
@ -230,13 +230,16 @@ void MainFrame::OnTogBtnRecord(wxCommandEvent& event)
|
|||
{
|
||||
wxString dxCall;
|
||||
auto selected = m_lastReportedCallsignListView->GetFirstSelected();
|
||||
if (selected != -1)
|
||||
if (wxGetApp().lastSelectedLoggingRow == MainApp::MAIN_WINDOW && selected != -1)
|
||||
{
|
||||
// Get callsign and RX frequency
|
||||
dxCall = m_lastReportedCallsignListView->GetItemText(selected, 0);
|
||||
log_info("Using %s from main window drop-down list as default recording suffix", (const char*)dxCall.ToUTF8());
|
||||
}
|
||||
else if (m_reporterDialog != nullptr && m_reporterDialog->getSelectedCallsignInfo(dxCall))
|
||||
else if (
|
||||
m_reporterDialog != nullptr &&
|
||||
wxGetApp().lastSelectedLoggingRow == MainApp::FREEDV_REPORTER &&
|
||||
m_reporterDialog->getSelectedCallsignInfo(dxCall))
|
||||
{
|
||||
log_info("Using %s from FreeDV Reporter as default recording suffix", (const char*)dxCall.ToUTF8());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -907,6 +907,8 @@ TopFrame::TopFrame(wxWindow* parent, wxWindowID id, const wxString& title, const
|
|||
m_cboReportFrequency->Connect(wxEVT_SET_FOCUS, wxFocusEventHandler(TopFrame::OnReportFrequencySetFocus), NULL, this);
|
||||
m_cboReportFrequency->Connect(wxEVT_KILL_FOCUS, wxFocusEventHandler(TopFrame::OnReportFrequencyKillFocus), NULL, this);
|
||||
|
||||
m_cboLastReportedCallsigns->Connect(wxEVT_COMBOBOX_DROPDOWN, wxCommandEventHandler(TopFrame::OnOpenCallsignList), NULL, this);
|
||||
m_cboLastReportedCallsigns->Connect(wxEVT_COMBOBOX_CLOSEUP, wxCommandEventHandler(TopFrame::OnCloseCallsignList), NULL, this);
|
||||
m_cboLastReportedCallsigns->Connect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(TopFrame::OnRightClickCallsignList), NULL, this);
|
||||
|
||||
m_auiNbookCtrl->Connect(wxEVT_AUINOTEBOOK_PAGE_CHANGING, wxAuiNotebookEventHandler(TopFrame::OnNotebookPageChanging), NULL, this);
|
||||
|
|
@ -1002,6 +1004,8 @@ TopFrame::~TopFrame()
|
|||
m_cboReportFrequency->Disconnect(wxEVT_KILL_FOCUS, wxFocusEventHandler(TopFrame::OnReportFrequencyKillFocus), NULL, this);
|
||||
|
||||
m_cboLastReportedCallsigns->Disconnect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(TopFrame::OnRightClickCallsignList), NULL, this);
|
||||
m_cboLastReportedCallsigns->Disconnect(wxEVT_COMBOBOX_DROPDOWN, wxCommandEventHandler(TopFrame::OnOpenCallsignList), NULL, this);
|
||||
m_cboLastReportedCallsigns->Disconnect(wxEVT_COMBOBOX_CLOSEUP, wxCommandEventHandler(TopFrame::OnCloseCallsignList), NULL, this);
|
||||
}
|
||||
|
||||
void TopFrame::setVoiceKeyerButtonLabel_(wxString filename)
|
||||
|
|
|
|||
|
|
@ -224,6 +224,9 @@ class TopFrame : public wxFrame
|
|||
virtual void OnResetMicSpkrLevel(wxMouseEvent& event) { event.Skip(); }
|
||||
|
||||
virtual void OnRightClickCallsignList(wxMouseEvent& event) { event.Skip(); }
|
||||
|
||||
virtual void OnOpenCallsignList( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnCloseCallsignList( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
||||
void setVoiceKeyerButtonLabel_(wxString filename);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue