diff --git a/src/blackgui/views/aircraftmodelstatisticsdialog.cpp b/src/blackgui/views/aircraftmodelstatisticsdialog.cpp index d07e2b794..f57851d43 100644 --- a/src/blackgui/views/aircraftmodelstatisticsdialog.cpp +++ b/src/blackgui/views/aircraftmodelstatisticsdialog.cpp @@ -16,8 +16,8 @@ #include #include #include +#include #include -#include using namespace QtCharts; using namespace BlackMisc::Aviation; @@ -37,10 +37,6 @@ namespace BlackGui connect(ui->pb_GenerateMatrix, &QPushButton::released, this, &CAircraftModelStatisticsDialog::displayHTMLMatrix); connect(ui->pb_ShowChart, &QPushButton::released, this, &CAircraftModelStatisticsDialog::showChart); - connect(ui->tb_ZoomIn, &QToolButton::released, this, &CAircraftModelStatisticsDialog::zoom); - connect(ui->tb_ZoomOut, &QToolButton::released, this, &CAircraftModelStatisticsDialog::zoom); - - this->initChart(); } CAircraftModelStatisticsDialog::~CAircraftModelStatisticsDialog() @@ -59,40 +55,6 @@ namespace BlackGui QDesktopServices::openUrl(QUrl::fromLocalFile(file)); } - void CAircraftModelStatisticsDialog::zoom() - { - const QObject *sender = QObject::sender(); - QChart *chart = ui->qv_Chart->chart(); - if (sender == ui->tb_ZoomIn) { chart->zoomIn(); return; } - if (sender == ui->tb_ZoomOut) { chart->zoomOut(); return; } - } - - void CAircraftModelStatisticsDialog::initChart() - { - QChart *chart = new QChart(); - chart->setAnimationOptions(QChart::SeriesAnimations); - chart->legend()->setVisible(true); - chart->legend()->setAlignment(Qt::AlignBottom); - chart->setTheme(QChart::ChartThemeBlueIcy); - ui->qv_Chart->setChart(chart); - ui->qv_Chart->setRenderHint(QPainter::Antialiasing); - - // const QRectF rect(0, 0, 2048, 1526); - // ui->qv_Chart->setSceneRect(rect); - // chart->setPlotArea(rect); - } - - void CAircraftModelStatisticsDialog::resetChart() - { - QChart *chart = ui->qv_Chart->chart(); - chart->removeAllSeries(); - const auto axes = chart->axes(); - for (auto axis : axes) - { - chart->removeAxis(axis); - } - } - void CAircraftModelStatisticsDialog::showChart() { if (ui->rb_Distributors->isChecked()) { this->chartDistributors(); return; } @@ -103,83 +65,41 @@ namespace BlackGui { const QMap distributors = m_models.countPerDistributor(); QStringList distributorsForAxis; - QBarSet *setDistributors = new QBarSet("Distributors"); - // using number as uique key as it can happen there a identical distributor keys - // and QChart requires uniques values - int n = 1; + QList series; for (const CDistributor &distributor : distributors.keys()) { const int c = distributors[distributor]; if (c < 1) { continue; } - distributorsForAxis << QString::number(n) % u": " % distributor.getDbKey() % u" " % QString::number(c); - *setDistributors << c; - n++; + distributorsForAxis << (distributor.getDbKey() % u" (" % QString::number(c) % u")"); + series << c; } - QHorizontalBarSeries *series = new QHorizontalBarSeries(this); - series->append(setDistributors); - this->horizontalBarChart(distributorsForAxis, series); + ui->qwt_Chart->setSymbols("distributors", "white"); + ui->qwt_Chart->setTitle("distributors"); + ui->qwt_Chart->setSamples1Bar(series, distributorsForAxis); } void CAircraftModelStatisticsDialog::chartAircraftIcao() { const QMap icaos = m_models.countPerAircraftIcao(); QStringList icaosForAxis; - QBarSet *setIcaos = new QBarSet("Aircraft ICAO"); - // using number as uique key as it can happen there a identical distributor keys - // and QChart requires uniques values - int n = 1; + QList series; + int unknown = 0; for (const CAircraftIcaoCode &icao : icaos.keys()) { const int c = icaos[icao]; if (c < 1) { continue; } - icaosForAxis << QString::number(n) % u": " % icao.getDesignatorDbKey() % u" " % QString::number(c); - *setIcaos << c; - n++; + if (!icao.hasKnownDesignator()) { unknown += c; continue; } + icaosForAxis << (icao.getDesignatorDbKey() % u" (" % QString::number(c) % u")"); + series << c; } - QBarSeries *series = new QBarSeries(this); - series->append(setIcaos); - this->verticalBarChart(icaosForAxis, series); + ui->qwt_Chart->setSymbols("aircraft", "white"); + ui->qwt_Chart->setTitle("aircraft ICAO"); + ui->qwt_Chart->setSamples1Bar(series, icaosForAxis); } - void CAircraftModelStatisticsDialog::horizontalBarChart(const QStringList &categories, QHorizontalBarSeries *series) - { - QChart *chart = ui->qv_Chart->chart(); - this->resetChart(); - chart->addSeries(series); - - // Y - QBarCategoryAxis *axisY = new QBarCategoryAxis(); - axisY->append(categories); - chart->addAxis(axisY, Qt::AlignLeft); - series->attachAxis(axisY); - - // X - QValueAxis *axisX = new QValueAxis(); - chart->addAxis(axisX, Qt::AlignBottom); - series->attachAxis(axisX); - axisX->applyNiceNumbers(); - } - - void CAircraftModelStatisticsDialog::verticalBarChart(const QStringList &categories, QBarSeries *series) - { - QChart *chart = ui->qv_Chart->chart(); - this->resetChart(); - chart->addSeries(series); - - // X - QBarCategoryAxis *axisX = new QBarCategoryAxis(); - axisX->append(categories); - chart->addAxis(axisX, Qt::AlignBottom); - series->attachAxis(axisX); - - // Y - QValueAxis *axisY = new QValueAxis(); - chart->addAxis(axisY, Qt::AlignLeft); - series->attachAxis(axisY); - } } // ns } // ns diff --git a/src/blackgui/views/aircraftmodelstatisticsdialog.h b/src/blackgui/views/aircraftmodelstatisticsdialog.h index cec079d89..8de2d211a 100644 --- a/src/blackgui/views/aircraftmodelstatisticsdialog.h +++ b/src/blackgui/views/aircraftmodelstatisticsdialog.h @@ -45,15 +45,6 @@ namespace BlackGui //! Display the HTML matrix void displayHTMLMatrix(); - //! Zoom in/out - void zoom(); - - //! Init chart - void initChart(); - - //! Reset chart - void resetChart(); - //! Chart void showChart(); @@ -63,12 +54,6 @@ namespace BlackGui //! Chart for aircraft ICAO void chartAircraftIcao(); - //! Display as horizontal bar chart - void horizontalBarChart(const QStringList &categories, QtCharts::QHorizontalBarSeries *series); - - //! Display as vertical bar chart - void verticalBarChart(const QStringList &categories, QtCharts::QBarSeries *series); - QScopedPointer ui; BlackMisc::Simulation::CAircraftModelList m_models; }; diff --git a/src/blackgui/views/aircraftmodelstatisticsdialog.ui b/src/blackgui/views/aircraftmodelstatisticsdialog.ui index 78ea6bb46..b680839cd 100644 --- a/src/blackgui/views/aircraftmodelstatisticsdialog.ui +++ b/src/blackgui/views/aircraftmodelstatisticsdialog.ui @@ -23,7 +23,7 @@ - 1 + 0 @@ -98,20 +98,6 @@ - - - - + - - - - - - - - - - - @@ -123,11 +109,11 @@ - + true - + 0 @@ -138,9 +124,12 @@ - - - QGraphicsView::NoDrag + + + QFrame::StyledPanel + + + QFrame::Raised @@ -187,9 +176,10 @@ - QChartView - QGraphicsView -
QtCharts
+ BlackGui::Graphs::CBarChart + QFrame +
blackgui/graphs/barchart.h
+ 1