Added autoreply button in conjuntion with beacon button

This commit is contained in:
Jordan Sherer 2018-07-24 16:46:04 -04:00
parent 0bf2afa5f8
commit f415b0c94f
6 changed files with 556 additions and 339 deletions

View File

@ -554,6 +554,7 @@ private:
bool id_after_73_; bool id_after_73_;
bool tx_QSY_allowed_; bool tx_QSY_allowed_;
bool spot_to_psk_reporter_; bool spot_to_psk_reporter_;
bool autoreply_off_at_startup_;
bool monitor_off_at_startup_; bool monitor_off_at_startup_;
bool monitor_last_used_; bool monitor_last_used_;
bool log_as_RTTY_; bool log_as_RTTY_;
@ -664,6 +665,7 @@ void Configuration::set_spot_to_psk_reporter (bool spot)
} }
} }
bool Configuration::autoreply_off_at_startup () const {return m_->autoreply_off_at_startup_;}
bool Configuration::monitor_off_at_startup () const {return m_->monitor_off_at_startup_;} bool Configuration::monitor_off_at_startup () const {return m_->monitor_off_at_startup_;}
bool Configuration::monitor_last_used () const {return m_->rig_is_dummy_ || m_->monitor_last_used_;} bool Configuration::monitor_last_used () const {return m_->rig_is_dummy_ || m_->monitor_last_used_;}
bool Configuration::log_as_RTTY () const {return m_->log_as_RTTY_;} bool Configuration::log_as_RTTY () const {return m_->log_as_RTTY_;}
@ -1179,6 +1181,7 @@ void Configuration::impl::initialize_models ()
ui_->CW_id_after_73_check_box->setChecked (id_after_73_); ui_->CW_id_after_73_check_box->setChecked (id_after_73_);
ui_->tx_QSY_check_box->setChecked (tx_QSY_allowed_); ui_->tx_QSY_check_box->setChecked (tx_QSY_allowed_);
ui_->psk_reporter_check_box->setChecked (spot_to_psk_reporter_); ui_->psk_reporter_check_box->setChecked (spot_to_psk_reporter_);
ui_->autoreply_off_check_box->setChecked (autoreply_off_at_startup_);
ui_->monitor_off_check_box->setChecked (monitor_off_at_startup_); ui_->monitor_off_check_box->setChecked (monitor_off_at_startup_);
ui_->monitor_last_used_check_box->setChecked (monitor_last_used_); ui_->monitor_last_used_check_box->setChecked (monitor_last_used_);
ui_->log_as_RTTY_check_box->setChecked (log_as_RTTY_); ui_->log_as_RTTY_check_box->setChecked (log_as_RTTY_);
@ -1376,6 +1379,7 @@ void Configuration::impl::read_settings ()
type_2_msg_gen_ = settings_->value ("Type2MsgGen", QVariant::fromValue (Configuration::type_2_msg_3_full)).value<Configuration::Type2MsgGen> (); type_2_msg_gen_ = settings_->value ("Type2MsgGen", QVariant::fromValue (Configuration::type_2_msg_3_full)).value<Configuration::Type2MsgGen> ();
autoreply_off_at_startup_ = settings_->value ("AutoreplyOFF", false).toBool ();
monitor_off_at_startup_ = settings_->value ("MonitorOFF", false).toBool (); monitor_off_at_startup_ = settings_->value ("MonitorOFF", false).toBool ();
monitor_last_used_ = settings_->value ("MonitorLastUsed", false).toBool (); monitor_last_used_ = settings_->value ("MonitorLastUsed", false).toBool ();
spot_to_psk_reporter_ = settings_->value ("PSKReporter", false).toBool (); spot_to_psk_reporter_ = settings_->value ("PSKReporter", false).toBool ();
@ -1511,6 +1515,7 @@ void Configuration::impl::write_settings ()
settings_->setValue ("AudioInputChannel", AudioDevice::toString (audio_input_channel_)); settings_->setValue ("AudioInputChannel", AudioDevice::toString (audio_input_channel_));
settings_->setValue ("AudioOutputChannel", AudioDevice::toString (audio_output_channel_)); settings_->setValue ("AudioOutputChannel", AudioDevice::toString (audio_output_channel_));
settings_->setValue ("Type2MsgGen", QVariant::fromValue (type_2_msg_gen_)); settings_->setValue ("Type2MsgGen", QVariant::fromValue (type_2_msg_gen_));
settings_->setValue ("AutoreplyOFF", autoreply_off_at_startup_);
settings_->setValue ("MonitorOFF", monitor_off_at_startup_); settings_->setValue ("MonitorOFF", monitor_off_at_startup_);
settings_->setValue ("MonitorLastUsed", monitor_last_used_); settings_->setValue ("MonitorLastUsed", monitor_last_used_);
settings_->setValue ("PSKReporter", spot_to_psk_reporter_); settings_->setValue ("PSKReporter", spot_to_psk_reporter_);
@ -1937,6 +1942,7 @@ void Configuration::impl::accept ()
RxBandwidth_ = ui_->sbBandwidth->value (); RxBandwidth_ = ui_->sbBandwidth->value ();
id_after_73_ = ui_->CW_id_after_73_check_box->isChecked (); id_after_73_ = ui_->CW_id_after_73_check_box->isChecked ();
tx_QSY_allowed_ = ui_->tx_QSY_check_box->isChecked (); tx_QSY_allowed_ = ui_->tx_QSY_check_box->isChecked ();
autoreply_off_at_startup_ = ui_->autoreply_off_check_box->isChecked ();
monitor_off_at_startup_ = ui_->monitor_off_check_box->isChecked (); monitor_off_at_startup_ = ui_->monitor_off_check_box->isChecked ();
monitor_last_used_ = ui_->monitor_last_used_check_box->isChecked (); monitor_last_used_ = ui_->monitor_last_used_check_box->isChecked ();
type_2_msg_gen_ = static_cast<Type2MsgGen> (ui_->type_2_msg_gen_combo_box->currentIndex ()); type_2_msg_gen_ = static_cast<Type2MsgGen> (ui_->type_2_msg_gen_combo_box->currentIndex ());

