diff options
Diffstat (limited to 'demos/chartthemes/themewidget.cpp')
-rw-r--r-- | demos/chartthemes/themewidget.cpp | 372 |
1 files changed, 0 insertions, 372 deletions
diff --git a/demos/chartthemes/themewidget.cpp b/demos/chartthemes/themewidget.cpp deleted file mode 100644 index d1b0051b..00000000 --- a/demos/chartthemes/themewidget.cpp +++ /dev/null @@ -1,372 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 Digia Plc -** All rights reserved. -** For any questions to Digia, please use contact form at http://qt.digia.com -** -** This file is part of the Qt Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. -** -** If you have questions regarding the use of this file, please use -** contact form at http://qt.digia.com -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "themewidget.h" - -#include <QChartView> -#include <QPieSeries> -#include <QPieSlice> -#include <QAbstractBarSeries> -#include <QPercentBarSeries> -#include <QStackedBarSeries> -#include <QBarSeries> -#include <QBarSet> -#include <QLineSeries> -#include <QSplineSeries> -#include <QScatterSeries> -#include <QAreaSeries> -#include <QLegend> -#include <QGridLayout> -#include <QFormLayout> -#include <QComboBox> -#include <QSpinBox> -#include <QCheckBox> -#include <QGroupBox> -#include <QLabel> -#include <QTime> -#include <QBarCategoryAxis> - -ThemeWidget::ThemeWidget(QWidget *parent) : - QWidget(parent), - m_listCount(3), - m_valueMax(10), - m_valueCount(7), - m_dataTable(generateRandomData(m_listCount, m_valueMax, m_valueCount)), - m_themeComboBox(createThemeBox()), - m_antialiasCheckBox(new QCheckBox("Anti-aliasing")), - m_animatedComboBox(createAnimationBox()), - m_legendComboBox(createLegendBox()) -{ - connectSignals(); - // create layout - QGridLayout *baseLayout = new QGridLayout(); - QHBoxLayout *settingsLayout = new QHBoxLayout(); - settingsLayout->addWidget(new QLabel("Theme:")); - settingsLayout->addWidget(m_themeComboBox); - settingsLayout->addWidget(new QLabel("Animation:")); - settingsLayout->addWidget(m_animatedComboBox); - settingsLayout->addWidget(new QLabel("Legend:")); - settingsLayout->addWidget(m_legendComboBox); - settingsLayout->addWidget(m_antialiasCheckBox); - settingsLayout->addStretch(); - baseLayout->addLayout(settingsLayout, 0, 0, 1, 3); - - //create charts - - QChartView *chartView; - - chartView = new QChartView(createAreaChart()); - baseLayout->addWidget(chartView, 1, 0); - m_charts << chartView; - - chartView = new QChartView(createBarChart(m_valueCount)); - baseLayout->addWidget(chartView, 1, 1); - m_charts << chartView; - - chartView = new QChartView(createLineChart()); - baseLayout->addWidget(chartView, 1, 2); - m_charts << chartView; - - chartView = new QChartView(createPieChart()); - chartView->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); // funny things happen if the pie slice labels no not fit the screen... - baseLayout->addWidget(chartView, 2, 0); - m_charts << chartView; - - chartView = new QChartView(createSplineChart()); - baseLayout->addWidget(chartView, 2, 1); - m_charts << chartView; - - chartView = new QChartView(createScatterChart()); - baseLayout->addWidget(chartView, 2, 2); - m_charts << chartView; - - setLayout(baseLayout); - - // Set defaults - m_antialiasCheckBox->setChecked(true); - updateUI(); -} - -ThemeWidget::~ThemeWidget() -{ -} - -void ThemeWidget::connectSignals() -{ - connect(m_themeComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(updateUI())); - connect(m_antialiasCheckBox, SIGNAL(toggled(bool)), this, SLOT(updateUI())); - connect(m_animatedComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(updateUI())); - connect(m_legendComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(updateUI())); -} - -DataTable ThemeWidget::generateRandomData(int listCount, int valueMax, int valueCount) const -{ - DataTable dataTable; - - // set seed for random stuff - qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime())); - - // generate random data - for (int i(0); i < listCount; i++) { - DataList dataList; - qreal yValue(0); - for (int j(0); j < valueCount; j++) { - yValue = yValue + (qreal)(qrand() % valueMax) / (qreal) valueCount; - QPointF value((j + (qreal) rand() / (qreal) RAND_MAX) * ((qreal) m_valueMax / (qreal) valueCount), - yValue); - QString label = "Slice " + QString::number(i) + ":" + QString::number(j); - dataList << Data(value, label); - } - dataTable << dataList; - } - - return dataTable; -} - -QComboBox *ThemeWidget::createThemeBox() const -{ - // settings layout - QComboBox *themeComboBox = new QComboBox(); - themeComboBox->addItem("Light", QChart::ChartThemeLight); - themeComboBox->addItem("Blue Cerulean", QChart::ChartThemeBlueCerulean); - themeComboBox->addItem("Dark", QChart::ChartThemeDark); - themeComboBox->addItem("Brown Sand", QChart::ChartThemeBrownSand); - themeComboBox->addItem("Blue NCS", QChart::ChartThemeBlueNcs); - themeComboBox->addItem("High Contrast", QChart::ChartThemeHighContrast); - themeComboBox->addItem("Blue Icy", QChart::ChartThemeBlueIcy); - themeComboBox->addItem("Qt", QChart::ChartThemeQt); - return themeComboBox; -} - -QComboBox *ThemeWidget::createAnimationBox() const -{ - // settings layout - QComboBox *animationComboBox = new QComboBox(); - animationComboBox->addItem("No Animations", QChart::NoAnimation); - animationComboBox->addItem("GridAxis Animations", QChart::GridAxisAnimations); - animationComboBox->addItem("Series Animations", QChart::SeriesAnimations); - animationComboBox->addItem("All Animations", QChart::AllAnimations); - return animationComboBox; -} - -QComboBox *ThemeWidget::createLegendBox() const -{ - QComboBox *legendComboBox = new QComboBox(); - legendComboBox->addItem("No Legend ", 0); - legendComboBox->addItem("Legend Top", Qt::AlignTop); - legendComboBox->addItem("Legend Bottom", Qt::AlignBottom); - legendComboBox->addItem("Legend Left", Qt::AlignLeft); - legendComboBox->addItem("Legend Right", Qt::AlignRight); - return legendComboBox; -} - -QChart *ThemeWidget::createAreaChart() const -{ - QChart *chart = new QChart(); - chart->setTitle("Area chart"); - - // The lower series initialized to zero values - QLineSeries *lowerSeries = 0; - QString name("Series "); - int nameIndex = 0; - for (int i(0); i < m_dataTable.count(); i++) { - QLineSeries *upperSeries = new QLineSeries(chart); - for (int j(0); j < m_dataTable[i].count(); j++) { - Data data = m_dataTable[i].at(j); - if (lowerSeries) { - const QList<QPointF>& points = lowerSeries->points(); - upperSeries->append(QPointF(j, points[i].y() + data.first.y())); - } else { - upperSeries->append(QPointF(j, data.first.y())); - } - } - QAreaSeries *area = new QAreaSeries(upperSeries, lowerSeries); - area->setName(name + QString::number(nameIndex)); - nameIndex++; - chart->addSeries(area); - chart->createDefaultAxes(); - lowerSeries = upperSeries; - } - - return chart; -} - -QChart *ThemeWidget::createBarChart(int valueCount) const -{ - Q_UNUSED(valueCount); - QChart *chart = new QChart(); - chart->setTitle("Bar chart"); - - QStackedBarSeries *series = new QStackedBarSeries(chart); - for (int i(0); i < m_dataTable.count(); i++) { - QBarSet *set = new QBarSet("Bar set " + QString::number(i)); - foreach (Data data, m_dataTable[i]) - *set << data.first.y(); - series->append(set); - } - chart->addSeries(series); - chart->createDefaultAxes(); - - return chart; -} - -QChart *ThemeWidget::createLineChart() const -{ - QChart *chart = new QChart(); - chart->setTitle("Line chart"); - - QString name("Series "); - int nameIndex = 0; - foreach (DataList list, m_dataTable) { - QLineSeries *series = new QLineSeries(chart); - foreach (Data data, list) - series->append(data.first); - series->setName(name + QString::number(nameIndex)); - nameIndex++; - chart->addSeries(series); - } - chart->createDefaultAxes(); - - return chart; -} - -QChart *ThemeWidget::createPieChart() const -{ - QChart *chart = new QChart(); - chart->setTitle("Pie chart"); - - qreal pieSize = 1.0 / m_dataTable.count(); - for (int i = 0; i < m_dataTable.count(); i++) { - QPieSeries *series = new QPieSeries(chart); - foreach (Data data, m_dataTable[i]) { - QPieSlice *slice = series->append(data.second, data.first.y()); - if (data == m_dataTable[i].first()) { - slice->setLabelVisible(); - slice->setExploded(); - } - } - qreal hPos = (pieSize / 2) + (i / (qreal) m_dataTable.count()); - series->setPieSize(pieSize); - series->setHorizontalPosition(hPos); - series->setVerticalPosition(0.5); - chart->addSeries(series); - } - - return chart; -} - -QChart *ThemeWidget::createSplineChart() const -{ - // spine chart - QChart *chart = new QChart(); - chart->setTitle("Spline chart"); - QString name("Series "); - int nameIndex = 0; - foreach (DataList list, m_dataTable) { - QSplineSeries *series = new QSplineSeries(chart); - foreach (Data data, list) - series->append(data.first); - series->setName(name + QString::number(nameIndex)); - nameIndex++; - chart->addSeries(series); - } - chart->createDefaultAxes(); - return chart; -} - -QChart *ThemeWidget::createScatterChart() const -{ - // scatter chart - QChart *chart = new QChart(); - chart->setTitle("Scatter chart"); - QString name("Series "); - int nameIndex = 0; - foreach (DataList list, m_dataTable) { - QScatterSeries *series = new QScatterSeries(chart); - foreach (Data data, list) - series->append(data.first); - series->setName(name + QString::number(nameIndex)); - nameIndex++; - chart->addSeries(series); - } - chart->createDefaultAxes(); - return chart; -} - -void ThemeWidget::updateUI() -{ - QChart::ChartTheme theme = (QChart::ChartTheme) m_themeComboBox->itemData(m_themeComboBox->currentIndex()).toInt(); - - if (m_charts.at(0)->chart()->theme() != theme) { - foreach (QChartView *chartView, m_charts) - chartView->chart()->setTheme(theme); - - QPalette pal = window()->palette(); - if (theme == QChart::ChartThemeLight) { - pal.setColor(QPalette::Window, QRgb(0xf0f0f0)); - pal.setColor(QPalette::WindowText, QRgb(0x404044)); - } else if (theme == QChart::ChartThemeDark) { - pal.setColor(QPalette::Window, QRgb(0x121218)); - pal.setColor(QPalette::WindowText, QRgb(0xd6d6d6)); - } else if (theme == QChart::ChartThemeBlueCerulean) { - pal.setColor(QPalette::Window, QRgb(0x40434a)); - pal.setColor(QPalette::WindowText, QRgb(0xd6d6d6)); - } else if (theme == QChart::ChartThemeBrownSand) { - pal.setColor(QPalette::Window, QRgb(0x9e8965)); - pal.setColor(QPalette::WindowText, QRgb(0x404044)); - } else if (theme == QChart::ChartThemeBlueNcs) { - pal.setColor(QPalette::Window, QRgb(0x018bba)); - pal.setColor(QPalette::WindowText, QRgb(0x404044)); - } else if (theme == QChart::ChartThemeHighContrast) { - pal.setColor(QPalette::Window, QRgb(0xffab03)); - pal.setColor(QPalette::WindowText, QRgb(0x181818)); - } else if (theme == QChart::ChartThemeBlueIcy) { - pal.setColor(QPalette::Window, QRgb(0xcee7f0)); - pal.setColor(QPalette::WindowText, QRgb(0x404044)); - } else { - pal.setColor(QPalette::Window, QRgb(0xf0f0f0)); - pal.setColor(QPalette::WindowText, QRgb(0x404044)); - } - window()->setPalette(pal); - } - - bool checked = m_antialiasCheckBox->isChecked(); - foreach (QChartView *chart, m_charts) - chart->setRenderHint(QPainter::Antialiasing, checked); - - QChart::AnimationOptions options(m_animatedComboBox->itemData(m_animatedComboBox->currentIndex()).toInt()); - if (m_charts.at(0)->chart()->animationOptions() != options) { - foreach (QChartView *chartView, m_charts) - chartView->chart()->setAnimationOptions(options); - } - - Qt::Alignment alignment(m_legendComboBox->itemData(m_legendComboBox->currentIndex()).toInt()); - - if (!alignment) { - foreach (QChartView *chartView, m_charts) - chartView->chart()->legend()->hide(); - } else { - foreach (QChartView *chartView, m_charts) { - chartView->chart()->legend()->setAlignment(alignment); - chartView->chart()->legend()->show(); - } - } -} - |