Merge branch 'contest-log-window'

This commit is contained in:
Joe Taylor 2022-07-16 09:46:15 -04:00
commit 215208636c
8 changed files with 35 additions and 11 deletions

View File

@ -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 ()

View File

@ -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;

View File

@ -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();
} }
} }
} }

View File

@ -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 ()

View File

@ -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;

View File

@ -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>

View File

@ -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>

View File

@ -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()