View File

@ -112,6 +112,7 @@ public:
bool tx_QSY_allowed () const; bool tx_QSY_allowed () const;
bool spot_to_psk_reporter () const; bool spot_to_psk_reporter () const;
void set_spot_to_psk_reporter (bool); void set_spot_to_psk_reporter (bool);
bool autoreply_off_at_startup () const;
bool monitor_off_at_startup () const; bool monitor_off_at_startup () const;
bool monitor_last_used () const; bool monitor_last_used () const;
bool log_as_RTTY () const; bool log_as_RTTY () const;

View File

@ -314,6 +314,13 @@
<string>Behavior</string> <string>Behavior</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_8"> <layout class="QVBoxLayout" name="verticalLayout_8">
<item>
<widget class="QCheckBox" name="autoreply_off_check_box">
<property name="text">
<string>Autoreply off at startup</string>
</property>
</widget>
</item>
<item> <item>
<widget class="QCheckBox" name="monitor_off_check_box"> <widget class="QCheckBox" name="monitor_off_check_box">
<property name="toolTip"> <property name="toolTip">
@ -329,6 +336,9 @@
</item> </item>
<item> <item>
<widget class="QCheckBox" name="monitor_last_used_check_box"> <widget class="QCheckBox" name="monitor_last_used_check_box">
<property name="visible">
<bool>false</bool>
</property>
<property name="toolTip"> <property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check this if you wish to automatically return to the last monitored frequency when monitor is enabled, leave it unchecked if you wish to have the current rig frequency maintained.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check this if you wish to automatically return to the last monitored frequency when monitor is enabled, leave it unchecked if you wish to have the current rig frequency maintained.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property> </property>

View File

