Improvements to accessibiity

Where  tool  tips are  defined  in  rich  text, equivalent  pain  test
accessible descriptions have been added  so that screen readers do not
announce HTML tags.

Refactored date time  delegates to use a simpler default  editor via a
default  item editor  factory for  QDateTime values,  the editor  is a
standard QDateTimeEdit with a format that includes seconds and renders
assuming the time is UTC.

Modified the Cabrillo log and Fox log database table models to provide
QDateTime items  for the edit role  of date time fields,  and formated
date time strings including seconds and assumed as UTC for the display
role.
This commit is contained in:
Bill Somerville 2019-05-03 10:21:50 +01:00
parent 45a1841eec
commit b79cf0df99
10 changed files with 162 additions and 84 deletions

View File

@ -15,6 +15,7 @@
#include "models/IARURegions.hpp"
#include "models/DecodeHighlightingModel.hpp"
#include "widgets/FrequencyLineEdit.hpp"
#include "widgets/DateTimeEdit.hpp"
QItemEditorFactory * item_editor_factory ()
{
@ -34,6 +35,9 @@ void register_types ()
item_editor_factory ()->registerEditor (qMetaTypeId<Radio::Frequency> (), new QStandardItemEditorCreator<FrequencyLineEdit> ());
//auto frequency_delta_type_id = qRegisterMetaType<Radio::FrequencyDelta> ("FrequencyDelta");
item_editor_factory ()->registerEditor (qMetaTypeId<Radio::FrequencyDelta> (), new QStandardItemEditorCreator<FrequencyDeltaLineEdit> ());
auto factory = new QItemEditorFactory;
factory->registerEditor (qMetaTypeId<QDateTime> (), new QStandardItemEditorCreator<DateTimeEdit> ());
QItemEditorFactory::setDefaultFactory (factory);
// Frequency list model
qRegisterMetaTypeStreamOperators<FrequencyList_v2::Item> ("Item_v2");

View File

@ -1,67 +0,0 @@
#ifndef DATE_TIME_AS_SECS_SINCE_EPOCH_DELEGATE_HPP_
#define DATE_TIME_AS_SECS_SINCE_EPOCH_DELEGATE_HPP_
#include <memory>
#include <QStyledItemDelegate>
#include <QVariant>
#include <QLocale>
#include <QDateTime>
#include <QAbstractItemModel>
#include <QDateTimeEdit>
class DateTimeAsSecsSinceEpochDelegate final
: public QStyledItemDelegate
{
public:
DateTimeAsSecsSinceEpochDelegate (QObject * parent = nullptr)
: QStyledItemDelegate {parent}
{
}
static QVariant to_secs_since_epoch (QDateTime const& date_time)
{
return date_time.toMSecsSinceEpoch () / 1000ull;
}
static QDateTime to_date_time (QModelIndex const& index, int role = Qt::DisplayRole)
{
return to_date_time (index.model ()->data (index, role));
}
static QDateTime to_date_time (QVariant const& value)
{
return QDateTime::fromMSecsSinceEpoch (value.toULongLong () * 1000ull, Qt::UTC);
}
QString displayText (QVariant const& value, QLocale const& locale) const override
{
return locale.toString (to_date_time (value), locale.dateFormat (QLocale::ShortFormat) + " hh:mm:ss");
}
QWidget * createEditor (QWidget * parent, QStyleOptionViewItem const& /*option*/, QModelIndex const& /*index*/) const override
{
std::unique_ptr<QDateTimeEdit> editor {new QDateTimeEdit {parent}};
editor->setDisplayFormat (parent->locale ().dateFormat (QLocale::ShortFormat) + " hh:mm:ss");
editor->setTimeSpec (Qt::UTC); // needed because it ignores time
// spec of the QDateTime that it is
// set from
return editor.release ();
}
void setEditorData (QWidget * editor, QModelIndex const& index) const override
{
static_cast<QDateTimeEdit *> (editor)->setDateTime (to_date_time (index, Qt::EditRole));
}
void setModelData (QWidget * editor, QAbstractItemModel * model, QModelIndex const& index) const override
{
model->setData (index, to_secs_since_epoch (static_cast<QDateTimeEdit *> (editor)->dateTime ()));
}
void updateEditorGeometry (QWidget * editor, QStyleOptionViewItem const& option, QModelIndex const& /*index*/) const override
{
editor->setGeometry (option.rect);
}
};
#endif

View File

@ -8,5 +8,4 @@ HEADERS += \
item_delegates/ForeignKeyDelegate.hpp \
item_delegates/FrequencyItemDelegate.hpp \
item_delegates/CallsignDelegate.hpp \
item_delegates/MaidenheadLocatorDelegate.hpp \
item_delegates/DateTimeAsSecsSinceEpochDelegate.hpp
item_delegates/MaidenheadLocatorDelegate.hpp

View File

@ -21,6 +21,23 @@ class CabrilloLog::impl final
public:
impl (Configuration const *);
QVariant data (QModelIndex const& index, int role) const
{
auto value = QSqlTableModel::data (index, role);
if (index.column () == fieldIndex ("when")
&& (Qt::DisplayRole == role || Qt::EditRole == role))
{
auto t = QDateTime::fromMSecsSinceEpoch (value.toULongLong () * 1000ull, Qt::UTC);
if (Qt::DisplayRole == role)
{
QLocale locale;
return locale.toString (t, locale.dateFormat (QLocale::ShortFormat) + " hh:mm:ss");
}
value = t;
}
return value;
}
QString cabrillo_frequency_string (Radio::Frequency frequency) const;
Configuration const * configuration_;

View File

@ -21,6 +21,23 @@ class FoxLog::impl final
public:
impl (Configuration const * configuration);
QVariant data (QModelIndex const& index, int role) const
{
auto value = QSqlTableModel::data (index, role);
if (index.column () == fieldIndex ("when")
&& (Qt::DisplayRole == role || Qt::EditRole == role))
{
auto t = QDateTime::fromMSecsSinceEpoch (value.toULongLong () * 1000ull, Qt::UTC);
if (Qt::DisplayRole == role)
{
QLocale locale;
return locale.toString (t, locale.dateFormat (QLocale::ShortFormat) + " hh:mm:ss");
}
value = t;
}
return value;
}
Configuration const * configuration_;
QSqlQuery mutable dupe_query_;
QSqlQuery mutable export_query_;

View File

@ -6,7 +6,6 @@
#include "Configuration.hpp"
#include "models/Bands.hpp"
#include "item_delegates/ForeignKeyDelegate.hpp"
#include "item_delegates/DateTimeAsSecsSinceEpochDelegate.hpp"
#include "item_delegates/CallsignDelegate.hpp"
#include "pimpl_impl.hpp"
@ -64,7 +63,6 @@ CabrilloLogWindow::CabrilloLogWindow (QSettings * settings, Configuration const
m_->format_model_.setSourceModel (m_->log_model_);
m_->ui_.log_table_view->setModel (&m_->format_model_);
set_log_view (m_->ui_.log_table_view);
m_->ui_.log_table_view->setItemDelegateForColumn (2, new DateTimeAsSecsSinceEpochDelegate {this});
m_->ui_.log_table_view->setItemDelegateForColumn (3, new CallsignDelegate {this});
m_->ui_.log_table_view->setItemDelegateForColumn (6, new ForeignKeyDelegate {configuration->bands (), 0, this});
auto h_header = m_->ui_.log_table_view->horizontalHeader ();

View File

@ -19,6 +19,9 @@
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Right-click here for available actions.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Right-click here for available actions.</string>
</property>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>

View File

@ -13,7 +13,6 @@
#include "models/Bands.hpp"
#include "models/FoxLog.hpp"
#include "item_delegates/ForeignKeyDelegate.hpp"
#include "item_delegates/DateTimeAsSecsSinceEpochDelegate.hpp"
#include "item_delegates/CallsignDelegate.hpp"
#include "item_delegates/MaidenheadLocatorDelegate.hpp"
#include "pimpl_impl.hpp"
@ -42,7 +41,6 @@ FoxLogWindow::FoxLogWindow (QSettings * settings, Configuration const * configur
m_->ui_.setupUi (this);
m_->ui_.log_table_view->setModel (m_->log_->model ());
set_log_view (m_->ui_.log_table_view);
m_->ui_.log_table_view->setItemDelegateForColumn (1, new DateTimeAsSecsSinceEpochDelegate {this});
m_->ui_.log_table_view->setItemDelegateForColumn (2, new CallsignDelegate {this});
m_->ui_.log_table_view->setItemDelegateForColumn (3, new MaidenheadLocatorDelegate {this});
m_->ui_.log_table_view->setItemDelegateForColumn (6, new ForeignKeyDelegate {configuration->bands (), 0, this});

View File

@ -340,7 +340,7 @@
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enter this QSO in log&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>Enter this QSO in log</string>
</property>
<property name="text">
<string>Log &amp;QSO</string>
@ -372,7 +372,7 @@
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Toggle monitoring On/Off&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>Toggle monitoring On/Off</string>
</property>
<property name="styleSheet">
<string notr="true">QPushButton:checked {
@ -407,6 +407,9 @@
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Erase right window. Double-click to erase both windows.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Erase right window. Double-click to erase both windows.</string>
</property>
<property name="text">
<string>&amp;Erase</string>
</property>
@ -420,6 +423,9 @@
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Clear the accumulating message average.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Clear the accumulating message average.</string>
</property>
<property name="text">
<string>Clear Avg</string>
</property>
@ -436,6 +442,9 @@
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Decode most recent Rx period at QSO Frequency&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Decode most recent Rx period at QSO Frequency</string>
</property>
<property name="styleSheet">
<string notr="true">QPushButton:checked {
background-color: cyan;
@ -466,6 +475,9 @@
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Toggle Auto-Tx On/Off&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Toggle Auto-Tx On/Off</string>
</property>
<property name="styleSheet">
<string notr="true">QPushButton:checked {
background-color: red;
@ -506,6 +518,9 @@
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Toggle a pure Tx tone On/Off&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Toggle a pure Tx tone On/Off</string>
</property>
<property name="styleSheet">
<string notr="true">QPushButton:checked {
background-color: red;
@ -590,6 +605,15 @@ QLabel[oob=&quot;true&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;30dB recommended when only noise present&lt;br/&gt;Green when good&lt;br/&gt;Red when clipping may occur&lt;br/&gt;Yellow when too low&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleName">
<string>Rx Signal</string>
</property>
<property name="accessibleDescription">
<string>30dB recommended when only noise present
Green when good
Red when clipping may occur
Yellow when too low</string>
</property>
<property name="frameShape">
<enum>QFrame::Panel</enum>
</property>
@ -706,6 +730,9 @@ QLabel[oob=&quot;true&quot;] {
<property name="indent">
<number>2</number>
</property>
<property name="buddy">
<cstring>dxCallEntry</cstring>
</property>
</widget>
</item>
<item row="0" column="1">
@ -795,6 +822,9 @@ QLabel[oob=&quot;true&quot;] {
<property name="indent">
<number>2</number>
</property>
<property name="buddy">
<cstring>dxGridEntry</cstring>
</property>
</widget>
</item>
<item row="1" column="0">
@ -883,6 +913,9 @@ QLabel[oob=&quot;true&quot;] {
<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="accessibleDescription">
<string>If orange or red there has been a rig control failure, click to reset and read the dial frequency. S implies split mode.</string>
</property>
<property name="styleSheet">
<string notr="true">QPushButton {
font-family: helvetica;
@ -947,6 +980,12 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Select operating band or enter frequency in MHz or enter kHz increment followed by k.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleName">
<string>Frequncy entry</string>
</property>
<property name="accessibleDescription">
<string>Select operating band or enter frequency in MHz or enter kHz increment followed by k.</string>
</property>
<property name="editable">
<bool>true</bool>
</property>
@ -1038,6 +1077,9 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to keep Tx frequency fixed when double-clicking on decoded text.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check to keep Tx frequency fixed when double-clicking on decoded text.</string>
</property>
<property name="text">
<string>Hold Tx Freq</string>
</property>
@ -1155,6 +1197,9 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Synchronizing threshold. Lower numbers accept weaker sync signals.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Synchronizing threshold. Lower numbers accept weaker sync signals.</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
@ -1179,6 +1224,9 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to use short-format messages.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check to use short-format messages.</string>
</property>
<property name="text">
<string>Sh</string>
</property>
@ -1189,6 +1237,9 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to enable JT9 fast modes&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check to enable JT9 fast modes</string>
</property>
<property name="text">
<string>Fast</string>
</property>
@ -1199,6 +1250,9 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to enable automatic sequencing of Tx messages based on received messages.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check to enable automatic sequencing of Tx messages based on received messages.</string>
</property>
<property name="text">
<string>Auto Seq</string>
</property>
@ -1209,6 +1263,9 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to call the first decoded responder to my CQ.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check to call the first decoded responder to my CQ.</string>
</property>
<property name="text">
<string>Call 1st</string>
</property>
@ -1234,6 +1291,9 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to Tx in even-numbered minutes or sequences, starting at 0; uncheck for odd sequences.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check to Tx in even-numbered minutes or sequences, starting at 0; uncheck for odd sequences.</string>
</property>
<property name="text">
<string>Tx even/1st</string>
</property>
@ -1249,6 +1309,9 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Frequency to call CQ on in kHz above the current MHz&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Frequency to call CQ on in kHz above the current MHz</string>
</property>
<property name="prefix">
<string>Tx CQ </string>
</property>
@ -1271,6 +1334,10 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check this to call CQ on the &amp;quot;Tx CQ&amp;quot; frequency. Rx will be on the current frequency and the CQ message wiill include the current Rx frequency so callers know which frequency to reply on.&lt;/p&gt;&lt;p&gt;Not available to nonstandard callsign holders.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check this to call CQ on the &quot;Tx CQ&quot; frequency. Rx will be on the current frequency and the CQ message wiill include the current Rx frequency so callers know which frequency to reply on.
Not available to nonstandard callsign holders.</string>
</property>
<property name="text">
<string/>
</property>
@ -1290,6 +1357,9 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Submode determines tone spacing; A is narrowest.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Submode determines tone spacing; A is narrowest.</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
@ -1333,6 +1403,9 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to monitor Sh messages.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check to monitor Sh messages.</string>
</property>
<property name="text">
<string>SWL</string>
</property>
@ -1364,6 +1437,11 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check this to start recording calibration data.&lt;br/&gt;While measuring calibration correction is disabled.&lt;br/&gt;When not checked you can view the calibration results.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check this to start recording calibration data.
While measuring calibration correction is disabled.
When not checked you can view the calibration results.</string>
</property>
<property name="text">
<string>Measure</string>
</property>
@ -1376,6 +1454,9 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Signal report: Signal-to-noise ratio in 2500 Hz reference bandwidth (dB).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Signal report: Signal-to-noise ratio in 2500 Hz reference bandwidth (dB).</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
@ -1398,6 +1479,9 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Tx/Rx or Frequency calibration sequence length&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Tx/Rx or Frequency calibration sequence length</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
@ -1496,6 +1580,9 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Double-click on another caller to queue that call for your next QSO.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Double-click on another caller to queue that call for your next QSO.</string>
</property>
<property name="text">
<string>Next Call</string>
</property>
@ -1551,6 +1638,10 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Send this message in next Tx interval&lt;/p&gt;&lt;p&gt;Double click to toggle the use of the Tx1 message to start a QSO with a station (not allowed for type 1 compound call holders)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Send this message in next Tx interval
Double click to toggle the use of the Tx1 message to start a QSO with a station (not allowed for type 1 compound call holders)</string>
</property>
<property name="styleSheet">
<string notr="true">margin-left: 10%; margin-right: 0%</string>
</property>
@ -1586,6 +1677,10 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Switch to this Tx message NOW&lt;/p&gt;&lt;p&gt;Double click to toggle the use of the Tx1 message to start a QSO with a station (not allowed for type 1 compound call holders)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Switch to this Tx message NOW
Double click to toggle the use of the Tx1 message to start a QSO with a station (not allowed for type 1 compound call holders)</string>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
@ -1627,6 +1722,10 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Send this message in next Tx interval&lt;/p&gt;&lt;p&gt;Double-click to reset to the standard 73 message&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Send this message in next Tx interval
Double-click to reset to the standard 73 message</string>
</property>
<property name="styleSheet">
<string notr="true">margin-left: 10%; margin-right: 0%</string>
</property>
@ -1675,6 +1774,11 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Send this message in next Tx interval&lt;/p&gt;&lt;p&gt;Double-click to toggle between RRR and RR73 messages in Tx4 (not allowed for type 2 compound call holders)&lt;/p&gt;&lt;p&gt;RR73 messages should only be used when you are reasonably confident that no message repetitions will be required&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Send this message in next Tx interval
Double-click to toggle between RRR and RR73 messages in Tx4 (not allowed for type 2 compound call holders)
RR73 messages should only be used when you are reasonably confident that no message repetitions will be required</string>
</property>
<property name="styleSheet">
<string notr="true">margin-left: 10%; margin-right: 0%</string>
</property>
@ -1691,6 +1795,11 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Switch to this Tx message NOW&lt;/p&gt;&lt;p&gt;Double-click to toggle between RRR and RR73 messages in Tx4 (not allowed for type2 compound call holders)&lt;/p&gt;&lt;p&gt;RR73 messages should only be used when you are reasonably confident that no message repetitions will be required&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Switch to this Tx message NOW
Double-click to toggle between RRR and RR73 messages in Tx4 (not allowed for type2 compound call holders)
RR73 messages should only be used when you are reasonably confident that no message repetitions will be required</string>
</property>
<property name="styleSheet">
<string notr="true">padding-left: 15%; padding-right: 15%; padding-top: 3%; padding-bottom: 3%</string>
</property>
@ -1707,6 +1816,10 @@ QPushButton[state=&quot;ok&quot;] {
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Switch to this Tx message NOW&lt;/p&gt;&lt;p&gt;Double-click to reset to the standard 73 message&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Switch to this Tx message NOW
Double-click to reset to the standard 73 message</string>
</property>
<property name="styleSheet">
<string notr="true">padding-left: 15%; padding-right: 15%; padding-top: 3%; padding-bottom: 3%</string>
</property>
@ -2524,6 +2637,9 @@ list. The list can be maintained in Settings (F2).</string>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;6 digit locators cause 2 different mesages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>6 digit locators cause 2 different mesages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol.</string>
</property>
<property name="text">
<string>Prefer type 1 messages</string>
</property>
@ -3306,14 +3422,6 @@ list. The list can be maintained in Settings (F2).</string>
<string>Fox log</string>
</property>
</action>
<action name="reset_fox_log_action">
<property name="text">
<string>Reset Fox log ...</string>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Ths will erase the file FoxQSO.txt and delete the Fox log file which is used for dupe detection.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</action>
<action name="actionFT8_DXpedition_Mode_User_Guide">
<property name="text">
<string>FT8 DXpedition Mode User Guide</string>

View File

@ -19,7 +19,8 @@ HEADERS += \
widgets/echoplot.h widgets/echograph.h widgets/fastgraph.h \
widgets/fastplot.h widgets/MessageBox.hpp widgets/colorhighlighting.h \
widgets/ExportCabrillo.h widgets/AbstractLogWindow.hpp \
widgets/FoxLogWindow.hpp widgets/CabrilloLogWindow.hpp
widgets/FoxLogWindow.hpp widgets/CabrilloLogWindow.hpp \
widgets/DateTimeEdit.hpp
FORMS += \
widgets/mainwindow.ui widgets/about.ui \