mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-14 00:25:35 +08:00
Ref T509, Qwt adjustments in model statistics
This commit is contained in:
committed by
Mat Sutcliffe
parent
dba043c23f
commit
935cffe250
@@ -16,8 +16,8 @@
|
|||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QDesktopServices>
|
#include <QDesktopServices>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
|
#include <QStringBuilder>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <QtCharts>
|
|
||||||
|
|
||||||
using namespace QtCharts;
|
using namespace QtCharts;
|
||||||
using namespace BlackMisc::Aviation;
|
using namespace BlackMisc::Aviation;
|
||||||
@@ -37,10 +37,6 @@ namespace BlackGui
|
|||||||
|
|
||||||
connect(ui->pb_GenerateMatrix, &QPushButton::released, this, &CAircraftModelStatisticsDialog::displayHTMLMatrix);
|
connect(ui->pb_GenerateMatrix, &QPushButton::released, this, &CAircraftModelStatisticsDialog::displayHTMLMatrix);
|
||||||
connect(ui->pb_ShowChart, &QPushButton::released, this, &CAircraftModelStatisticsDialog::showChart);
|
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()
|
CAircraftModelStatisticsDialog::~CAircraftModelStatisticsDialog()
|
||||||
@@ -59,40 +55,6 @@ namespace BlackGui
|
|||||||
QDesktopServices::openUrl(QUrl::fromLocalFile(file));
|
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()
|
void CAircraftModelStatisticsDialog::showChart()
|
||||||
{
|
{
|
||||||
if (ui->rb_Distributors->isChecked()) { this->chartDistributors(); return; }
|
if (ui->rb_Distributors->isChecked()) { this->chartDistributors(); return; }
|
||||||
@@ -103,83 +65,41 @@ namespace BlackGui
|
|||||||
{
|
{
|
||||||
const QMap<CDistributor, int> distributors = m_models.countPerDistributor();
|
const QMap<CDistributor, int> distributors = m_models.countPerDistributor();
|
||||||
QStringList distributorsForAxis;
|
QStringList distributorsForAxis;
|
||||||
QBarSet *setDistributors = new QBarSet("Distributors");
|
|
||||||
|
|
||||||
// using number as uique key as it can happen there a identical distributor keys
|
QList<double> series;
|
||||||
// and QChart requires uniques values
|
|
||||||
int n = 1;
|
|
||||||
for (const CDistributor &distributor : distributors.keys())
|
for (const CDistributor &distributor : distributors.keys())
|
||||||
{
|
{
|
||||||
const int c = distributors[distributor];
|
const int c = distributors[distributor];
|
||||||
if (c < 1) { continue; }
|
if (c < 1) { continue; }
|
||||||
distributorsForAxis << QString::number(n) % u": " % distributor.getDbKey() % u" " % QString::number(c);
|
distributorsForAxis << (distributor.getDbKey() % u" (" % QString::number(c) % u")");
|
||||||
*setDistributors << c;
|
series << c;
|
||||||
n++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QHorizontalBarSeries *series = new QHorizontalBarSeries(this);
|
ui->qwt_Chart->setSymbols("distributors", "white");
|
||||||
series->append(setDistributors);
|
ui->qwt_Chart->setTitle("distributors");
|
||||||
this->horizontalBarChart(distributorsForAxis, series);
|
ui->qwt_Chart->setSamples1Bar(series, distributorsForAxis);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CAircraftModelStatisticsDialog::chartAircraftIcao()
|
void CAircraftModelStatisticsDialog::chartAircraftIcao()
|
||||||
{
|
{
|
||||||
const QMap<CAircraftIcaoCode, int> icaos = m_models.countPerAircraftIcao();
|
const QMap<CAircraftIcaoCode, int> icaos = m_models.countPerAircraftIcao();
|
||||||
QStringList icaosForAxis;
|
QStringList icaosForAxis;
|
||||||
QBarSet *setIcaos = new QBarSet("Aircraft ICAO");
|
|
||||||
|
|
||||||
// using number as uique key as it can happen there a identical distributor keys
|
QList<double> series;
|
||||||
// and QChart requires uniques values
|
int unknown = 0;
|
||||||
int n = 1;
|
|
||||||
for (const CAircraftIcaoCode &icao : icaos.keys())
|
for (const CAircraftIcaoCode &icao : icaos.keys())
|
||||||
{
|
{
|
||||||
const int c = icaos[icao];
|
const int c = icaos[icao];
|
||||||
if (c < 1) { continue; }
|
if (c < 1) { continue; }
|
||||||
icaosForAxis << QString::number(n) % u": " % icao.getDesignatorDbKey() % u" " % QString::number(c);
|
if (!icao.hasKnownDesignator()) { unknown += c; continue; }
|
||||||
*setIcaos << c;
|
icaosForAxis << (icao.getDesignatorDbKey() % u" (" % QString::number(c) % u")");
|
||||||
n++;
|
series << c;
|
||||||
}
|
}
|
||||||
|
|
||||||
QBarSeries *series = new QBarSeries(this);
|
ui->qwt_Chart->setSymbols("aircraft", "white");
|
||||||
series->append(setIcaos);
|
ui->qwt_Chart->setTitle("aircraft ICAO");
|
||||||
this->verticalBarChart(icaosForAxis, series);
|
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
|
||||||
} // ns
|
} // ns
|
||||||
|
|||||||
@@ -45,15 +45,6 @@ namespace BlackGui
|
|||||||
//! Display the HTML matrix
|
//! Display the HTML matrix
|
||||||
void displayHTMLMatrix();
|
void displayHTMLMatrix();
|
||||||
|
|
||||||
//! Zoom in/out
|
|
||||||
void zoom();
|
|
||||||
|
|
||||||
//! Init chart
|
|
||||||
void initChart();
|
|
||||||
|
|
||||||
//! Reset chart
|
|
||||||
void resetChart();
|
|
||||||
|
|
||||||
//! Chart
|
//! Chart
|
||||||
void showChart();
|
void showChart();
|
||||||
|
|
||||||
@@ -63,12 +54,6 @@ namespace BlackGui
|
|||||||
//! Chart for aircraft ICAO
|
//! Chart for aircraft ICAO
|
||||||
void chartAircraftIcao();
|
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::CAircraftModelStatisticsDialog> ui;
|
QScopedPointer<Ui::CAircraftModelStatisticsDialog> ui;
|
||||||
BlackMisc::Simulation::CAircraftModelList m_models;
|
BlackMisc::Simulation::CAircraftModelList m_models;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QTabWidget" name="tw_ModelStatistics">
|
<widget class="QTabWidget" name="tw_ModelStatistics">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>1</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="tb_GeneralStatistics">
|
<widget class="QWidget" name="tb_GeneralStatistics">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
@@ -98,20 +98,6 @@
|
|||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="QToolButton" name="tb_ZoomIn">
|
|
||||||
<property name="text">
|
|
||||||
<string>+</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QToolButton" name="tb_ZoomOut">
|
|
||||||
<property name="text">
|
|
||||||
<string>-</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item alignment="Qt::AlignRight">
|
<item alignment="Qt::AlignRight">
|
||||||
<widget class="QPushButton" name="pb_ShowChart">
|
<widget class="QPushButton" name="pb_ShowChart">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -123,11 +109,11 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QScrollArea" name="scrollArea">
|
<widget class="QScrollArea" name="sa_Chart">
|
||||||
<property name="widgetResizable">
|
<property name="widgetResizable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="scrollAreaWidgetContents">
|
<widget class="QWidget" name="sa_ChartContent">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
@@ -138,9 +124,12 @@
|
|||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QChartView" name="qv_Chart">
|
<widget class="BlackGui::Graphs::CBarChart" name="qwt_Chart">
|
||||||
<property name="dragMode">
|
<property name="frameShape">
|
||||||
<enum>QGraphicsView::NoDrag</enum>
|
<enum>QFrame::StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Raised</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -187,9 +176,10 @@
|
|||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>QChartView</class>
|
<class>BlackGui::Graphs::CBarChart</class>
|
||||||
<extends>QGraphicsView</extends>
|
<extends>QFrame</extends>
|
||||||
<header>QtCharts</header>
|
<header>blackgui/graphs/barchart.h</header>
|
||||||
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<resources/>
|
<resources/>
|
||||||
|
|||||||
Reference in New Issue
Block a user