From c2fa3695261a02691b48c4c11794b52cacbe11bc Mon Sep 17 00:00:00 2001 From: mc_doge_ Date: Fri, 7 Aug 2026 16:16:15 +0800 Subject: [PATCH] Statistics: Add QSO histogram by operator callsign --- ui/StatisticsWidget.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ui/StatisticsWidget.cpp b/ui/StatisticsWidget.cpp index 8282e448..add40e74 100644 --- a/ui/StatisticsWidget.cpp +++ b/ui/StatisticsWidget.cpp @@ -282,6 +282,7 @@ void StatisticsWidget::refreshGraph() switch ( ui->statTypeSecCombo->currentIndex() ) { case 0: // Distance + { QString distCoef = QString::number(Gridsquare::localeDistanceCoef(locale)); stmt = QString("WITH hist AS ( " " SELECT CAST((distance * %1)/500.00 AS INTEGER) * 500 as dist_floor, " @@ -297,6 +298,12 @@ void StatisticsWidget::refreshGraph() " ORDER BY 1").arg(distCoef); break; } + case 1: // Operator callsigns + stmt = "SELECT COALESCE(NULLIF(TRIM(operator), ''), '" + tr("Not specified") + "'), COUNT(1) " + "FROM contacts WHERE " + genericFilter.join(" AND ") + " " + "GROUP BY 1 ORDER BY 2 DESC, 1"; + break; + } qCDebug(runtime) << stmt; @@ -723,6 +730,7 @@ void StatisticsWidget::setSubTypesCombo(int mainTypeIdx) QString unit; Gridsquare::distance2localeUnitDistance(0, unit, locale); ui->statTypeSecCombo->addItem(tr("Distance") + QString(" [%1]").arg(unit)); + ui->statTypeSecCombo->addItem(tr("Operator Callsign")); } break;