From 64be6709ebc208e5d56f71a1132a1cbc9c159013 Mon Sep 17 00:00:00 2001 From: Ladislav Foldyna Date: Thu, 7 Apr 2022 12:10:30 +0200 Subject: [PATCH] Fixed #25 - Statistic's Combox are not refreshed --- ui/StatisticsWidget.cpp | 76 ++++++++++++++++++++++++++++++++++++++--- ui/StatisticsWidget.h | 7 ++++ 2 files changed, 78 insertions(+), 5 deletions(-) diff --git a/ui/StatisticsWidget.cpp b/ui/StatisticsWidget.cpp index 5172ae70..1b63ccba 100644 --- a/ui/StatisticsWidget.cpp +++ b/ui/StatisticsWidget.cpp @@ -99,6 +99,12 @@ void StatisticsWidget::refreshGraph() genericFilter << " 1 = 1 "; //just initialization - use only in case of empty Options + refreshCallCombo(); + refreshRigCombo(); + refreshAntCombo(); + refreshBandCombo(); + refreshGridCombo(); + if ( ui->myCallCombo->currentIndex() != 0 ) { genericFilter << " (station_callsign = '" + ui->myCallCombo->currentText() + "') "; @@ -465,11 +471,20 @@ StatisticsWidget::StatisticsWidget(QWidget *parent) : ui->setupUi(this); - ui->myCallCombo->setModel(new SqlListModel("SELECT DISTINCT UPPER(station_callsign) FROM contacts ORDER BY station_callsign", tr("All"), this)); - ui->myGridCombo->setModel(new SqlListModel("SELECT DISTINCT UPPER(my_gridsquare) FROM contacts ORDER BY my_gridsquare", tr("All"), this)); - ui->myRigCombo->setModel(new SqlListModel("SELECT DISTINCT my_rig FROM contacts ORDER BY my_gridsquare", tr("All"), this)); - ui->myAntennaCombo->setModel(new SqlListModel("SELECT DISTINCT my_antenna FROM contacts ORDER BY my_gridsquare", tr("All"), this)); - ui->bandCombo->setModel(new SqlListModel("SELECT name FROM bands ORDER BY start_freq", tr("All"), this)); + ui->myCallCombo->setModel(new QStringListModel(this)); + refreshCallCombo(); + + ui->myGridCombo->setModel(new QStringListModel(this)); + refreshGridCombo(); + + ui->myRigCombo->setModel(new QStringListModel(this)); + refreshRigCombo(); + + ui->myAntennaCombo->setModel(new QStringListModel(this)); + refreshAntCombo(); + + ui->bandCombo->setModel(new QStringListModel(this)); + refreshBandCombo(); ui->graphView->setRenderHint(QPainter::Antialiasing); ui->graphView->setChart(new QChart()); @@ -686,3 +701,54 @@ void StatisticsWidget::drawFilledGridsOnMap(QSqlQuery &query) main_page->runJavaScript(javaScript); } } + +void StatisticsWidget::refreshCallCombo() +{ + FCT_IDENTIFICATION; + + refreshCombo(ui->myCallCombo, "SELECT DISTINCT UPPER(station_callsign) FROM contacts ORDER BY station_callsign"); +} + +void StatisticsWidget::refreshRigCombo() +{ + FCT_IDENTIFICATION; + + refreshCombo(ui->myRigCombo, "SELECT DISTINCT my_rig FROM contacts ORDER BY my_rig"); +} + +void StatisticsWidget::refreshAntCombo() +{ + FCT_IDENTIFICATION; + + refreshCombo(ui->myAntennaCombo, "SELECT DISTINCT my_antenna FROM contacts ORDER BY my_antenna"); +} + +void StatisticsWidget::refreshBandCombo() +{ + FCT_IDENTIFICATION; + + refreshCombo(ui->bandCombo, "SELECT DISTINCT band FROM contacts c, bands b WHERE c.band = b.name ORDER BY b.start_freq;"); +} + +void StatisticsWidget::refreshGridCombo() +{ + FCT_IDENTIFICATION; + + refreshCombo(ui->myGridCombo, "SELECT DISTINCT UPPER(my_gridsquare) FROM contacts ORDER BY my_gridsquare"); +} + +void StatisticsWidget::refreshCombo(QComboBox * combo, QString sqlQeury) +{ + FCT_IDENTIFICATION; + + QString currSelection = combo->currentText(); + + combo->blockSignals(true); + combo->clear(); + + combo->setModel(new SqlListModel(sqlQeury,tr("All"), this)); + + combo->setCurrentText(currSelection); + combo->blockSignals(false); + +} diff --git a/ui/StatisticsWidget.h b/ui/StatisticsWidget.h index 3d3483e2..e39f0482 100644 --- a/ui/StatisticsWidget.h +++ b/ui/StatisticsWidget.h @@ -5,6 +5,7 @@ #include #include #include +#include namespace Ui { class StatisticsWidget; @@ -34,6 +35,12 @@ public slots: void drawMyLocationsOnMap(QSqlQuery &); void drawPointsOnMap(QSqlQuery&); void drawFilledGridsOnMap(QSqlQuery&); + void refreshCallCombo(); + void refreshRigCombo(); + void refreshAntCombo(); + void refreshBandCombo(); + void refreshGridCombo(); + void refreshCombo(QComboBox * combo, QString sqlQeury); private: Ui::StatisticsWidget *ui;