1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
/***************************************************************************
statsqsospermodebarchatwidget.cpp - description
-------------------
begin : nov 2018
copyright : (C) 2018 by Jaime Robles
email : jaime@robles.es
***************************************************************************/
/*****************************************************************************
* This file is part of KLog. *
* *
* KLog is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* KLog is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with KLog. If not, see <https://www.gnu.org/licenses/>. *
* *
*****************************************************************************/
#include "statsqsospermodebarchartwidget.h"
StatsQSOsPerModeBarChartWidget::StatsQSOsPerModeBarChartWidget(DataProxy_SQLite *dp, QWidget *parent)
{
Q_UNUSED(parent);
#ifdef QT_DEBUG
//qDebug() << "StatsQSOsPerModeBarChartWidget::StatsQSOsPerModeBarChartWidget";
#else
#endif
dataProxy = dp;
//chart = new QChart();
chartView = new QChartView();
createUI();
//prepareChart();
}
StatsQSOsPerModeBarChartWidget::~StatsQSOsPerModeBarChartWidget()
{
//delete(dataProxy);
}
void StatsQSOsPerModeBarChartWidget::createUI()
{
chartView->setRenderHint(QPainter::Antialiasing);
QVBoxLayout *graphLayout = new QVBoxLayout;
graphLayout->addWidget(chartView);
setLayout(graphLayout);
}
void StatsQSOsPerModeBarChartWidget::prepareChart(const int _log)
{
QChart *chart = new QChart();
chart->setAnimationOptions(QChart::SeriesAnimations);
chart->legend()->setVisible(true);
chart->legend()->setAlignment(Qt::AlignBottom);
QString categoriesTitle;
QString categoriesElem;
QStringList categories;
QBarSeries *series = new QBarSeries();
QBarCategoryAxis *axis = new QBarCategoryAxis();
QString aux;
//int numberPerX = 0;
chart->removeAllSeries();
//categoriesTitle = QString();
//categoriesElem = QString();
categories.clear();
axis->clear();
series->clear();
QBarSet *set0 = new QBarSet(tr("QSOs per mode"));
//*set0->remove(0, set0->count()-1);
qreal sum = 0;
QProgressDialog progress(tr("Reading data ... "), tr("Abort reading"), 0, categories.count(), this);
progress.setWindowModality(Qt::WindowModal);
//qDebug() << "StatsQSOsPerModeBarChartWidget::prepareChart: SelectedGrapth-1: MODES ";
categories.append(dataProxy->getModesInLog(_log));
categoriesElem = tr("Modes");
categoriesTitle = tr("QSOs per mode distribution");
aux.clear();
for (int i = 0; i < categories.count();i++ )
{
*set0 << dataProxy->getQSOsInMode((categories.at(i)), _log);
//qDebug() << categories.at(i) + "-" + QString::number(numberPerX);
//*set0 << numberPerX;
//numberPerX = 0;
//qDebug() << "StatsQSOsPerModeBarChartWidget::prepareChart QSOs: " << QString::number((categories.at(i)).toInt()) << "/" << QString::number(numberPerX);
aux = tr("Reading data ...") + "\n" + tr("Modes: ") + QString::number(i) + "/" + QString::number(categories.count());
//aux = tr("Reading data ...") + "\n" + tr("Modes: %1/%2").arg(QString::number(i)).arg(QString::number(categories.count()));
progress.setLabelText(aux);
progress.setValue(i);
if ( progress.wasCanceled() )
{
i = categories.count();
}
}
sum = set0->sum();
set0->setLabel(QString::number(sum));
series->append(set0);
set0->setLabel(categoriesElem);
chart->addSeries(series);
chart->setTitle(categoriesTitle);
axis->append(categories);
//chart->createDefaultAxes();
//series->attachAxis(axis);
chart->addAxis(axis, Qt::AlignBottom);
chartView->setChart (chart);
}
|