@ -4176,7 +4176,7 @@ void MainWindow::guiUpdate()
ui->labUTC->setText(utc); ui->labUTC->setText(utc);
auto delta = t.secsTo(m_nextBeacon); auto delta = t.secsTo(m_nextBeacon);
auto beacon = ui->beaconButton->isChecked() ? delta > 0 ? QString("%1 s").arg(delta) : "queued!" : "disabled"; auto beacon = ui->beaconButton->isChecked() ? delta > 0 ? QString("%1 s").arg(delta) : "queued!" : m_nextBeaconPaused ? "paused" : "disabled";
ui->labBeacon->setText(QString("Next Beacon: %1").arg(beacon)); ui->labBeacon->setText(QString("Next Beacon: %1").arg(beacon));
if(!m_monitoring and !m_diskData) { if(!m_monitoring and !m_diskData) {
@ -5765,7 +5765,7 @@ bool MainWindow::prepareNextMessageFrame()
if(ui->beaconButton->isChecked()){ if(ui->beaconButton->isChecked()){
// bump beacon // bump beacon
scheduleBeacon(true); scheduleBacon(true);
} }
return true; return true;
@ -5828,7 +5828,8 @@ int MainWindow::findFreeFreqOffset(int fmin, int fmax, int bw){
return 0; return 0;
} }
void MainWindow::scheduleBeacon(bool first){ // scheduleBeacon
void MainWindow::scheduleBacon(bool first){
auto timestamp = QDateTime::currentDateTimeUtc(); auto timestamp = QDateTime::currentDateTimeUtc();
auto orig = timestamp; auto orig = timestamp;
@ -5851,13 +5852,22 @@ void MainWindow::scheduleBeacon(bool first){
setBaconTimer(timestamp); setBaconTimer(timestamp);
} }
// setBeaconTimer
void MainWindow::setBaconTimer(QDateTime timestamp){ void MainWindow::setBaconTimer(QDateTime timestamp){
// set the next beacon timestamp and timer // set the next beacon timestamp and timer
beaconTimer.stop(); beaconTimer.stop();
m_nextBeacon = timestamp; m_nextBeacon = timestamp;
m_nextBeaconPaused = false;
beaconTimer.start(QDateTime::currentDateTimeUtc().msecsTo(m_nextBeacon) - 2*1000); beaconTimer.start(QDateTime::currentDateTimeUtc().msecsTo(m_nextBeacon) - 2*1000);
} }
// pauseBeacon
void MainWindow::pauseBacon(){
ui->beaconButton->setChecked(false);
beaconTimer.stop();
m_nextBeaconPaused = true;
}
// prepareBeacon // prepareBeacon
void MainWindow::prepareBacon(){ void MainWindow::prepareBacon(){
if(!ui->beaconButton->isChecked()){ if(!ui->beaconButton->isChecked()){
@ -5882,7 +5892,7 @@ void MainWindow::prepareBacon(){
m_lastTxTime.secsTo(QDateTime::currentDateTimeUtc()) < 30 m_lastTxTime.secsTo(QDateTime::currentDateTimeUtc()) < 30
){ ){
if(ui->beaconButton->isChecked()){ if(ui->beaconButton->isChecked()){
scheduleBeacon(true); scheduleBacon(true);
} }
return; return;
} }
@ -5924,7 +5934,7 @@ void MainWindow::prepareBacon(){
ui->startTxButton->setChecked(true); ui->startTxButton->setChecked(true);
scheduleBeacon(); scheduleBacon();
} }
@ -7454,7 +7464,7 @@ void MainWindow::on_pbT2R_clicked()
void MainWindow::on_beaconButton_clicked() void MainWindow::on_beaconButton_clicked()
{ {
if(ui->beaconButton->isChecked()){ if(ui->beaconButton->isChecked()){
scheduleBeacon(true); scheduleBacon(true);
} }
} }
@ -7590,6 +7600,8 @@ void MainWindow::handle_transceiver_update (Transceiver::TransceiverState const&
{ {
// initializing // initializing
on_monitorButton_clicked (!m_config.monitor_off_at_startup ()); on_monitorButton_clicked (!m_config.monitor_off_at_startup ());
ui->autoReplyButton->setChecked(!m_config.autoreply_off_at_startup());
} }
if (s.frequency () != old_state.frequency () || s.split () != m_splitMode) if (s.frequency () != old_state.frequency () || s.split () != m_splitMode)
{ {
@ -8483,8 +8495,6 @@ void MainWindow::displayActivity(bool force){
ui->tableWidgetCalls->resizeColumnToContents(2); ui->tableWidgetCalls->resizeColumnToContents(2);
ui->tableWidgetCalls->resizeColumnToContents(3); ui->tableWidgetCalls->resizeColumnToContents(3);
// Recently Directed Activity // Recently Directed Activity
while(!m_rxFrameQueue.isEmpty()){ while(!m_rxFrameQueue.isEmpty()){
RXDetail d = m_rxFrameQueue.dequeue(); RXDetail d = m_rxFrameQueue.dequeue();
@ -8518,6 +8528,9 @@ void MainWindow::displayActivity(bool force){
bool processed = false; bool processed = false;
// TODO: jsherer - should we if we have _any_ directed messages, pause the beacon??
// pauseBacon();
while(!m_rxCommandQueue.isEmpty()){ while(!m_rxCommandQueue.isEmpty()){
auto d = m_rxCommandQueue.dequeue(); auto d = m_rxCommandQueue.dequeue();
@ -8601,17 +8614,8 @@ void MainWindow::displayActivity(bool force){
processed = true; processed = true;
} }
if(processed){ if(processed && ui->autoReplyButton->isChecked()){
// if we have beacon turned on, and it's more than 15 seconds away, automatically reply now, and bump the beacon toggleTx(true);
if(QDateTime::currentDateTimeUtc().secsTo(m_nextBeacon) >= 15){
setFreqForRestore(f, true);
ui->startTxButton->setChecked(true);
if(ui->beaconButton->isChecked()){
scheduleBeacon(false);
}
}
} }
} }

View File

@ -261,8 +261,9 @@ private slots:
bool prepareNextMessageFrame(); bool prepareNextMessageFrame();
bool isFreqOffsetFree(int f, int bw); bool isFreqOffsetFree(int f, int bw);
int findFreeFreqOffset(int fmin, int fmax, int bw); int findFreeFreqOffset(int fmin, int fmax, int bw);
void scheduleBeacon(bool first=false); void scheduleBacon(bool first=false);
void setBaconTimer(QDateTime timestamp); void setBaconTimer(QDateTime timestamp);
void pauseBacon();
void prepareBacon(); void prepareBacon();
QString calculateDistance(QString const& grid); QString calculateDistance(QString const& grid);
void on_rptSpinBox_valueChanged(int n); void on_rptSpinBox_valueChanged(int n);
@ -707,6 +708,7 @@ private:
QQueue<QString> m_foxRR73Queue; QQueue<QString> m_foxRR73Queue;
QQueue<qint64> m_foxRateQueue; QQueue<qint64> m_foxRateQueue;
bool m_nextBeaconPaused = false;
QDateTime m_nextBeacon; QDateTime m_nextBeacon;
QDateTime m_dateTimeQSOOn; QDateTime m_dateTimeQSOOn;
QDateTime m_dateTimeLastTX; QDateTime m_dateTimeLastTX;

View File

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>960</width> <width>960</width>
<height>534</height> <height>544</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -19,19 +19,19 @@
<widget class="QWidget" name="centralWidget"> <widget class="QWidget" name="centralWidget">
<layout class="QVBoxLayout" name="verticalLayout_6" stretch="0,0,0,0"> <layout class="QVBoxLayout" name="verticalLayout_6" stretch="0,0,0,0">
<property name="spacing"> <property name="spacing">
<number>4</number> <number>6</number>
</property> </property>
<property name="leftMargin"> <property name="leftMargin">
<number>4</number> <number>6</number>
</property> </property>
<property name="topMargin"> <property name="topMargin">
<number>4</number> <number>6</number>
</property> </property>
<property name="rightMargin"> <property name="rightMargin">
<number>4</number> <number>6</number>
</property> </property>
<property name="bottomMargin"> <property name="bottomMargin">
<number>4</number> <number>6</number>
</property> </property>
<item> <item>
<widget class="QSplitter" name="mainSplitter"> <widget class="QSplitter" name="mainSplitter">
@ -45,7 +45,7 @@
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="handleWidth"> <property name="handleWidth">
<number>4</number> <number>6</number>
</property> </property>
<property name="childrenCollapsible"> <property name="childrenCollapsible">
<bool>true</bool> <bool>true</bool>
@ -60,13 +60,13 @@
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>0</width> <width>0</width>
<height>110</height> <height>125</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>16777215</width> <width>16777215</width>
<height>110</height> <height>16777215</height>
</size> </size>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout_16"> <layout class="QHBoxLayout" name="horizontalLayout_16">
@ -96,13 +96,13 @@
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>0</width> <width>0</width>
<height>110</height> <height>125</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>16777215</width> <width>16777215</width>
<height>110</height> <height>16777215</height>
</size> </size>
</property> </property>
<property name="frameShape"> <property name="frameShape">
@ -113,7 +113,7 @@
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout_17"> <layout class="QHBoxLayout" name="horizontalLayout_17">
<property name="spacing"> <property name="spacing">
<number>4</number> <number>6</number>
</property> </property>
<property name="leftMargin"> <property name="leftMargin">
<number>0</number> <number>0</number>
@ -148,12 +148,70 @@
<enum>QFrame::Sunken</enum> <enum>QFrame::Sunken</enum>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_12"> <layout class="QVBoxLayout" name="verticalLayout_12">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>18</number>
</property>
<property name="topMargin">
<number>18</number>
</property>
<property name="rightMargin">
<number>18</number>
</property>
<property name="bottomMargin">
<number>18</number>
</property>
<item>
<spacer name="verticalSpacer_6">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QWidget" name="widget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_19">
<property name="spacing">
<number>4</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item> <item>
<widget class="QComboBox" name="bandComboBox"> <widget class="QComboBox" name="bandComboBox">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>75</width> <width>75</width>
<height>0</height> <height>30</height>
</size> </size>
</property> </property>
<property name="visible"> <property name="visible">
@ -177,6 +235,9 @@ color:black;</string>
</property> </property>
</widget> </widget>
</item> </item>
</layout>
</widget>
</item>
<item> <item>
<widget class="QPushButton" name="labDialFreq"> <widget class="QPushButton" name="labDialFreq">
<property name="styleSheet"> <property name="styleSheet">
@ -232,6 +293,19 @@ QPushButton[oob=&quot;true&quot;] {
</property> </property>
</widget> </widget>
</item> </item>
<item>
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
@ -252,19 +326,19 @@ o</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_15"> <layout class="QVBoxLayout" name="verticalLayout_15">
<property name="spacing"> <property name="spacing">
<number>0</number> <number>6</number>
</property> </property>
<property name="leftMargin"> <property name="leftMargin">
<number>0</number> <number>18</number>
</property> </property>
<property name="topMargin"> <property name="topMargin">
<number>0</number> <number>18</number>
</property> </property>
<property name="rightMargin"> <property name="rightMargin">
<number>0</number> <number>18</number>
</property> </property>
<property name="bottomMargin"> <property name="bottomMargin">
<number>0</number> <number>18</number>
</property> </property>
<item> <item>
<spacer name="verticalSpacer_4"> <spacer name="verticalSpacer_4">
@ -375,235 +449,48 @@ color : white;
<enum>QFrame::Plain</enum> <enum>QFrame::Plain</enum>
</property> </property>
<layout class="QGridLayout" name="gridLayout_8"> <layout class="QGridLayout" name="gridLayout_8">
<item row="0" column="0"> <property name="leftMargin">
<widget class="QPushButton" name="readFreq"> <number>18</number>
<property name="enabled">
<bool>false</bool>
</property> </property>
<property name="sizePolicy"> <property name="topMargin">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <number>18</number>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
<property name="minimumSize"> <property name="rightMargin">
<number>18</number>
</property>
<property name="bottomMargin">
<number>18</number>
</property>
<property name="spacing">
<number>12</number>
</property>
<item row="3" column="1">
<spacer name="verticalSpacer_8">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size> <size>
<width>40</width> <width>20</width>
<height>30</height> <height>40</height>
</size> </size>
</property> </property>
<property name="maximumSize"> </spacer>
<size>
<width>40</width>
<height>30</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;If orange or red there has been a rig control failure, click to reset and read the dial frequency. S implies split mode.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="styleSheet">
<string notr="true">QPushButton {
font-family: helvetica;
font-size: 9pt;
font-weight: bold;
background-color: white;
color: black;
border-style: solid;
border-width:0px;
border-color: gray;
max-height:30px;
min-width:40px;
min-height:30px;
max-width:40px;
}
QPushButton[state=&quot;error&quot;] {
background-color: red;
}
QPushButton[state=&quot;warning&quot;] {
background-color: orange;
}
QPushButton[state=&quot;ok&quot;] {
background-color: #00ff00;
}</string>
</property>
<property name="text">
<string>CAT</string>
</property>
</widget>
</item> </item>
<item row="0" column="1"> <item row="1" column="0">
<widget class="QPushButton" name="logQSOButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>40</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>40</width>
<height>30</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">QPushButton {
font-family: helvetica;
font-size: 9pt;
font-weight: bold;
background-color: lightgray;
color: black;
border-style: solid;
border-width:0px;
border-color: gray;
max-height:30px;
min-width:40px;
min-height:30px;
max-width:40px;
}
QPushButton[state=&quot;error&quot;] {
background-color: red;
}
QPushButton[state=&quot;warning&quot;] {
background-color: orange;
}
QPushButton[state=&quot;ok&quot;] {
background-color: #00ff00;
}</string>
</property>
<property name="text">
<string>LOG</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="beaconButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>40</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>40</width>
<height>30</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">QPushButton {
font-family: helvetica;
font-size: 9pt;
font-weight: bold;
background-color: lightgray;
color: black;
border-style: solid;
border-width:0px;
border-color: gray;
max-height:30px;
min-width:40px;
min-height:30px;
max-width:40px;
}
QPushButton[state=&quot;error&quot;] {
background-color: red;
}
QPushButton[state=&quot;warning&quot;] {
background-color: orange;
}
QPushButton[state=&quot;ok&quot;] {
background-color: #00ff00;
}
QPushButton:checked {
background-color: #6699ff;
}</string>
</property>
<property name="text">
<string>BCN</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="spotButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>40</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>40</width>
<height>30</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">QPushButton {
font-family: helvetica;
font-size: 9pt;
font-weight: bold;
background-color: lightgray;
color: black;
border-style: solid;
border-width:0px;
border-color: gray;
max-height:30px;
min-width:40px;
min-height:30px;
max-width:40px;
}
QPushButton[state=&quot;error&quot;] {
background-color: red;
}
QPushButton[state=&quot;warning&quot;] {
background-color: orange;
}
QPushButton[state=&quot;ok&quot;] {
background-color: #00ff00;
}
QPushButton:checked {
background-color: #00ff00;
}</string>
</property>
<property name="text">
<string>SPOT</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QWidget" name="monitorContainer" native="true"> <widget class="QWidget" name="monitorContainer" native="true">
<property name="minimumSize">
<size>
<width>60</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>60</width>
<height>30</height>
</size>
</property>
<widget class="QPushButton" name="monitorButton"> <widget class="QPushButton" name="monitorButton">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
@ -612,7 +499,7 @@ background-color: #00ff00;
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>40</width> <width>60</width>
<height>30</height> <height>30</height>
</rect> </rect>
</property> </property>
@ -624,30 +511,31 @@ background-color: #00ff00;
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>40</width> <width>60</width>
<height>30</height> <height>30</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>40</width> <width>60</width>
<height>30</height> <height>30</height>
</size> </size>
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">QPushButton { <string notr="true">QPushButton {
font-family: helvetica; font-family: helvetica;
font-size: 9pt;
font-weight: bold; font-weight: bold;
background-color: lightgray; background-color: lightgray;
color: black; color: black;
border-style: solid; border-style: solid;
border-radius:2px;
border-width:0px; border-width:0px;
border-color: gray; border-color: gray;
max-height:30px; font-size:90%;
min-width:40px; min-width:60px;
min-height:30px; min-height:30px;
max-width:40px;; max-width:60px;
max-height:30px;
} }
QPushButton[state=&quot;error&quot;] { QPushButton[state=&quot;error&quot;] {
background-color: red; background-color: red;
@ -677,7 +565,7 @@ background-color: #00ff00;
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>40</width> <width>60</width>
<height>30</height> <height>30</height>
</rect> </rect>
</property> </property>
@ -689,13 +577,13 @@ background-color: #00ff00;
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>40</width> <width>60</width>
<height>30</height> <height>30</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>40</width> <width>60</width>
<height>30</height> <height>30</height>
</size> </size>
</property> </property>
@ -705,16 +593,17 @@ background-color: #00ff00;
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">QPushButton { <string notr="true">QPushButton {
font-family: helvetica; font-family: helvetica;
font-size: 9pt;
font-weight: bold; font-weight: bold;
color: black; color: black;
border-style: solid; border-style: solid;
border-radius:2px;
border-width:0px; border-width:0px;
border-color: gray; border-color: gray;
max-height:30px; font-size:90%;
min-width:40px; min-width:60px;
min-height:30px; min-height:30px;
max-width:40px;; max-width:60px;
max-height:30px;
background-color: yellow; background-color: yellow;
} }
</string> </string>
@ -728,7 +617,20 @@ background-color: yellow;
</widget> </widget>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="0" column="1">
<spacer name="verticalSpacer_7">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="tuneButton"> <widget class="QPushButton" name="tuneButton">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
@ -741,30 +643,32 @@ background-color: yellow;
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>40</width> <width>60</width>
<height>30</height> <height>30</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>40</width> <width>60</width>
<height>30</height> <height>30</height>
</size> </size>
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">QPushButton { <string notr="true">QPushButton {
font-family: helvetica; font-family: helvetica;
font-size: 9pt;
font-weight: bold; font-weight: bold;
background-color: lightgray; background-color: lightgray;
color: black; color: black;
border-style: solid; border-style: solid;
border-radius:2px;
border-width:0px; border-width:0px;
border-color: gray; border-color: gray;
max-height:30px; font-size:90%;
min-width:40px; min-width:60px;
min-height:30px; min-height:30px;
max-width:40px; max-width:60px;
max-height:30px;
} }
QPushButton[state=&quot;error&quot;] { QPushButton[state=&quot;error&quot;] {
background-color: red; background-color: red;
@ -787,6 +691,240 @@ background-color: yellow;
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0">
<widget class="QPushButton" name="autoReplyButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>60</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>60</width>
<height>30</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">QPushButton {
font-family: helvetica;
font-weight: bold;
background-color: lightgray;
color: black;
border-style: solid;
border-radius:2px;
border-width:0px;
border-color: gray;
font-size:90%;
min-width:60px;
min-height:30px;
max-width:60px;
max-height:30px;
}
QPushButton[state=&quot;error&quot;] {
background-color: red;
}
QPushButton[state=&quot;warning&quot;] {
background-color: orange;
}
QPushButton[state=&quot;ok&quot;] {
background-color: #00ff00;
}
QPushButton:checked {
background-color: #6699ff;
}</string>
</property>
<property name="text">
<string>AUTO</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="spotButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>60</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>60</width>
<height>30</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">QPushButton {
font-family: helvetica;
font-weight: bold;
background-color: lightgray;
color: black;
border-style: solid;
border-radius:2px;
border-width:0px;
border-color: gray;
font-size:90%;
min-width:60px;
min-height:30px;
max-width:60px;
max-height:30px;
}
QPushButton[state=&quot;error&quot;] {
background-color: red;
}
QPushButton[state=&quot;warning&quot;] {
background-color: orange;
}
QPushButton[state=&quot;ok&quot;] {
background-color: #00ff00;
}
QPushButton:checked {
background-color: #00ff00;
}</string>
</property>
<property name="text">
<string>SPOT</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QPushButton" name="beaconButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>60</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>60</width>
<height>30</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">QPushButton {
font-family: helvetica;
font-weight: bold;
background-color: lightgray;
color: black;
border-style: solid;
border-radius:2px;
border-width:0px;
border-color: gray;
font-size:90%;
min-width:60px;
min-height:30px;
max-width:60px;
max-height:30px;
}
QPushButton[state=&quot;error&quot;] {
background-color: red;
}
QPushButton[state=&quot;warning&quot;] {
background-color: orange;
}
QPushButton[state=&quot;ok&quot;] {
background-color: #00ff00;
}
QPushButton:checked {
background-color: #6699ff;
}</string>
</property>
<property name="text">
<string>BCN</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QPushButton" name="logQSOButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>60</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>60</width>
<height>30</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">QPushButton {
font-family: helvetica;
font-weight: bold;
background-color: lightgray;
color: black;
border-style: solid;
border-radius:2px;
border-width:0px;
border-color: gray;
font-size:90%;
min-width:60px;
min-height:30px;
max-width:60px;
max-height:30px;
}
QPushButton[state=&quot;error&quot;] {
background-color: red;
}
QPushButton[state=&quot;warning&quot;] {
background-color: orange;
}
QPushButton[state=&quot;ok&quot;] {
background-color: #00ff00;
}</string>
</property>
<property name="text">
<string>LOG</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
@ -812,7 +950,7 @@ background-color: yellow;
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="handleWidth"> <property name="handleWidth">
<number>4</number> <number>6</number>
</property> </property>
<widget class="QTableWidget" name="tableWidgetRXAll"> <widget class="QTableWidget" name="tableWidgetRXAll">
<property name="sizePolicy"> <property name="sizePolicy">
@ -912,7 +1050,7 @@ background-color: yellow;
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
<property name="handleWidth"> <property name="handleWidth">
<number>4</number> <number>6</number>
</property> </property>
<widget class="QTextEdit" name="textEditRX"> <widget class="QTextEdit" name="textEditRX">
<property name="sizePolicy"> <property name="sizePolicy">
@ -1289,7 +1427,7 @@ background:yellow;
<number>0</number> <number>0</number>
</property> </property>
<property name="rightMargin"> <property name="rightMargin">
<number>4</number> <number>6</number>
</property> </property>
<property name="bottomMargin"> <property name="bottomMargin">
<number>0</number> <number>0</number>
@ -1324,7 +1462,61 @@ background:yellow;
<property name="bottomMargin"> <property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
</layout> <item>
<widget class="QPushButton" name="readFreq">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>40</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="visible">
<bool>true</bool>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;If orange or red there has been a rig control failure, click to reset and read the dial frequency. S implies split mode.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="styleSheet">
<string notr="true">QPushButton {
font-family: helvetica;
font-size: 9pt;
font-weight: bold;
background-color: white;
color: black;
border-style: solid;
border-width:0px;
border-color: gray;
min-width:40px;
min-height:30px;
}
QPushButton[state=&quot;error&quot;] {
background-color: red;
}
QPushButton[state=&quot;warning&quot;] {
background-color: orange;
}
QPushButton[state=&quot;ok&quot;] {
background-color: #00ff00;
}</string>
</property>
<property name="text">
<string>CAT</string>
</property>
</widget> </widget>
</item> </item>
<item> <item>
@ -1332,7 +1524,7 @@ background:yellow;
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>1</horstretch> <horstretch>1</horstretch>
<verstretch>0</verstretch> <verstretch>1</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
@ -1365,6 +1557,9 @@ background:yellow;
</widget> </widget>
</item> </item>
</layout> </layout>
</widget>
</item>
</layout>
</item> </item>
<item> <item>
<widget class="QMdiArea" name="mdiArea"> <widget class="QMdiArea" name="mdiArea">
@ -4776,7 +4971,6 @@ list. The list can be maintained in Settings (F2).</string>
</customwidget> </customwidget>
</customwidgets> </customwidgets>
<tabstops> <tabstops>
<tabstop>logQSOButton</tabstop>
<tabstop>stopButton</tabstop> <tabstop>stopButton</tabstop>
<tabstop>EraseButton</tabstop> <tabstop>EraseButton</tabstop>
<tabstop>ClrAvgButton</tabstop> <tabstop>ClrAvgButton</tabstop>