diff --git a/models/CabrilloLog.cpp b/models/CabrilloLog.cpp index b0f467f33..77166859e 100644 --- a/models/CabrilloLog.cpp +++ b/models/CabrilloLog.cpp @@ -73,7 +73,9 @@ public: Configuration const * configuration_; QSqlQuery mutable dupe_query_; QSqlQuery mutable export_query_; + QSqlQuery mutable qso_count_query_; bool adding_row_; + int n_qso(); }; 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_->qso_count_changed(self_->n_qso()); }); SQL_error_check (*this, &QSqlTableModel::select); @@ -132,6 +135,10 @@ CabrilloLog::impl::impl (CabrilloLog * self, Configuration const * configuration " cabrillo_log_v2 " " ORDER BY " " \"when\""); + + SQL_error_check (qso_count_query_, &QSqlQuery::prepare, + "SELECT COUNT(*) FROM cabrillo_log_v2"); + } 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_->setEditStrategy (QSqlTableModel::OnFieldChange); - + Q_EMIT this->qso_count_changed(this->n_qso()); return ok; } @@ -260,7 +267,9 @@ bool CabrilloLog::dupe (Frequency frequency, QString const& call) const int CabrilloLog::n_qso() { - return m_->rowCount(); + SQL_error_check (m_->qso_count_query_, static_cast (&QSqlQuery::exec)); + m_->qso_count_query_.first(); + return m_->qso_count_query_.value(0).toInt(); } void CabrilloLog::reset () diff --git a/models/CabrilloLog.hpp b/models/CabrilloLog.hpp index 40c27380d..68b76fc2a 100644 --- a/models/CabrilloLog.hpp +++ b/models/CabrilloLog.hpp @@ -39,6 +39,7 @@ public: worked_set unique_DXCC_entities (AD1CCty const *) const; Q_SIGNAL void data_changed () const; + Q_SIGNAL void qso_count_changed (int) const; private: class impl; diff --git a/widgets/CabrilloLogWindow.cpp b/widgets/CabrilloLogWindow.cpp index 4a7611193..89aba0cb3 100644 --- a/widgets/CabrilloLogWindow.cpp +++ b/widgets/CabrilloLogWindow.cpp @@ -72,6 +72,7 @@ CabrilloLogWindow::CabrilloLogWindow (QSettings * settings, Configuration const 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 h_header->moveSection (7, 1); // band to first column + } CabrilloLogWindow::~CabrilloLogWindow () @@ -88,7 +89,6 @@ void CabrilloLogWindow::log_model_changed (int row) { m_->log_model_->select (); } - this->set_nQSO(m_->log_model_->rowCount()); } void CabrilloLogWindow::set_nQSO(int n) diff --git a/widgets/CabrilloLogWindow.hpp b/widgets/CabrilloLogWindow.hpp index 044986620..25780bc50 100644 --- a/widgets/CabrilloLogWindow.hpp +++ b/widgets/CabrilloLogWindow.hpp @@ -16,7 +16,7 @@ public: explicit CabrilloLogWindow (QSettings *, Configuration const *, QSqlTableModel * cabrillo_log_model , QWidget * parent = nullptr); ~CabrilloLogWindow (); - void set_nQSO(int n); + Q_SLOT void set_nQSO(int n); private: void log_model_changed (int row) override; diff --git a/widgets/CabrilloLogWindow.ui b/widgets/CabrilloLogWindow.ui index 1457d9564..5f31b0687 100644 --- a/widgets/CabrilloLogWindow.ui +++ b/widgets/CabrilloLogWindow.ui @@ -28,19 +28,15 @@ - + 100 16777215 - - * { - font-family: Courier; - font-size: 10pt; - font-weight: bold; - } + + true 0 QSOs diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 3c87a92bd..9b0dd9da1 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -2779,7 +2779,9 @@ void MainWindow::on_contest_log_action_triggered() m_contestLogWindow->showNormal (); m_contestLogWindow->raise (); m_contestLogWindow->activateWindow (); - //m_contestLogWindow->set_nQSO(m_logBook.contest_log()->n_qso()); + // 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()); } void MainWindow::on_actionColors_triggered()