mirror of https://github.com/saitohirga/WSJT-X.git
Merge branch 'contest-log-window'
This commit is contained in:
commit
215208636c
|
@ -73,7 +73,9 @@ public:
|
||||||
Configuration const * configuration_;
|
Configuration const * configuration_;
|
||||||
QSqlQuery mutable dupe_query_;
|
QSqlQuery mutable dupe_query_;
|
||||||
QSqlQuery mutable export_query_;
|
QSqlQuery mutable export_query_;
|
||||||
|
QSqlQuery mutable qso_count_query_;
|
||||||
bool adding_row_;
|
bool adding_row_;
|
||||||
|
int n_qso();
|
||||||
};
|
};
|
||||||
|
|
||||||
CabrilloLog::impl::impl (CabrilloLog * self, Configuration const * configuration)
|
CabrilloLog::impl::impl (CabrilloLog * self, Configuration const * configuration)
|
||||||
|
@ -109,6 +111,7 @@ CabrilloLog::impl::impl (CabrilloLog * self, Configuration const * configuration
|
||||||
{
|
{
|
||||||
Q_EMIT self_->data_changed ();
|
Q_EMIT self_->data_changed ();
|
||||||
}
|
}
|
||||||
|
Q_EMIT self_->qso_count_changed(self_->n_qso());
|
||||||
});
|
});
|
||||||
|
|
||||||
SQL_error_check (*this, &QSqlTableModel::select);
|
SQL_error_check (*this, &QSqlTableModel::select);
|
||||||
|
@ -132,6 +135,10 @@ CabrilloLog::impl::impl (CabrilloLog * self, Configuration const * configuration
|
||||||
" cabrillo_log_v2 "
|
" cabrillo_log_v2 "
|
||||||
" ORDER BY "
|
" ORDER BY "
|
||||||
" \"when\"");
|
" \"when\"");
|
||||||
|
|
||||||
|
SQL_error_check (qso_count_query_, &QSqlQuery::prepare,
|
||||||
|
"SELECT COUNT(*) FROM cabrillo_log_v2");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CabrilloLog::impl::create_table ()
|
void CabrilloLog::impl::create_table ()
|
||||||
|
@ -237,7 +244,7 @@ bool CabrilloLog::add_QSO (Frequency frequency, QString const& mode, QDateTime c
|
||||||
|
|
||||||
m_->adding_row_ = false;
|
m_->adding_row_ = false;
|
||||||
m_->setEditStrategy (QSqlTableModel::OnFieldChange);
|
m_->setEditStrategy (QSqlTableModel::OnFieldChange);
|
||||||
|
Q_EMIT this->qso_count_changed(this->n_qso());
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -260,7 +267,9 @@ bool CabrilloLog::dupe (Frequency frequency, QString const& call) const
|
||||||
|
|
||||||
int CabrilloLog::n_qso()
|
int CabrilloLog::n_qso()
|
||||||
{
|
{
|
||||||
return m_->rowCount();
|
SQL_error_check (m_->qso_count_query_, static_cast<bool (QSqlQuery::*) ()> (&QSqlQuery::exec));
|
||||||
|
m_->qso_count_query_.first();
|
||||||
|
return m_->qso_count_query_.value(0).toInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CabrilloLog::reset ()
|
void CabrilloLog::reset ()
|
||||||
|
|
|
@ -39,6 +39,7 @@ public:
|
||||||
worked_set unique_DXCC_entities (AD1CCty const *) const;
|
worked_set unique_DXCC_entities (AD1CCty const *) const;
|
||||||
|
|
||||||
Q_SIGNAL void data_changed () const;
|
Q_SIGNAL void data_changed () const;
|
||||||
|
Q_SIGNAL void qso_count_changed (int) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
class impl;
|
class impl;
|
||||||
|
|
|
@ -72,7 +72,7 @@ void AbstractLogWindow::impl::delete_QSOs ()
|
||||||
{
|
{
|
||||||
// We must work with source model indexes because we don't want row
|
// We must work with source model indexes because we don't want row
|
||||||
// removes to invalidate model indexes we haven't yet processed. We
|
// removes to invalidate model indexes we haven't yet processed. We
|
||||||
// achieve that by processing them in decending row order.
|
// achieve that by processing them in descending row order.
|
||||||
for (auto& row_index : row_indexes)
|
for (auto& row_index : row_indexes)
|
||||||
{
|
{
|
||||||
row_index = model_.mapToSource (row_index);
|
row_index = model_.mapToSource (row_index);
|
||||||
|
@ -80,11 +80,12 @@ void AbstractLogWindow::impl::delete_QSOs ()
|
||||||
|
|
||||||
// reverse sort by row
|
// reverse sort by row
|
||||||
std::sort (row_indexes.begin (), row_indexes.end (), row_is_higher);
|
std::sort (row_indexes.begin (), row_indexes.end (), row_is_higher);
|
||||||
|
|
||||||
for (auto index : row_indexes)
|
for (auto index : row_indexes)
|
||||||
{
|
{
|
||||||
auto row = model_.mapFromSource (index).row ();
|
auto row = model_.mapFromSource(index).row();
|
||||||
model_.removeRow (row);
|
model_.removeRow(row);
|
||||||
self_->log_model_changed ();
|
self_->log_model_changed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,6 +72,7 @@ CabrilloLogWindow::CabrilloLogWindow (QSettings * settings, Configuration const
|
||||||
auto h_header = m_->ui_.log_table_view->horizontalHeader ();
|
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
|
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
|
h_header->moveSection (7, 1); // band to first column
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CabrilloLogWindow::~CabrilloLogWindow ()
|
CabrilloLogWindow::~CabrilloLogWindow ()
|
||||||
|
|
|
@ -16,7 +16,7 @@ public:
|
||||||
explicit CabrilloLogWindow (QSettings *, Configuration const *, QSqlTableModel * cabrillo_log_model
|
explicit CabrilloLogWindow (QSettings *, Configuration const *, QSqlTableModel * cabrillo_log_model
|
||||||
, QWidget * parent = nullptr);
|
, QWidget * parent = nullptr);
|
||||||
~CabrilloLogWindow ();
|
~CabrilloLogWindow ();
|
||||||
void set_nQSO(int n);
|
Q_SLOT void set_nQSO(int n);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void log_model_changed (int row) override;
|
void log_model_changed (int row) override;
|
||||||
|
|
|
@ -35,6 +35,9 @@
|
||||||
<height>16777215</height>
|
<height>16777215</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>0 QSOs</string>
|
<string>0 QSOs</string>
|
||||||
</property>
|
</property>
|
||||||
|
|
|
@ -63,6 +63,9 @@
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="2">
|
<item row="0" column="2">
|
||||||
|
@ -127,6 +130,9 @@
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="3">
|
<item row="0" column="3">
|
||||||
|
@ -160,6 +166,9 @@
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
|
|
@ -2779,6 +2779,8 @@ void MainWindow::on_contest_log_action_triggered()
|
||||||
m_contestLogWindow->showNormal ();
|
m_contestLogWindow->showNormal ();
|
||||||
m_contestLogWindow->raise ();
|
m_contestLogWindow->raise ();
|
||||||
m_contestLogWindow->activateWindow ();
|
m_contestLogWindow->activateWindow ();
|
||||||
|
// connect signal from m_logBook.contest_log to m_contestLogWindow
|
||||||
|
connect(m_logBook.contest_log(), &CabrilloLog::qso_count_changed, m_contestLogWindow.data (), &CabrilloLogWindow::set_nQSO);
|
||||||
m_contestLogWindow->set_nQSO(m_logBook.contest_log()->n_qso());
|
m_contestLogWindow->set_nQSO(m_logBook.contest_log()->n_qso());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4678,7 +4680,7 @@ void MainWindow::guiUpdate()
|
||||||
//Once per second (onesec)
|
//Once per second (onesec)
|
||||||
if(nsec != m_sec0) {
|
if(nsec != m_sec0) {
|
||||||
// qDebug() << "AAA" << nsec;
|
// qDebug() << "AAA" << nsec;
|
||||||
if(m_contestLogWindow) m_contestLogWindow->set_nQSO(m_logBook.contest_log()->n_qso());
|
//if(m_contestLogWindow) m_contestLogWindow->set_nQSO(m_logBook.contest_log()->n_qso());
|
||||||
|
|
||||||
if(m_mode=="FST4") chk_FST4_freq_range();
|
if(m_mode=="FST4") chk_FST4_freq_range();
|
||||||
m_currentBand=m_config.bands()->find(m_freqNominal);
|
m_currentBand=m_config.bands()->find(m_freqNominal);
|
||||||
|
@ -6377,9 +6379,7 @@ void MainWindow::acceptQSO (QDateTime const& QSO_date_off, QString const& call,
|
||||||
|
|
||||||
m_xSent.clear ();
|
m_xSent.clear ();
|
||||||
m_xRcvd.clear ();
|
m_xRcvd.clear ();
|
||||||
if(m_contestLogWindow) {
|
|
||||||
m_contestLogWindow->set_nQSO(m_logBook.contest_log()->n_qso());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::updateRate()
|
void MainWindow::updateRate()
|
||||||
|
|
Loading…
Reference in New Issue