mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-24 13:18:38 -05:00
Add option to highlight un-worked grid fields
This is a check box option in "Settings->Colors" rather than new highlighting types so un-worked field highlighting and un-worked grid square highlighting are mutually exclusive. The check box state can be changed at any time, no log rescanning is necessary, and subsequent decoded message highlighting will be according to the check box state.
This commit is contained in:
parent
518aa0c8eb
commit
e73f7e8334
@ -571,6 +571,7 @@ private:
|
||||
DecodeHighlightingModel decode_highlighing_model_;
|
||||
DecodeHighlightingModel next_decode_highlighing_model_;
|
||||
bool highlight_by_mode_;
|
||||
bool highlight_only_fields_;
|
||||
bool include_WAE_entities_;
|
||||
int LotW_days_since_upload_;
|
||||
|
||||
@ -753,6 +754,7 @@ bool Configuration::pwrBandTuneMemory () const {return m_->pwrBandTuneMemory_;}
|
||||
LotWUsers const& Configuration::lotw_users () const {return m_->lotw_users_;}
|
||||
DecodeHighlightingModel const& Configuration::decode_highlighting () const {return m_->decode_highlighing_model_;}
|
||||
bool Configuration::highlight_by_mode () const {return m_->highlight_by_mode_;}
|
||||
bool Configuration::highlight_only_fields () const {return m_->highlight_only_fields_;}
|
||||
bool Configuration::include_WAE_entities () const {return m_->include_WAE_entities_;}
|
||||
|
||||
void Configuration::set_calibration (CalibrationParams params)
|
||||
@ -959,6 +961,7 @@ Configuration::impl::impl (Configuration * self, QNetworkAccessManager * network
|
||||
, station_insert_action_ {tr ("&Insert ..."), nullptr}
|
||||
, station_dialog_ {new StationDialog {&next_stations_, &bands_, this}}
|
||||
, highlight_by_mode_ {false}
|
||||
, highlight_only_fields_ {false}
|
||||
, include_WAE_entities_ {false}
|
||||
, LotW_days_since_upload_ {0}
|
||||
, last_port_type_ {TransceiverFactory::Capabilities::none}
|
||||
@ -1325,6 +1328,7 @@ void Configuration::impl::initialize_models ()
|
||||
|
||||
next_decode_highlighing_model_.items (decode_highlighing_model_.items ());
|
||||
ui_->highlight_by_mode_check_box->setChecked (highlight_by_mode_);
|
||||
ui_->only_fields_check_box->setChecked (highlight_only_fields_);
|
||||
ui_->include_WAE_check_box->setChecked (include_WAE_entities_);
|
||||
ui_->LotW_days_since_upload_spin_box->setValue (LotW_days_since_upload_);
|
||||
|
||||
@ -1474,6 +1478,7 @@ void Configuration::impl::read_settings ()
|
||||
if (!highlight_items.size ()) highlight_items = DecodeHighlightingModel::default_items ();
|
||||
decode_highlighing_model_.items (highlight_items);
|
||||
highlight_by_mode_ = settings_->value("HighlightByMode", false).toBool ();
|
||||
highlight_only_fields_ = settings_->value("OnlyFieldsSought", false).toBool ();
|
||||
include_WAE_entities_ = settings_->value("IncludeWAEEntities", false).toBool ();
|
||||
LotW_days_since_upload_ = settings_->value ("LotWDaysSinceLastUpload", 365).toInt ();
|
||||
lotw_users_.set_age_constraint (LotW_days_since_upload_);
|
||||
@ -1588,6 +1593,7 @@ void Configuration::impl::write_settings ()
|
||||
settings_->setValue ("stations", QVariant::fromValue (stations_.station_list ()));
|
||||
settings_->setValue ("DecodeHighlighting", QVariant::fromValue (decode_highlighing_model_.items ()));
|
||||
settings_->setValue ("HighlightByMode", highlight_by_mode_);
|
||||
settings_->setValue ("OnlyFieldsSought", highlight_only_fields_);
|
||||
settings_->setValue ("IncludeWAEEntities", include_WAE_entities_);
|
||||
settings_->setValue ("LotWDaysSinceLastUpload", LotW_days_since_upload_);
|
||||
settings_->setValue ("toRTTY", log_as_RTTY_);
|
||||
@ -2130,6 +2136,7 @@ void Configuration::impl::accept ()
|
||||
Q_EMIT self_->decode_highlighting_changed (decode_highlighing_model_);
|
||||
}
|
||||
highlight_by_mode_ = ui_->highlight_by_mode_check_box->isChecked ();
|
||||
highlight_only_fields_ = ui_->only_fields_check_box->isChecked ();
|
||||
include_WAE_entities_ = ui_->include_WAE_check_box->isChecked ();
|
||||
LotW_days_since_upload_ = ui_->LotW_days_since_upload_spin_box->value ();
|
||||
lotw_users_.set_age_constraint (LotW_days_since_upload_);
|
||||
|
@ -177,6 +177,7 @@ public:
|
||||
LotWUsers const& lotw_users () const;
|
||||
DecodeHighlightingModel const& decode_highlighting () const;
|
||||
bool highlight_by_mode () const;
|
||||
bool highlight_only_fields () const;
|
||||
bool include_WAE_entities () const;
|
||||
|
||||
enum class SpecialOperatingActivity {NONE, NA_VHF, EU_VHF, FIELD_DAY, RTTY, FOX, HOUND};
|
||||
|
116
Configuration.ui
116
Configuration.ui
@ -2206,8 +2206,45 @@ Right click for insert and delete options.</string>
|
||||
<property name="title">
|
||||
<string>Decode Highlightling</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_8">
|
||||
<item>
|
||||
<layout class="QGridLayout" name="gridLayout_5">
|
||||
<item row="2" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_15">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_5">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="rescan_log_push_button">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Click to scan the wsjtx_log.adi ADIF file again for worked before information</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Rescan ADIF Log</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="reset_highlighting_to_defaults_push_button">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Push to reset all highlight items above to default values and priorities.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Reset Highlighting</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="DecodeHighlightingListView" name="highlighting_list_view">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
@ -2247,69 +2284,32 @@ Right click for insert and delete options.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="reset_highlighting_to_defaults_push_button">
|
||||
<item row="2" column="0">
|
||||
<widget class="QCheckBox" name="highlight_by_mode_check_box">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Push to reset all highlight items above to default values and priorities.</p></body></html></string>
|
||||
<string><html><head/><body><p>Check to indicate new DXCC entities, grid squares, and callsigns per mode.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Reset Highlighting</string>
|
||||
<string>Highlight by Mode</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_15">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="highlight_by_mode_check_box">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Check to indicate new DXCC entities, grid squares, and callsigns per mode.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Highlight by Mode</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_5">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="rescan_log_push_button">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Click to scan the wsjtx_log.adi ADIF file again for worked before information</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Rescan ADIF Log</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
<item row="4" column="0">
|
||||
<widget class="QCheckBox" name="include_WAE_check_box">
|
||||
<property name="text">
|
||||
<string>Include extra WAE entities</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QFormLayout" name="formLayout_20">
|
||||
<item row="0" column="0">
|
||||
<widget class="QCheckBox" name="include_WAE_check_box"/>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="includeExtraWAEEntitiesLabel">
|
||||
<property name="text">
|
||||
<string>Include extra WAE entities</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>include_WAE_check_box</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
<item row="3" column="0">
|
||||
<widget class="QCheckBox" name="only_fields_check_box">
|
||||
<property name="toolTip">
|
||||
<string>Check to for grid highlighting to only apply to unworked grid fields</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Only grid Fields sought</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include <boost/multi_index/hashed_index.hpp>
|
||||
#include <boost/multi_index/ordered_index.hpp>
|
||||
#include <boost/multi_index/key_extractors.hpp>
|
||||
#include <boost/range/iterator_range.hpp>
|
||||
#include <QtConcurrent/QtConcurrentRun>
|
||||
#include <QFuture>
|
||||
#include <QFutureWatcher>
|
||||
@ -362,7 +363,8 @@ class WorkedBefore::impl final
|
||||
{
|
||||
public:
|
||||
impl (Configuration const * configuration)
|
||||
: path_ {QDir {QStandardPaths::writableLocation (QStandardPaths::DataLocation)}.absoluteFilePath (logFileName)}
|
||||
: configuration_ {configuration}
|
||||
, path_ {QDir {QStandardPaths::writableLocation (QStandardPaths::DataLocation)}.absoluteFilePath (logFileName)}
|
||||
, prefixes_ {configuration}
|
||||
{
|
||||
}
|
||||
@ -373,6 +375,7 @@ public:
|
||||
loader_watcher_.setFuture (async_loader_);
|
||||
}
|
||||
|
||||
Configuration const * configuration_;
|
||||
QString path_;
|
||||
AD1CCty prefixes_;
|
||||
QFutureWatcher<worked_before_database_type> loader_watcher_;
|
||||
@ -491,34 +494,56 @@ bool WorkedBefore::country_worked (QString const& country, QString const& mode,
|
||||
|
||||
bool WorkedBefore::grid_worked (QString const& grid, QString const& mode, QString const& band) const
|
||||
{
|
||||
if (mode.size ())
|
||||
auto gridsquare = grid.left (4).toUpper ();
|
||||
if (m_->configuration_->highlight_only_fields ())
|
||||
{
|
||||
if (band.size ())
|
||||
// can't use a direct set find operation or a set operation with
|
||||
// a (CompatibleKey, CompatibleCompare) concept so we must
|
||||
// partially scan the index
|
||||
auto range = boost::make_iterator_range (
|
||||
m_->worked_.get<grid_mode_band> ().lower_bound (gridsquare.left (2))
|
||||
, m_->worked_.get<grid_mode_band> ().upper_bound (gridsquare.left (2) + "99"));
|
||||
for (worked_entry const& worked : range)
|
||||
{
|
||||
return m_->worked_.get<grid_mode_band> ().end ()
|
||||
!= m_->worked_.get<grid_mode_band> ().find (std::make_tuple (grid.left (4).toUpper (), mode.toUpper (), band.toUpper ()));
|
||||
}
|
||||
else
|
||||
{
|
||||
// partial key lookup
|
||||
return m_->worked_.get<grid_mode_band> ().end ()
|
||||
!= m_->worked_.get<grid_mode_band> ().find (std::make_tuple (grid.left (4).toUpper (), mode.toUpper ()));
|
||||
if ((!mode.size () || mode.toUpper () == worked.mode_)
|
||||
&& (!band.size () || worked.band_ == band.toUpper ()))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (band.size ())
|
||||
if (mode.size ())
|
||||
{
|
||||
return m_->worked_.get<grid_band> ().end ()
|
||||
!= m_->worked_.get<grid_band> ().find (std::make_tuple (grid.left (4).toUpper (), band.toUpper ()));
|
||||
if (band.size ())
|
||||
{
|
||||
return m_->worked_.get<grid_mode_band> ().end ()
|
||||
!= m_->worked_.get<grid_mode_band> ().find (std::make_tuple (gridsquare, mode.toUpper (), band.toUpper ()));
|
||||
}
|
||||
else
|
||||
{
|
||||
// partial key lookup
|
||||
return m_->worked_.get<grid_mode_band> ().end ()
|
||||
!= m_->worked_.get<grid_mode_band> ().find (std::make_tuple (gridsquare, mode.toUpper ()));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// partial key lookup
|
||||
return m_->worked_.get<grid_band> ().end ()
|
||||
!= m_->worked_.get<grid_band> ().find (grid.left (4).toUpper ());
|
||||
if (band.size ())
|
||||
{
|
||||
return m_->worked_.get<grid_band> ().end ()
|
||||
!= m_->worked_.get<grid_band> ().find (std::make_tuple (gridsquare, band.toUpper ()));
|
||||
}
|
||||
else
|
||||
{
|
||||
// partial key lookup
|
||||
return m_->worked_.get<grid_band> ().end ()
|
||||
!= m_->worked_.get<grid_band> ().find (gridsquare);
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool WorkedBefore::call_worked (QString const& call, QString const& mode, QString const& band) const
|
||||
|
Loading…
Reference in New Issue
Block a user