mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-03-21 03:28:59 -04:00
Merge branch 'develop'
This commit is contained in:
commit
fadda93f2f
@ -71,7 +71,7 @@ message (STATUS "******************************************************")
|
||||
|
||||
include (set_build_type)
|
||||
# RC 0 or omitted is a development build, GA is a General Availability release build
|
||||
set_build_type (RC 1)
|
||||
set_build_type (RC 2)
|
||||
set (wsjtx_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}${BUILD_TYPE_REVISION}")
|
||||
|
||||
#
|
||||
|
35
NEWS
35
NEWS
@ -11,6 +11,41 @@
|
||||
|
||||
Copyright 2001 - 2022 by Joe Taylor, K1JT, and the WSJT Development Team
|
||||
|
||||
Release: WSJT-X 2.6.0-rc2
|
||||
July 25, 2022
|
||||
----------------------
|
||||
|
||||
WSJT-X 2.6.0 Release Candidate 2 brings a number of improvements as
|
||||
well as some bug fixes.
|
||||
|
||||
In program WSJT-X :
|
||||
|
||||
- Echo-mode now lets the "Measure" function use the computed fspread
|
||||
for DX grid
|
||||
|
||||
- Fix VFOB not getting set on some rigs (e.g. IC7610 & IC7100)
|
||||
|
||||
- Show contacts by ID in the contest log, scroll to insertion when
|
||||
sorted by the column up or down
|
||||
|
||||
- Remember the settings for T/R period and Submode by mode; you can now
|
||||
switch directly e.g. between MSK144-15, Q65-60A, JT65-C, FST4-120
|
||||
|
||||
- Restore Tx & Rx offset when coming from a mode which sets AF to
|
||||
1500 Hz (MSK144, FST4W, Echo, WSPR, FreqCal) and switch back to
|
||||
FT4, FT8, Q65, JT65, or FST4
|
||||
|
||||
- Set 4m FT8 default frequency for Region 1 to 70.154 MHz
|
||||
|
||||
- Optimize mode button layout for 4K screens
|
||||
|
||||
- Minor edits to display of Keyboard Shortcuts
|
||||
|
||||
- Make OK button the default on the LogQSO dialog window
|
||||
|
||||
- Fix some bugs
|
||||
|
||||
|
||||
Release: WSJT-X 2.6.0-rc1
|
||||
June 20, 2022
|
||||
----------------------
|
||||
|
@ -11,6 +11,41 @@
|
||||
|
||||
Copyright 2001 - 2022 by Joe Taylor, K1JT, and the WSJT Development Team
|
||||
|
||||
Release: WSJT-X 2.6.0-rc2
|
||||
July 25, 2022
|
||||
----------------------
|
||||
|
||||
WSJT-X 2.6.0 Release Candidate 2 brings a number of improvements as
|
||||
well as some bug fixes.
|
||||
|
||||
In program WSJT-X :
|
||||
|
||||
- Echo-mode now lets the "Measure" function use the computed fspread
|
||||
for DX grid
|
||||
|
||||
- Fix VFOB not getting set on some rigs (e.g. IC7610 & IC7100)
|
||||
|
||||
- Show contacts by ID in the contest log, scroll to insertion when
|
||||
sorted by the column up or down
|
||||
|
||||
- Remember the settings for T/R period and Submode by mode; you can now
|
||||
switch directly e.g. between MSK144-15, Q65-60A, JT65-C, FST4-120
|
||||
|
||||
- Restore Tx & Rx offset when coming from a mode which sets AF to
|
||||
1500 Hz (MSK144, FST4W, Echo, WSPR, FreqCal) and switch back to
|
||||
FT4, FT8, Q65, JT65, or FST4
|
||||
|
||||
- Set 4m FT8 default frequency for Region 1 to 70.154 MHz
|
||||
|
||||
- Optimize mode button layout for 4K screens
|
||||
|
||||
- Minor edits to display of Keyboard Shortcuts
|
||||
|
||||
- Make OK button the default on the LogQSO dialog window
|
||||
|
||||
- Fix some bugs
|
||||
|
||||
|
||||
Release: WSJT-X 2.6.0-rc1
|
||||
June 20, 2022
|
||||
----------------------
|
||||
@ -85,6 +120,7 @@ In program MAP65 (Windows only):
|
||||
- Suppress a bounds error caused by too-wide setting of display
|
||||
bandwidth
|
||||
|
||||
|
||||
Release: WSJT-X 2.5.4
|
||||
Dec 28, 2021
|
||||
----------------------
|
||||
|
@ -911,6 +911,7 @@ void HamlibTransceiver::do_frequency (Frequency f, MODE m, bool no_ignore)
|
||||
// to frequency such as the TS-2000 auto mode setting
|
||||
CAT_TRACE ("rig_set_mode mode=" << rig_strrmode (new_mode));
|
||||
m_->error_check (rig_set_mode (m_->rig_.data (), target_vfo, new_mode, RIG_PASSBAND_NOCHANGE), tr ("setting current VFO mode"));
|
||||
rig_set_mode (m_->rig_.data (), RIG_VFO_B, new_mode, RIG_PASSBAND_NOCHANGE), tr ("setting VFOB mode");
|
||||
}
|
||||
update_mode (m);
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ uses information from the previous Rx sequence.
|
||||
|a4|MyCall DxCall RRR
|
||||
|a5|MyCall DxCall 73
|
||||
|a6|MyCall DxCall RR73
|
||||
|a7|Call_1 Call_2     ?
|
||||
|a7|(Call_1 or CQ) Call_2     ?
|
||||
|===
|
||||
|
||||
If a codeword is found that is judged to have high (but not
|
||||
|
@ -11,7 +11,7 @@ subroutine astro0(nyear,month,nday,uth8,freq8,mygrid,hisgrid, &
|
||||
real*8 uth8,techo8,freq8
|
||||
real*8 xl,b
|
||||
common/librcom/xl(2),b(2)
|
||||
common/echocom2/echo_spread
|
||||
common/echocom2/fspread_self,fspread_dx
|
||||
data uth8z/0.d0/
|
||||
save
|
||||
|
||||
@ -43,9 +43,11 @@ subroutine astro0(nyear,month,nday,uth8,freq8,mygrid,hisgrid, &
|
||||
dbdt2=DEGS*(b2a-b2)
|
||||
rate1=2.0*sqrt(dldt1**2 + dbdt1**2)
|
||||
width1=0.5*6741*fghz*rate1
|
||||
echo_spread=width1 !Save echo_spread for avecho()
|
||||
rate2=sqrt((dldt1+dldt2)**2 + (dbdt1+dbdt2)**2)
|
||||
width2=0.5*6741*fghz*rate2
|
||||
if(hisgrid(1:4).eq.' ') width2=width1 !No hisgrid, use self width
|
||||
fspread_self=width1 !Save for avecho()
|
||||
fspread_dx=width2 !Save for avecho()
|
||||
|
||||
AzSun8=AzSun
|
||||
ElSun8=ElSun
|
||||
|
@ -1,4 +1,5 @@
|
||||
subroutine avecho(id2,ndop,nfrit,nqual,f1,xlevel,snrdb,db_err,dfreq,width)
|
||||
subroutine avecho(id2,ndop,nfrit,nauto,nqual,f1,xlevel,snrdb,db_err, &
|
||||
dfreq,width)
|
||||
|
||||
integer TXLENGTH
|
||||
parameter (TXLENGTH=27648) !27*1024
|
||||
@ -17,18 +18,19 @@ subroutine avecho(id2,ndop,nfrit,nqual,f1,xlevel,snrdb,db_err,dfreq,width)
|
||||
complex c(0:NH)
|
||||
equivalence (x,c),(ipk,ipkv)
|
||||
common/echocom/nclearave,nsum,blue(NZ),red(NZ)
|
||||
common/echocom2/echo_spread
|
||||
common/echocom2/fspread_self,fspread_dx
|
||||
save dop0,sa,sb
|
||||
|
||||
fspread=echo_spread !### Use the predicted Doppler spread ###
|
||||
fspread=fspread_dx !### Use the predicted Doppler spread ###
|
||||
if(nauto.eq.1) fspread=fspread_self
|
||||
inquire(file='fspread.txt',exist=ex)
|
||||
if(ex) then
|
||||
open(39,file='fspread.txt',status='old')
|
||||
read(39,*) fspread
|
||||
close(39)
|
||||
endif
|
||||
fspread=min(max(0.1,fspread),700.0)
|
||||
width=fspread
|
||||
|
||||
dop=ndop
|
||||
sq=0.
|
||||
do i=1,TXLENGTH
|
||||
|
@ -3,7 +3,8 @@ subroutine grid2deg(grid0,dlong,dlat)
|
||||
! Converts Maidenhead grid locator to degrees of West longitude
|
||||
! and North latitude.
|
||||
|
||||
character*6 grid0,grid
|
||||
character*(*) grid0
|
||||
character*6 grid
|
||||
character*1 g1,g2,g3,g4,g5,g6
|
||||
|
||||
grid=grid0
|
||||
|
@ -234,8 +234,10 @@ bool CabrilloLog::add_QSO (Frequency frequency, QString const& mode, QDateTime c
|
||||
m_->adding_row_ = true;
|
||||
auto ok = m_->insertRecord (-1, record);
|
||||
transaction.submit ();
|
||||
|
||||
m_->adding_row_ = false;
|
||||
m_->setEditStrategy (QSqlTableModel::OnFieldChange);
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
@ -256,6 +258,11 @@ bool CabrilloLog::dupe (Frequency frequency, QString const& call) const
|
||||
return false;
|
||||
}
|
||||
|
||||
int CabrilloLog::n_qso()
|
||||
{
|
||||
return m_->rowCount();
|
||||
}
|
||||
|
||||
void CabrilloLog::reset ()
|
||||
{
|
||||
// synchronize model
|
||||
|
@ -31,6 +31,7 @@ public:
|
||||
bool add_QSO (Frequency, QString const& mode, QDateTime const&, QString const& call
|
||||
, QString const& report_sent, QString const& report_received);
|
||||
bool dupe (Frequency, QString const& call) const;
|
||||
int n_qso();
|
||||
|
||||
QSqlTableModel * model ();
|
||||
void reset ();
|
||||
|
@ -80,6 +80,5 @@ QString version (bool include_patch)
|
||||
QString program_title (QString const& revision)
|
||||
{
|
||||
QString id {QCoreApplication::applicationName () + " v" + QCoreApplication::applicationVersion ()};
|
||||
// return id + " " + revision + " by K1JT, G4WJS, K9AN, and IV3NWV";
|
||||
return id + " " + revision;
|
||||
return id + " " + revision + " by K1JT et al.";
|
||||
}
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include <QSqlTableModel>
|
||||
#include <QItemSelectionModel>
|
||||
#include <QItemSelection>
|
||||
#include <QTimer>
|
||||
#include "Configuration.hpp"
|
||||
#include "SettingsGroup.hpp"
|
||||
#include "MessageBox.hpp"
|
||||
@ -88,29 +89,37 @@ void AbstractLogWindow::impl::delete_QSOs ()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
AbstractLogWindow::AbstractLogWindow (QString const& settings_key, QSettings * settings
|
||||
, Configuration const * configuration
|
||||
, QWidget * parent)
|
||||
: QWidget {parent}
|
||||
, m_ {this, settings_key, settings, configuration}
|
||||
{
|
||||
// this attempt to scroll to the last new record doesn't work, some
|
||||
// sort of issue with model indexes and optimized DB fetches. For
|
||||
// now sorting by the same column and direction as the underlying DB
|
||||
// select and that DB select being in descending order so new rows
|
||||
// at the end appear at view row 0 gets the job done
|
||||
, m_ {this, settings_key, settings, configuration} {
|
||||
// when we're viewing the log by contact ID (visually, up/down chevron in the column heading),
|
||||
// when we add a contact, scroll the list to the top or bottom, depending on the sort order.
|
||||
// If the table is sorted by some other criteria, don't change anything.
|
||||
|
||||
// // ensure view scrolls to latest new row
|
||||
// connect (&m_->model_, &QAbstractItemModel::rowsInserted, this, [this] (QModelIndex const& parent, int first, int last) {
|
||||
// // note col 0 is hidden so use col 1
|
||||
// // queued connection required otherwise row may not be available
|
||||
// // in time
|
||||
// auto index = m_->model_.index (last, 1, parent);
|
||||
// if (m_->log_view_)
|
||||
// {
|
||||
// m_->log_view_->scrollTo (index);
|
||||
// }
|
||||
// }, Qt::QueuedConnection);
|
||||
connect(&m_->model_, &QAbstractItemModel::rowsInserted, this,
|
||||
[this](QModelIndex const &parent, int first, int last) {
|
||||
(void) (parent); // UNUSED
|
||||
(void) (first); // UNUSED
|
||||
(void) (last); // UNUSED
|
||||
QTimer::singleShot(0, [=] {
|
||||
// if we're sorting by the date, then show the most-recently logged contact.
|
||||
// Otherwise, leave the scroll alone
|
||||
auto horizontal_header = m_->log_view_->horizontalHeader ();
|
||||
if (horizontal_header->sortIndicatorSection() == 3) { // sorting on date?
|
||||
if (horizontal_header->sortIndicatorOrder() == Qt::AscendingOrder) {
|
||||
// we're sorting oldes->newest, so go to bottom
|
||||
m_->log_view_->scrollToBottom();
|
||||
} else {
|
||||
m_->log_view_->scrollToTop();
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
AbstractLogWindow::~AbstractLogWindow ()
|
||||
@ -134,11 +143,14 @@ void AbstractLogWindow::set_log_view (QTableView * log_view)
|
||||
log_view->setVerticalScrollMode (QAbstractItemView::ScrollPerPixel);
|
||||
m_->model_.setSourceModel (log_view->model ());
|
||||
log_view->setModel (&m_->model_);
|
||||
log_view->setColumnHidden (0, true);
|
||||
log_view->setColumnHidden (0, true); // hide the ID column
|
||||
auto horizontal_header = log_view->horizontalHeader ();
|
||||
|
||||
horizontal_header->setResizeContentsPrecision (0); // visible region only
|
||||
horizontal_header->setSectionResizeMode (QHeaderView::ResizeToContents);
|
||||
horizontal_header->setSectionsMovable (true);
|
||||
horizontal_header->setSortIndicator(3, Qt::AscendingOrder); // sort by the contact datetime oldest->newest
|
||||
|
||||
auto vertical_header = log_view->horizontalHeader ();
|
||||
vertical_header->setResizeContentsPrecision (0); // visible region only
|
||||
vertical_header->setSectionResizeMode (QHeaderView::ResizeToContents);
|
||||
@ -149,6 +161,9 @@ void AbstractLogWindow::set_log_view (QTableView * log_view)
|
||||
connect (delete_action, &QAction::triggered, [this] (bool /*checked*/) {
|
||||
m_->delete_QSOs ();
|
||||
});
|
||||
|
||||
// scroll to bottom, since we're showing 1-N
|
||||
log_view->scrollToBottom();
|
||||
}
|
||||
|
||||
void AbstractLogWindow::set_log_view_font (QFont const& font)
|
||||
|
@ -70,6 +70,7 @@ CabrilloLogWindow::CabrilloLogWindow (QSettings * settings, Configuration const
|
||||
m_->ui_.log_table_view->setItemDelegateForColumn (3, new SQLiteDateTimeDelegate {this});
|
||||
m_->ui_.log_table_view->setItemDelegateForColumn (4, new CallsignDelegate {this});
|
||||
auto h_header = m_->ui_.log_table_view->horizontalHeader ();
|
||||
m_->ui_.log_table_view->verticalHeader()->setVisible(false); // turn off line numbers for the table view
|
||||
h_header->moveSection (7, 1); // band to first column
|
||||
}
|
||||
|
||||
@ -88,3 +89,10 @@ void CabrilloLogWindow::log_model_changed (int row)
|
||||
m_->log_model_->select ();
|
||||
}
|
||||
}
|
||||
|
||||
void CabrilloLogWindow::set_nQSO(int n)
|
||||
{
|
||||
QString t;
|
||||
t=t.asprintf("%d QSOs",n);
|
||||
m_->ui_.nQSO_lineEdit->setText(t);
|
||||
}
|
||||
|
@ -16,6 +16,7 @@ public:
|
||||
explicit CabrilloLogWindow (QSettings *, Configuration const *, QSqlTableModel * cabrillo_log_model
|
||||
, QWidget * parent = nullptr);
|
||||
~CabrilloLogWindow ();
|
||||
void set_nQSO(int n);
|
||||
|
||||
private:
|
||||
void log_model_changed (int row) override;
|
||||
|
@ -27,6 +27,22 @@
|
||||
</attribute>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="nQSO_lineEdit">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>0 QSOs</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
|
@ -5,6 +5,7 @@
|
||||
#include <QSettings>
|
||||
#include <QStandardPaths>
|
||||
#include <QDir>
|
||||
#include <QPushButton>
|
||||
|
||||
#include "logbook/logbook.h"
|
||||
#include "MessageBox.hpp"
|
||||
@ -109,6 +110,15 @@ void LogQSO::initLogQSO(QString const& hisCall, QString const& hisGrid, QString
|
||||
Radio::Frequency dialFreq, bool noSuffix, QString xSent, QString xRcvd)
|
||||
{
|
||||
if(!isHidden()) return;
|
||||
|
||||
QPushButton* okBtn = ui->buttonBox->button(QDialogButtonBox::Ok);
|
||||
okBtn->setAutoDefault(true);
|
||||
okBtn->setDefault(true);
|
||||
okBtn->setFocus();
|
||||
QPushButton* caBtn = ui->buttonBox->button(QDialogButtonBox::Cancel);
|
||||
caBtn->setAutoDefault(false);
|
||||
caBtn->setDefault(false);
|
||||
|
||||
ui->call->setText (hisCall);
|
||||
ui->grid->setText (hisGrid);
|
||||
ui->name->clear ();
|
||||
|
@ -153,7 +153,7 @@ extern "C" {
|
||||
|
||||
int savec2_(char const * fname, int* TR_seconds, double* dial_freq, fortran_charlen_t);
|
||||
|
||||
void avecho_( short id2[], int* dop, int* nfrit, int* nqual, float* f1,
|
||||
void avecho_( short id2[], int* dop, int* nfrit, int* nauto, int* nqual, float* f1,
|
||||
float* level, float* sigdb, float* snr, float* dfreq,
|
||||
float* width);
|
||||
|
||||
@ -294,6 +294,9 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
|
||||
m_secID {0},
|
||||
m_idleMinutes {0},
|
||||
m_nSubMode {0},
|
||||
m_nSubMode_Q65 {0},
|
||||
m_nSubMode_JT65 {0},
|
||||
m_nSubMode_JT4 {0},
|
||||
m_nclearave {1},
|
||||
m_nWSPRdecodes {0},
|
||||
m_k0 {9999999},
|
||||
@ -750,7 +753,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
|
||||
|
||||
// ensure a balanced layout of the mode buttons
|
||||
qreal pointSize = m_config.text_font().pointSizeF();
|
||||
if (pointSize < 12) {
|
||||
if (pointSize < 11) {
|
||||
ui->houndButton->setMaximumWidth(40);
|
||||
ui->ft8Button->setMaximumWidth(40);
|
||||
ui->ft4Button->setMaximumWidth(40);
|
||||
@ -758,12 +761,12 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
|
||||
ui->q65Button->setMaximumWidth(40);
|
||||
ui->jt65Button->setMaximumWidth(40);
|
||||
} else {
|
||||
ui->houndButton->setMinimumWidth(0);
|
||||
ui->ft8Button->setMinimumWidth(0);
|
||||
ui->ft4Button->setMinimumWidth(0);
|
||||
ui->msk144Button->setMinimumWidth(0);
|
||||
ui->q65Button->setMinimumWidth(0);
|
||||
ui->jt65Button->setMinimumWidth(0);
|
||||
ui->houndButton->setMinimumWidth(50);
|
||||
ui->ft8Button->setMinimumWidth(50);
|
||||
ui->ft4Button->setMinimumWidth(50);
|
||||
ui->msk144Button->setMinimumWidth(50);
|
||||
ui->q65Button->setMinimumWidth(50);
|
||||
ui->jt65Button->setMinimumWidth(50);
|
||||
}
|
||||
|
||||
// hook up save WAV file exit handling
|
||||
@ -1171,7 +1174,7 @@ void MainWindow::writeSettings()
|
||||
m_settings->setValue("FST4W_FTol",ui->sbFST4W_FTol->value());
|
||||
m_settings->setValue("FST4_FLow",ui->sbF_Low->value());
|
||||
m_settings->setValue("FST4_FHigh",ui->sbF_High->value());
|
||||
m_settings->setValue("SubMode",ui->sbSubmode->value());
|
||||
// m_settings->setValue("SubMode",ui->sbSubmode->value());
|
||||
m_settings->setValue("DTtol",m_DTtol);
|
||||
m_settings->setValue("Ftol", ui->sbFtol->value ());
|
||||
m_settings->setValue("MinSync",m_minSync);
|
||||
@ -1193,7 +1196,7 @@ void MainWindow::writeSettings()
|
||||
m_settings->setValue("UploadSpots",m_uploadWSPRSpots);
|
||||
m_settings->setValue("NoOwnCall",ui->cbNoOwnCall->isChecked());
|
||||
m_settings->setValue ("BandHopping", ui->band_hopping_group_box->isChecked ());
|
||||
m_settings->setValue ("TRPeriod", ui->sbTR->value ());
|
||||
// m_settings->setValue ("TRPeriod", ui->sbTR->value ());
|
||||
m_settings->setValue ("MaxDrift", ui->sbMaxDrift->value());
|
||||
m_settings->setValue ("TRPeriod_FST4W", ui->sbTR_FST4W->value ());
|
||||
m_settings->setValue("FastMode",m_bFastMode);
|
||||
@ -1277,8 +1280,14 @@ void MainWindow::readSettings()
|
||||
ui->sbFST4W_RxFreq->setValue(m_settings->value("FST4W_RxFreq",1500).toInt());
|
||||
ui->sbF_Low->setValue(m_settings->value("FST4_FLow",600).toInt());
|
||||
ui->sbF_High->setValue(m_settings->value("FST4_FHigh",1400).toInt());
|
||||
m_nSubMode=m_settings->value("SubMode",0).toInt();
|
||||
ui->sbSubmode->setValue(m_nSubMode);
|
||||
// m_nSubMode=m_settings->value("SubMode",0).toInt();
|
||||
if (m_mode=="Q65") m_nSubMode=m_settings->value("SubMode_Q65",0).toInt();
|
||||
if (m_mode=="JT65") m_nSubMode=m_settings->value("SubMode_JT65",0).toInt();
|
||||
if (m_mode=="JT4") m_nSubMode=m_settings->value("SubMode_JT4",0).toInt();
|
||||
// ui->sbSubmode->setValue(m_nSubMode);
|
||||
if (m_mode=="Q65") ui->sbSubmode->setValue(m_nSubMode_Q65);
|
||||
if (m_mode=="JT65") ui->sbSubmode->setValue(m_nSubMode_JT65);
|
||||
if (m_mode=="JT4") ui->sbSubmode->setValue(m_nSubMode_JT4);
|
||||
ui->sbFtol->setValue (m_settings->value("Ftol", 50).toInt());
|
||||
ui->sbFST4W_FTol->setValue(m_settings->value("FST4W_FTol",100).toInt());
|
||||
m_minSync=m_settings->value("MinSync",0).toInt();
|
||||
@ -1289,7 +1298,10 @@ void MainWindow::readSettings()
|
||||
m_bSWL=m_settings->value("SWL",false).toBool();
|
||||
m_bFast9=m_settings->value("Fast9",false).toBool();
|
||||
m_bFastMode=m_settings->value("FastMode",false).toBool();
|
||||
ui->sbTR->setValue (m_settings->value ("TRPeriod", 15).toInt());
|
||||
// ui->sbTR->setValue (m_settings->value ("TRPeriod", 15).toInt());
|
||||
if (m_mode=="Q65") ui->sbTR->setValue (m_settings->value ("TRPeriod_Q65", 30).toInt());
|
||||
if (m_mode=="MSK144") ui->sbTR->setValue (m_settings->value ("TRPeriod_MSK144", 15).toInt());
|
||||
if (m_mode=="FST4") ui->sbTR->setValue (m_settings->value ("TRPeriod_FST4", 60).toInt());
|
||||
ui->sbMaxDrift->setValue (m_settings->value ("MaxDrift",0).toInt());
|
||||
ui->sbTR_FST4W->setValue (m_settings->value ("TRPeriod_FST4W", 15).toInt());
|
||||
m_lastMonitoredFrequency = m_settings->value ("DialFreq",
|
||||
@ -1411,6 +1423,7 @@ void MainWindow::setDecodedTextFont (QFont const& font)
|
||||
}
|
||||
if (m_contestLogWindow) {
|
||||
m_contestLogWindow->set_log_view_font (font);
|
||||
m_contestLogWindow->set_nQSO(m_logBook.contest_log()->n_qso());
|
||||
}
|
||||
if(m_ActiveStationsWidget != NULL) {
|
||||
m_ActiveStationsWidget->changeFont(font);
|
||||
@ -1576,6 +1589,8 @@ void MainWindow::dataSink(qint64 frames)
|
||||
if(m_mode=="Echo") {
|
||||
float dBerr=0.0;
|
||||
int nfrit=0;
|
||||
int nauto=0;
|
||||
if(m_auto) nauto=1;
|
||||
int nqual=0;
|
||||
float f1=1500.0;
|
||||
float xlevel=0.0;
|
||||
@ -1584,7 +1599,7 @@ void MainWindow::dataSink(qint64 frames)
|
||||
float width=0.0;
|
||||
echocom_.nclearave=m_nclearave;
|
||||
int nDop=0;
|
||||
avecho_(dec_data.d2,&nDop,&nfrit,&nqual,&f1,&xlevel,&sigdb,
|
||||
avecho_(dec_data.d2,&nDop,&nfrit,&nauto,&nqual,&f1,&xlevel,&sigdb,
|
||||
&dBerr,&dfreq,&width);
|
||||
QString t;
|
||||
t = t.asprintf("%3d %7.1f %7.1f %7.1f %7.1f %7.1f %3d",echocom_.nsum,xlevel,sigdb,
|
||||
@ -2764,6 +2779,7 @@ void MainWindow::on_contest_log_action_triggered()
|
||||
m_contestLogWindow->showNormal ();
|
||||
m_contestLogWindow->raise ();
|
||||
m_contestLogWindow->activateWindow ();
|
||||
m_contestLogWindow->set_nQSO(m_logBook.contest_log()->n_qso());
|
||||
}
|
||||
|
||||
void MainWindow::on_actionColors_triggered()
|
||||
@ -3019,10 +3035,10 @@ void MainWindow::on_actionKeyboard_shortcuts_triggered()
|
||||
<tr><td><b>Alt+H </b></td><td>Halt Tx</td></tr>
|
||||
<tr><td><b>Ctrl+L </b></td><td>Lookup callsign in database, generate standard messages</td></tr>
|
||||
<tr><td><b>Alt+M </b></td><td>Monitor</td></tr>
|
||||
<tr><td><b>Alt+N </b></td><td>Enable Tx</td></tr>
|
||||
<tr><td><b>Alt+N </b></td><td>Toggle "Enable Tx"</td></tr>
|
||||
<tr><td><b>Ctrl+O </b></td><td>Open a .wav file</td></tr>
|
||||
<tr><td><b>Alt+O </b></td><td>Change operator</td></tr>
|
||||
<tr><td><b>Alt+Q </b></td><td>Log QSO</td></tr>
|
||||
<tr><td><b>Alt+Q </b></td><td>Open "Log QSO" window</td></tr>
|
||||
<tr><td><b>Ctrl+R </b></td><td>Set Tx4 message to RRR (not in FT4)</td></tr>
|
||||
<tr><td><b>Alt+R </b></td><td>Set Tx4 message to RR73</td></tr>
|
||||
<tr><td><b>Alt+S </b></td><td>Stop monitoring</td></tr>
|
||||
@ -4662,6 +4678,7 @@ void MainWindow::guiUpdate()
|
||||
//Once per second (onesec)
|
||||
if(nsec != m_sec0) {
|
||||
// qDebug() << "AAA" << nsec;
|
||||
if(m_contestLogWindow) m_contestLogWindow->set_nQSO(m_logBook.contest_log()->n_qso());
|
||||
|
||||
if(m_mode=="FST4") chk_FST4_freq_range();
|
||||
m_currentBand=m_config.bands()->find(m_freqNominal);
|
||||
@ -6360,6 +6377,9 @@ void MainWindow::acceptQSO (QDateTime const& QSO_date_off, QString const& call,
|
||||
|
||||
m_xSent.clear ();
|
||||
m_xRcvd.clear ();
|
||||
if(m_contestLogWindow) {
|
||||
m_contestLogWindow->set_nQSO(m_logBook.contest_log()->n_qso());
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::updateRate()
|
||||
@ -6466,7 +6486,11 @@ void MainWindow::displayWidgets(qint64 n)
|
||||
|
||||
void MainWindow::on_actionFST4_triggered()
|
||||
{
|
||||
m_mode="FST4";
|
||||
QTimer::singleShot (50, [=] {
|
||||
ui->TxFreqSpinBox->setValue(m_settings->value("TxFreq_old",1500).toInt());
|
||||
ui->RxFreqSpinBox->setValue(m_settings->value("RxFreq_old",1500).toInt());
|
||||
on_sbSubmode_valueChanged(ui->sbSubmode->value());
|
||||
});
|
||||
m_mode="FST4";
|
||||
ui->actionFST4->setChecked(true);
|
||||
m_bFast9=false;
|
||||
@ -6500,7 +6524,8 @@ void MainWindow::on_actionFST4_triggered()
|
||||
switch_mode (Modes::FST4);
|
||||
m_wideGraph->setMode(m_mode);
|
||||
ui->sbTR->values ({15, 30, 60, 120, 300, 900, 1800});
|
||||
on_sbTR_valueChanged (ui->sbTR->value());
|
||||
ui->sbTR->setValue (m_settings->value ("TRPeriod_FST4", 60).toInt()); // remember sbTR settings by mode
|
||||
QTimer::singleShot (50, [=] {on_sbTR_valueChanged (ui->sbTR->value());});
|
||||
statusChanged();
|
||||
m_bOK_to_chk=true;
|
||||
chk_FST4_freq_range();
|
||||
@ -6538,6 +6563,11 @@ void MainWindow::on_actionFST4W_triggered()
|
||||
|
||||
void MainWindow::on_actionFT4_triggered()
|
||||
{
|
||||
QTimer::singleShot (50, [=] {
|
||||
ui->TxFreqSpinBox->setValue(m_settings->value("TxFreq_old",1500).toInt());
|
||||
ui->RxFreqSpinBox->setValue(m_settings->value("RxFreq_old",1500).toInt());
|
||||
on_sbSubmode_valueChanged(ui->sbSubmode->value());
|
||||
});
|
||||
m_mode="FT4";
|
||||
m_TRperiod=7.5;
|
||||
bool bVHF=m_config.enable_VHF_features();
|
||||
@ -6581,6 +6611,11 @@ void MainWindow::on_actionFT4_triggered()
|
||||
|
||||
void MainWindow::on_actionFT8_triggered()
|
||||
{
|
||||
QTimer::singleShot (50, [=] {
|
||||
ui->TxFreqSpinBox->setValue(m_settings->value("TxFreq_old",1500).toInt());
|
||||
ui->RxFreqSpinBox->setValue(m_settings->value("RxFreq_old",1500).toInt());
|
||||
on_sbSubmode_valueChanged(ui->sbSubmode->value());
|
||||
});
|
||||
m_mode="FT8";
|
||||
bool bVHF=m_config.enable_VHF_features();
|
||||
m_bFast9=false;
|
||||
@ -6694,6 +6729,10 @@ void MainWindow::on_actionFT8_triggered()
|
||||
|
||||
void MainWindow::on_actionJT4_triggered()
|
||||
{
|
||||
QTimer::singleShot (50, [=] {
|
||||
ui->TxFreqSpinBox->setValue(m_settings->value("TxFreq_old",1500).toInt());
|
||||
ui->RxFreqSpinBox->setValue(m_settings->value("RxFreq_old",1500).toInt());
|
||||
});
|
||||
m_mode="JT4";
|
||||
bool bVHF=m_config.enable_VHF_features();
|
||||
WSPR_config(false);
|
||||
@ -6720,7 +6759,10 @@ void MainWindow::on_actionJT4_triggered()
|
||||
ui->lh_decodes_headings_label->setText("UTC dB DT Freq " + tr ("Message"));
|
||||
ui->rh_decodes_headings_label->setText("UTC dB DT Freq " + tr ("Message"));
|
||||
if(bVHF) {
|
||||
ui->sbSubmode->setValue(m_nSubMode);
|
||||
// ui->sbSubmode->setValue(m_nSubMode);
|
||||
QTimer::singleShot (50, [=] {m_nSubMode=m_settings->value("SubMode_JT4",0).toInt();});
|
||||
QTimer::singleShot (75, [=] {ui->sbSubmode->setValue(m_settings->value("SubMode_JT4",0).toInt());});
|
||||
QTimer::singleShot (100, [=] {on_sbSubmode_valueChanged(m_nSubMode);});
|
||||
} else {
|
||||
ui->sbSubmode->setValue(0);
|
||||
}
|
||||
@ -6736,6 +6778,7 @@ void MainWindow::on_actionJT4_triggered()
|
||||
|
||||
void MainWindow::on_actionJT9_triggered()
|
||||
{
|
||||
QTimer::singleShot (50, [=] {on_sbSubmode_valueChanged(ui->sbSubmode->value());});
|
||||
m_mode="JT9";
|
||||
bool bVHF=m_config.enable_VHF_features();
|
||||
m_bFast9=ui->cbFast9->isChecked();
|
||||
@ -6795,6 +6838,10 @@ void MainWindow::on_actionJT9_triggered()
|
||||
|
||||
void MainWindow::on_actionJT65_triggered()
|
||||
{
|
||||
QTimer::singleShot (50, [=] {
|
||||
ui->TxFreqSpinBox->setValue(m_settings->value("TxFreq_old",1500).toInt());
|
||||
ui->RxFreqSpinBox->setValue(m_settings->value("RxFreq_old",1500).toInt());
|
||||
});
|
||||
on_actionJT9_triggered();
|
||||
m_mode="JT65";
|
||||
bool bVHF=m_config.enable_VHF_features();
|
||||
@ -6821,8 +6868,11 @@ void MainWindow::on_actionJT65_triggered()
|
||||
m_bFast9=false;
|
||||
ui->sbSubmode->setMaximum(2);
|
||||
if(bVHF) {
|
||||
ui->sbSubmode->setValue(m_nSubMode);
|
||||
ui->lh_decodes_title_label->setText(tr ("Single-Period Decodes"));
|
||||
// ui->sbSubmode->setValue(m_nSubMode);
|
||||
QTimer::singleShot (50, [=] {m_nSubMode=m_settings->value("SubMode_JT65",0).toInt();});
|
||||
QTimer::singleShot (75, [=] {ui->sbSubmode->setValue(m_settings->value("SubMode_JT65",0).toInt());});
|
||||
QTimer::singleShot (100, [=] {on_sbSubmode_valueChanged(m_nSubMode);});
|
||||
ui->lh_decodes_title_label->setText(tr ("Single-Period Decodes"));
|
||||
ui->rh_decodes_title_label->setText(tr ("Average Decodes"));
|
||||
} else {
|
||||
ui->sbSubmode->setValue(0);
|
||||
@ -6845,6 +6895,10 @@ void MainWindow::on_actionJT65_triggered()
|
||||
|
||||
void MainWindow::on_actionQ65_triggered()
|
||||
{
|
||||
QTimer::singleShot (50, [=] {
|
||||
ui->TxFreqSpinBox->setValue(m_settings->value("TxFreq_old",1500).toInt());
|
||||
ui->RxFreqSpinBox->setValue(m_settings->value("RxFreq_old",1500).toInt());
|
||||
});
|
||||
m_mode="Q65";
|
||||
ui->actionQ65->setChecked(true);
|
||||
switch_mode(Modes::Q65);
|
||||
@ -6857,8 +6911,12 @@ void MainWindow::on_actionQ65_triggered()
|
||||
Q_EMIT FFTSize(m_FFTSize);
|
||||
m_hsymStop=49;
|
||||
ui->sbTR->values ({15, 30, 60, 120, 300});
|
||||
on_sbTR_valueChanged (ui->sbTR->value());
|
||||
ui->sbSubmode->setValue(m_nSubMode);
|
||||
ui->sbTR->setValue (m_settings->value ("TRPeriod_Q65", 30).toInt()); // remember sbTR settings by mode
|
||||
QTimer::singleShot (50, [=] {on_sbTR_valueChanged (ui->sbTR->value());});
|
||||
// ui->sbSubmode->setValue(m_nSubMode);
|
||||
QTimer::singleShot (50, [=] {m_nSubMode=m_settings->value("SubMode_Q65",0).toInt();});
|
||||
QTimer::singleShot (75, [=] {ui->sbSubmode->setValue(m_settings->value("SubMode_Q65",0).toInt());});
|
||||
QTimer::singleShot (100, [=] {on_sbSubmode_valueChanged(m_nSubMode);});
|
||||
QString fname {QDir::toNativeSeparators(m_config.temp_dir().absoluteFilePath ("red.dat"))};
|
||||
m_wideGraph->setRedFile(fname);
|
||||
m_wideGraph->setMode(m_mode);
|
||||
@ -6928,7 +6986,11 @@ void MainWindow::on_actionMSK144_triggered()
|
||||
m_bFastMode=true;
|
||||
m_bFast9=false;
|
||||
ui->sbTR->values ({5, 10, 15, 30});
|
||||
on_sbTR_valueChanged (ui->sbTR->value());
|
||||
ui->sbTR->setValue (m_settings->value ("TRPeriod_MSK144", 15).toInt()); // remember sbTR settings by mode
|
||||
QTimer::singleShot (50, [=] {
|
||||
on_sbTR_valueChanged (ui->sbTR->value());
|
||||
on_sbSubmode_valueChanged(ui->sbSubmode->value());
|
||||
});
|
||||
m_wideGraph->hide();
|
||||
m_fastGraph->showNormal();
|
||||
ui->TxFreqSpinBox->setValue(1500);
|
||||
@ -7090,7 +7152,7 @@ void MainWindow::WSPR_config(bool b)
|
||||
ui->rh_decodes_widget->setVisible(!b);
|
||||
ui->controls_stack_widget->setCurrentIndex (b && m_mode != "Echo" ? 1 : 0);
|
||||
ui->QSO_controls_widget->setVisible (!b);
|
||||
ui->DX_controls_widget->setVisible (!b);
|
||||
ui->DX_controls_widget->setVisible (!b or (m_mode=="Echo"));
|
||||
ui->WSPR_controls_widget->setVisible (b);
|
||||
ui->lh_decodes_title_label->setVisible(!b and ui->cbMenus->isChecked());
|
||||
ui->logQSOButton->setVisible(!b);
|
||||
@ -7148,7 +7210,9 @@ void MainWindow::on_TxFreqSpinBox_valueChanged(int n)
|
||||
ui->TxFreqSpinBox->setStyleSheet("");
|
||||
}
|
||||
}
|
||||
|
||||
if (m_mode != "MSK144" && m_mode != "FST4W" && m_mode != "WSPR" && m_mode != "Echo" && m_mode != "FreqCal") {
|
||||
QTimer::singleShot (200, [=] {m_settings->setValue("TxFreq_old",ui->TxFreqSpinBox->value());});
|
||||
}
|
||||
statusUpdate ();
|
||||
}
|
||||
|
||||
@ -7158,6 +7222,9 @@ void MainWindow::on_RxFreqSpinBox_valueChanged(int n)
|
||||
if (m_mode == "FreqCal") {
|
||||
setRig ();
|
||||
}
|
||||
if (m_mode != "MSK144" && m_mode != "FST4W" && m_mode != "WSPR" && m_mode != "Echo" && m_mode != "FreqCal") {
|
||||
QTimer::singleShot (200, [=] {m_settings->setValue("RxFreq_old",ui->RxFreqSpinBox->value());});
|
||||
}
|
||||
statusUpdate ();
|
||||
}
|
||||
|
||||
@ -8046,7 +8113,16 @@ void MainWindow::on_sbTR_valueChanged(int value)
|
||||
m_wideGraph->setPeriod (value, m_nsps);
|
||||
progressBar.setMaximum (value);
|
||||
}
|
||||
if(m_mode=="FST4") chk_FST4_freq_range();
|
||||
if (m_mode=="Q65") {
|
||||
QTimer::singleShot (200, [=] {m_settings->setValue ("TRPeriod_Q65", ui->sbTR->value ());});
|
||||
}
|
||||
if (m_mode=="MSK144") {
|
||||
QTimer::singleShot (200, [=] {m_settings->setValue ("TRPeriod_MSK144", ui->sbTR->value ());});
|
||||
}
|
||||
if (m_mode=="FST4") {
|
||||
chk_FST4_freq_range();
|
||||
QTimer::singleShot (200, [=] {m_settings->setValue ("TRPeriod_FST4", ui->sbTR->value ());});
|
||||
}
|
||||
// if(m_transmitting) on_stopTxButton_clicked(); //### Is this needed or desirable? ###
|
||||
on_sbSubmode_valueChanged(ui->sbSubmode->value());
|
||||
statusUpdate ();
|
||||
@ -8102,6 +8178,10 @@ void MainWindow::on_sbSubmode_valueChanged(int n)
|
||||
if(m_bFast9) ui->TxFreqSpinBox->setValue(700);
|
||||
}
|
||||
if(m_transmitting and m_bFast9 and m_nSubMode>=4) transmit (99.0);
|
||||
if (m_mode !="Q65") ui->TxFreqSpinBox->setStyleSheet("");
|
||||
if (m_mode=="Q65") {QTimer::singleShot (200, [=] {m_settings->setValue("SubMode_Q65",ui->sbSubmode->value());});}
|
||||
if (m_mode=="JT65") {QTimer::singleShot (200, [=] {m_settings->setValue("SubMode_JT65",ui->sbSubmode->value());});}
|
||||
if (m_mode=="JT4") {QTimer::singleShot (200, [=] {m_settings->setValue("SubMode_JT4",ui->sbSubmode->value());});}
|
||||
statusUpdate ();
|
||||
}
|
||||
|
||||
|
@ -461,6 +461,9 @@ private:
|
||||
qint32 m_secID;
|
||||
qint32 m_idleMinutes;
|
||||
qint32 m_nSubMode;
|
||||
qint32 m_nSubMode_Q65;
|
||||
qint32 m_nSubMode_JT65;
|
||||
qint32 m_nSubMode_JT4;
|
||||
qint32 m_nclearave;
|
||||
qint32 m_minSync;
|
||||
qint32 m_dBm;
|
||||
|
Loading…
Reference in New Issue
Block a user