##// END OF EJS Templates
adds Andy's customer request, first call to createDaultAxis scales whole domain (if on common axis)
adds Andy's customer request, first call to createDaultAxis scales whole domain (if on common axis)

File last commit:

r2398:1e18d6a3f6b0
r2408:f065af9daaed
Show More
window.cpp
502 lines | 17.1 KiB | text/x-c | CppLexer
Michal Klocek
Adds chartviewer demo
r1746 /****************************************************************************
**
** Copyright (C) 2012 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 Commercial Charts Add-on.
**
** $QT_BEGIN_LICENSE$
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial 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$
**
****************************************************************************/
Michal Klocek
Adds scroll and zoom to chartviewer
r1748 #include "window.h"
#include "view.h"
Michal Klocek
Refactor charviewer...
r2127 #include "grid.h"
Michal Klocek
Adds charts to chartsviewer
r1753 #include "charts.h"
Michal Klocek
Adds chartviewer demo
r1746 #include <QChartView>
#include <QAreaSeries>
#include <QLegend>
#include <QGridLayout>
#include <QFormLayout>
#include <QComboBox>
#include <QSpinBox>
#include <QCheckBox>
#include <QGroupBox>
#include <QLabel>
#include <QGraphicsScene>
#include <QGraphicsLinearLayout>
#include <QGraphicsProxyWidget>
#include <QGLWidget>
#include <QApplication>
#include <QDebug>
Michal Klocek
Adds charts create selection to chartviewer
r1840 #include <QMenu>
Michal Klocek
Adds view menu to chartviewer
r2128 #include <QPushButton>
Michal Klocek
Adds chartviewer demo
r1746
Jani Honkonen
demos: coding style police make a surprise strike
r2130 Window::Window(const QVariantHash &parameters, QWidget *parent)
: QMainWindow(parent),
m_scene(new QGraphicsScene(this)),
m_view(0),
m_form(0),
m_themeComboBox(0),
m_antialiasCheckBox(0),
m_animatedComboBox(0),
m_legendComboBox(0),
m_templateComboBox(0),
m_viewComboBox(0),
m_openGLCheckBox(0),
m_zoomCheckBox(0),
m_scrollCheckBox(0),
m_baseLayout(new QGraphicsLinearLayout()),
m_menu(createMenu()),
m_template(0),
Michal Klocek
Adds chart parser to cherviewer options
r2135 m_grid(new Grid(-1))
Michal Klocek
Adds chartviewer demo
r1746 {
createProxyWidgets();
// create layout
QGraphicsLinearLayout *settingsLayout = new QGraphicsLinearLayout();
Michal Klocek
Adds view menu to chartviewer
r2128
Michal Klocek
Adds chartviewer demo
r1746 settingsLayout->setOrientation(Qt::Vertical);
settingsLayout->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
settingsLayout->addItem(m_widgetHash["openGLCheckBox"]);
settingsLayout->addItem(m_widgetHash["antialiasCheckBox"]);
Michal Klocek
Adds view menu to chartviewer
r2128 settingsLayout->addItem(m_widgetHash["viewLabel"]);
settingsLayout->addItem(m_widgetHash["viewComboBox"]);
Michal Klocek
Adds chartviewer demo
r1746 settingsLayout->addItem(m_widgetHash["themeLabel"]);
settingsLayout->addItem(m_widgetHash["themeComboBox"]);
settingsLayout->addItem(m_widgetHash["animationsLabel"]);
settingsLayout->addItem(m_widgetHash["animatedComboBox"]);
settingsLayout->addItem(m_widgetHash["legendLabel"]);
settingsLayout->addItem(m_widgetHash["legendComboBox"]);
Michal Klocek
Adds charts templates to chartviewer
r1864 settingsLayout->addItem(m_widgetHash["templateLabel"]);
settingsLayout->addItem(m_widgetHash["templateComboBox"]);
Michal Klocek
Adds scroll and zoom to chartviewer
r1748 settingsLayout->addItem(m_widgetHash["scrollCheckBox"]);
settingsLayout->addItem(m_widgetHash["zoomCheckBox"]);
Michal Klocek
Adds chartviewer demo
r1746 settingsLayout->addStretch();
Michal Klocek
Adds charts create selection to chartviewer
r1840
Michal Klocek
Refactor charviewer...
r2127 m_baseLayout->setOrientation(Qt::Horizontal);
m_baseLayout->addItem(m_grid);
m_baseLayout->addItem(settingsLayout);
Michal Klocek
Adds charts create selection to chartviewer
r1840
Michal Klocek
Adds chartviewer demo
r1746 m_form = new QGraphicsWidget();
Michal Klocek
Adds charts create selection to chartviewer
r1840 m_form->setLayout(m_baseLayout);
Michal Klocek
Adds chartviewer demo
r1746 m_scene->addItem(m_form);
Michal Klocek
Adds scroll and zoom to chartviewer
r1748 m_view = new View(m_scene, m_form);
Michal Klocek
Fix layouting in mapviewer
r1964 m_view->setMinimumSize(m_form->minimumSize().toSize());
Michal Klocek
Adds chartviewer demo
r1746
Michal Klocek
Adds scroll and zoom to chartviewer
r1748 // Set defaults
m_antialiasCheckBox->setChecked(true);
Michal Klocek
Adds comandline parser for chartviewer
r2119 initializeFromParamaters(parameters);
Michal Klocek
Adds chartviewer demo
r1746 updateUI();
Michal Klocek
Adds chart parser to cherviewer options
r2135 if(!m_category.isEmpty() && !m_subcategory.isEmpty() && !m_name.isEmpty())
m_grid->createCharts(m_category,m_subcategory,m_name);
Michal Klocek
Adds view menu to chartviewer
r2128 handleGeometryChanged();
Michal Klocek
Adds chartviewer demo
r1746 setCentralWidget(m_view);
Michal Klocek
Fix layouting in mapviewer
r1964
connectSignals();
Michal Klocek
Adds chartviewer demo
r1746 }
Michal Klocek
Adds scroll and zoom to chartviewer
r1748 Window::~Window()
Michal Klocek
Adds chartviewer demo
r1746 {
}
Michal Klocek
Adds scroll and zoom to chartviewer
r1748 void Window::connectSignals()
Michal Klocek
Adds chartviewer demo
r1746 {
Jani Honkonen
coding style fixes for demos
r2099 QObject::connect(m_form, SIGNAL(geometryChanged()), this , SLOT(handleGeometryChanged()));
Michal Klocek
Adds view menu to chartviewer
r2128 QObject::connect(m_viewComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(updateUI()));
Michal Klocek
Fix layout issues with combobxes in chartsviewer
r1754 QObject::connect(m_themeComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(updateUI()));
QObject::connect(m_antialiasCheckBox, SIGNAL(toggled(bool)), this, SLOT(updateUI()));
QObject::connect(m_openGLCheckBox, SIGNAL(toggled(bool)), this, SLOT(updateUI()));
QObject::connect(m_zoomCheckBox, SIGNAL(toggled(bool)), this, SLOT(updateUI()));
QObject::connect(m_scrollCheckBox, SIGNAL(toggled(bool)), this, SLOT(updateUI()));
QObject::connect(m_animatedComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(updateUI()));
QObject::connect(m_legendComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(updateUI()));
Michal Klocek
Adds charts templates to chartviewer
r1864 QObject::connect(m_templateComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(updateUI()));
Jani Honkonen
demos: coding style police make a surprise strike
r2130 QObject::connect(m_grid, SIGNAL(chartSelected(QChart*)), this, SLOT(handleChartSelected(QChart*)));
Michal Klocek
Adds chartviewer demo
r1746 }
Michal Klocek
Adds scroll and zoom to chartviewer
r1748 void Window::createProxyWidgets()
Michal Klocek
Adds chartviewer demo
r1746 {
m_themeComboBox = createThemeBox();
Michal Klocek
Adds view menu to chartviewer
r2128 m_viewComboBox = createViewBox();
Michal Klocek
Adds chartviewer demo
r1746 m_antialiasCheckBox = new QCheckBox(tr("Anti-aliasing"));
m_animatedComboBox = createAnimationBox();
m_legendComboBox = createLegendBox();
m_openGLCheckBox = new QCheckBox(tr("OpenGL"));
Michal Klocek
Adds scroll and zoom to chartviewer
r1748 m_zoomCheckBox = new QCheckBox(tr("Zoom"));
m_scrollCheckBox = new QCheckBox(tr("Scroll"));
Jani Honkonen
coding style fixes for demos
r2099 m_templateComboBox = createTempleteBox();
Michal Klocek
Adds view menu to chartviewer
r2128 m_widgetHash["viewLabel"] = m_scene->addWidget(new QLabel("View"));
m_widgetHash["viewComboBox"] = m_scene->addWidget(m_viewComboBox);
Michal Klocek
Adds chartviewer demo
r1746 m_widgetHash["themeComboBox"] = m_scene->addWidget(m_themeComboBox);
m_widgetHash["antialiasCheckBox"] = m_scene->addWidget(m_antialiasCheckBox);
m_widgetHash["animatedComboBox"] = m_scene->addWidget(m_animatedComboBox);
m_widgetHash["legendComboBox"] = m_scene->addWidget(m_legendComboBox);
m_widgetHash["openGLCheckBox"] = m_scene->addWidget(m_openGLCheckBox);
m_widgetHash["themeLabel"] = m_scene->addWidget(new QLabel("Theme"));
m_widgetHash["animationsLabel"] = m_scene->addWidget(new QLabel("Animations"));
m_widgetHash["legendLabel"] = m_scene->addWidget(new QLabel("Legend"));
Michal Klocek
Adds charts templates to chartviewer
r1864 m_widgetHash["templateLabel"] = m_scene->addWidget(new QLabel("Chart template"));
m_widgetHash["templateComboBox"] = m_scene->addWidget(m_templateComboBox);
Michal Klocek
Adds scroll and zoom to chartviewer
r1748 m_widgetHash["zoomCheckBox"] = m_scene->addWidget(m_zoomCheckBox);
m_widgetHash["scrollCheckBox"] = m_scene->addWidget(m_scrollCheckBox);
Michal Klocek
Adds chartviewer demo
r1746 }
Jani Honkonen
coding style fixes for demos
r2099 QComboBox *Window::createThemeBox()
Michal Klocek
Adds chartviewer demo
r1746 {
Jani Honkonen
coding style fixes for demos
r2099 QComboBox *themeComboBox = new ComboBox(this);
Michal Klocek
Adds chartviewer demo
r1746 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);
return themeComboBox;
}
Michal Klocek
Adds view menu to chartviewer
r2128 QComboBox *Window::createViewBox()
{
QComboBox *viewComboBox = new ComboBox(this);
viewComboBox->addItem("1 chart", 1);
viewComboBox->addItem("4 charts", 2);
viewComboBox->addItem("9 charts", 3);
viewComboBox->addItem("16 charts", 4);
return viewComboBox;
}
Jani Honkonen
coding style fixes for demos
r2099 QComboBox *Window::createAnimationBox()
Michal Klocek
Adds chartviewer demo
r1746 {
Jani Honkonen
coding style fixes for demos
r2099 QComboBox *animationComboBox = new ComboBox(this);
Michal Klocek
Adds chartviewer demo
r1746 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;
}
Jani Honkonen
coding style fixes for demos
r2099 QComboBox *Window::createLegendBox()
Michal Klocek
Adds chartviewer demo
r1746 {
Jani Honkonen
coding style fixes for demos
r2099 QComboBox *legendComboBox = new ComboBox(this);
Michal Klocek
Adds chartviewer demo
r1746 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;
}
Jani Honkonen
coding style fixes for demos
r2099 QComboBox *Window::createTempleteBox()
Michal Klocek
Adds charts templates to chartviewer
r1864 {
Jani Honkonen
coding style fixes for demos
r2099 QComboBox *templateComboBox = new ComboBox(this);
Michal Klocek
Adds charts templates to chartviewer
r1864 templateComboBox->addItem("No Template", 0);
Charts::ChartList list = Charts::chartList();
Jani Honkonen
coding style fixes for demos
r2099 QMultiMap<QString, Chart *> categoryMap;
Michal Klocek
Adds charts templates to chartviewer
r1864
Jani Honkonen
coding style fixes for demos
r2099 foreach (Chart *chart, list)
categoryMap.insertMulti(chart->category(), chart);
foreach (const QString &category, categoryMap.uniqueKeys())
Michal Klocek
Adds charts templates to chartviewer
r1864 templateComboBox->addItem(category, category);
Jani Honkonen
coding style fixes for demos
r2099
Michal Klocek
Adds charts templates to chartviewer
r1864 return templateComboBox;
}
Jani Honkonen
demos: coding style police make a surprise strike
r2130 void Window::initializeFromParamaters(const QVariantHash &parameters)
Michal Klocek
Adds comandline parser for chartviewer
r2119 {
Michal Klocek
Adds chart parser to cherviewer options
r2135 if (parameters.contains("view")) {
int t = parameters["view"].toInt();
for (int i = 0; i < m_viewComboBox->count(); ++i) {
if (m_viewComboBox->itemData(i).toInt() == t) {
m_viewComboBox->setCurrentIndex(i);
break;
}
}
}
Michal Klocek
Adds help for chartviewer
r2134 if (parameters.contains("chart")) {
QString t = parameters["chart"].toString();
Michal Klocek
Adds chart parser to cherviewer options
r2135
QRegExp rx("([a-zA-Z0-9_]*)::([a-zA-Z0-9_]*)::([a-zA-Z0-9_]*)");
int pos = rx.indexIn(t);
if (pos > -1) {
m_category = rx.cap(1);
m_subcategory = rx.cap(2);
m_name = rx.cap(3);
m_templateComboBox->setCurrentIndex(0);
}
else {
for (int i = 0; i < m_templateComboBox->count(); ++i) {
if (m_templateComboBox->itemText(i) == t) {
m_templateComboBox->setCurrentIndex(i);
break;
}
Michal Klocek
Adds comandline parser for chartviewer
r2119 }
}
}
if (parameters.contains("opengl")) {
bool checked = parameters["opengl"].toBool();
m_openGLCheckBox->setChecked(checked);
}
if (parameters.contains("theme")) {
QString t = parameters["theme"].toString();
for (int i = 0; i < m_themeComboBox->count(); ++i) {
if (m_themeComboBox->itemText(i) == t) {
m_themeComboBox->setCurrentIndex(i);
break;
}
}
}
if (parameters.contains("animation")) {
QString t = parameters["animation"].toString();
for (int i = 0; i < m_animatedComboBox->count(); ++i) {
if (m_animatedComboBox->itemText(i) == t) {
m_animatedComboBox->setCurrentIndex(i);
break;
}
}
}
if (parameters.contains("legend")) {
QString t = parameters["legend"].toString();
for (int i = 0; i < m_legendComboBox->count(); ++i) {
if (m_legendComboBox->itemText(i) == t) {
m_legendComboBox->setCurrentIndex(i);
break;
}
}
}
}
Michal Klocek
Adds charts templates to chartviewer
r1864
Michal Klocek
Adds scroll and zoom to chartviewer
r1748 void Window::updateUI()
Michal Klocek
Adds charts create selection to chartviewer
r1840 {
Michal Klocek
Adds view menu to chartviewer
r2128 checkView();
Michal Klocek
Adds chart parser to cherviewer options
r2135 checkTemplate();
Michal Klocek
Adds charts create selection to chartviewer
r1840 checkOpenGL();
checkTheme();
checkAnimationOptions();
checkLegend();
checkState();
}
Michal Klocek
Adds view menu to chartviewer
r2128 void Window::checkView()
{
int count(m_viewComboBox->itemData(m_viewComboBox->currentIndex()).toInt());
Michal Klocek
Adds chart parser to cherviewer options
r2135 if(m_grid->size()!=count){
m_grid->setSize(count);
m_template = 0;
}
Michal Klocek
Adds view menu to chartviewer
r2128 }
Michal Klocek
Adds charts create selection to chartviewer
r1840 void Window::checkLegend()
{
Qt::Alignment alignment(m_legendComboBox->itemData(m_legendComboBox->currentIndex()).toInt());
if (!alignment) {
Michal Klocek
Refactor charviewer...
r2127 foreach (QChart *chart, m_grid->charts())
Michal Klocek
Adds charts create selection to chartviewer
r1840 chart->legend()->hide();
Jani Honkonen
coding style fixes for demos
r2099 } else {
Michal Klocek
Refactor charviewer...
r2127 foreach (QChart *chart, m_grid->charts()) {
Michal Klocek
Adds charts create selection to chartviewer
r1840 chart->legend()->setAlignment(alignment);
chart->legend()->show();
}
}
}
void Window::checkOpenGL()
Michal Klocek
Adds chartviewer demo
r1746 {
bool opengl = m_openGLCheckBox->isChecked();
Jani Honkonen
coding style fixes for demos
r2099 bool isOpengl = qobject_cast<QGLWidget *>(m_view->viewport());
Michal Klocek
Adds chartviewer demo
r1746 if ((isOpengl && !opengl) || (!isOpengl && opengl)) {
m_view->deleteLater();
Michal Klocek
Adds scroll and zoom to chartviewer
r1748 m_view = new View(m_scene, m_form);
Michal Klocek
Adds chartviewer demo
r1746 m_view->setViewport(!opengl ? new QWidget() : new QGLWidget());
setCentralWidget(m_view);
}
Michal Klocek
Adds charts create selection to chartviewer
r1840 bool antialias = m_antialiasCheckBox->isChecked();
Jani Honkonen
coding style fixes for demos
r2099 if (opengl)
m_view->setRenderHint(QPainter::HighQualityAntialiasing, antialias);
else
m_view->setRenderHint(QPainter::Antialiasing, antialias);
Michal Klocek
Adds charts create selection to chartviewer
r1840 }
void Window::checkAnimationOptions()
{
QChart::AnimationOptions options(
Jani Honkonen
coding style fixes for demos
r2099 m_animatedComboBox->itemData(m_animatedComboBox->currentIndex()).toInt());
Jani Honkonen
demos: coding style police make a surprise strike
r2130 QList<QChart *> charts = m_grid->charts();
Michal Klocek
Refactor charviewer...
r2127
if (!charts.isEmpty() && charts.at(0)->animationOptions() != options) {
foreach (QChart *chart, charts)
Jani Honkonen
coding style fixes for demos
r2099 chart->setAnimationOptions(options);
}
Michal Klocek
Adds charts create selection to chartviewer
r1840 }
void Window::checkState()
{
bool scroll = m_scrollCheckBox->isChecked();
Michal Klocek
Refactor charviewer...
r2127
if (m_grid->state() != Grid::ScrollState && scroll) {
m_grid->setState(Grid::ScrollState);
Michal Klocek
Adds charts create selection to chartviewer
r1840 m_zoomCheckBox->setChecked(false);
Michal Klocek
Refactor charviewer...
r2127 } else if (!scroll && m_grid->state() == Grid::ScrollState) {
m_grid->setState(Grid::NoState);
Michal Klocek
Adds charts create selection to chartviewer
r1840 }
bool zoom = m_zoomCheckBox->isChecked();
Michal Klocek
Refactor charviewer...
r2127 if (m_grid->state() != Grid::ZoomState && zoom) {
m_grid->setState(Grid::ZoomState);
Michal Klocek
Adds charts create selection to chartviewer
r1840 m_scrollCheckBox->setChecked(false);
Michal Klocek
Refactor charviewer...
r2127 } else if (!zoom && m_grid->state() == Grid::ZoomState) {
m_grid->setState(Grid::NoState);
Michal Klocek
Adds charts create selection to chartviewer
r1840 }
}
Michal Klocek
Adds charts templates to chartviewer
r1864 void Window::checkTemplate()
{
int index = m_templateComboBox->currentIndex();
if (m_template == index || index == 0)
return;
Michal Klocek
Adds donut and precent charts to chartviewer
r1865 m_template = index;
Michal Klocek
Adds charts templates to chartviewer
r1864 QString category = m_templateComboBox->itemData(index).toString();
Michal Klocek
Refactor charviewer...
r2127 m_grid->createCharts(category);
Michal Klocek
Adds charts templates to chartviewer
r1864 }
Michal Klocek
Adds charts create selection to chartviewer
r1840 void Window::checkTheme()
{
Michal Klocek
Adds chartviewer demo
r1746 QChart::ChartTheme theme = (QChart::ChartTheme) m_themeComboBox->itemData(
Jani Honkonen
coding style fixes for demos
r2099 m_themeComboBox->currentIndex()).toInt();
Michal Klocek
Adds chartviewer demo
r1746
Michal Klocek
Refactor charviewer...
r2127 foreach (QChart *chart, m_grid->charts())
Michal Klocek
Adds chartviewer demo
r1746 chart->setTheme(theme);
QPalette pal = window()->palette();
if (theme == QChart::ChartThemeLight) {
pal.setColor(QPalette::Window, QRgb(0xf0f0f0));
pal.setColor(QPalette::WindowText, QRgb(0x404044));
Jani Honkonen
coding style fixes for demos
r2099 } else if (theme == QChart::ChartThemeDark) {
Michal Klocek
Adds chartviewer demo
r1746 pal.setColor(QPalette::Window, QRgb(0x121218));
pal.setColor(QPalette::WindowText, QRgb(0xd6d6d6));
Jani Honkonen
coding style fixes for demos
r2099 } else if (theme == QChart::ChartThemeBlueCerulean) {
Michal Klocek
Adds chartviewer demo
r1746 pal.setColor(QPalette::Window, QRgb(0x40434a));
pal.setColor(QPalette::WindowText, QRgb(0xd6d6d6));
Jani Honkonen
coding style fixes for demos
r2099 } else if (theme == QChart::ChartThemeBrownSand) {
Michal Klocek
Adds chartviewer demo
r1746 pal.setColor(QPalette::Window, QRgb(0x9e8965));
pal.setColor(QPalette::WindowText, QRgb(0x404044));
Jani Honkonen
coding style fixes for demos
r2099 } else if (theme == QChart::ChartThemeBlueNcs) {
Michal Klocek
Adds chartviewer demo
r1746 pal.setColor(QPalette::Window, QRgb(0x018bba));
pal.setColor(QPalette::WindowText, QRgb(0x404044));
Jani Honkonen
coding style fixes for demos
r2099 } else if (theme == QChart::ChartThemeHighContrast) {
Michal Klocek
Adds chartviewer demo
r1746 pal.setColor(QPalette::Window, QRgb(0xffab03));
pal.setColor(QPalette::WindowText, QRgb(0x181818));
Jani Honkonen
coding style fixes for demos
r2099 } else if (theme == QChart::ChartThemeBlueIcy) {
Michal Klocek
Adds chartviewer demo
r1746 pal.setColor(QPalette::Window, QRgb(0xcee7f0));
pal.setColor(QPalette::WindowText, QRgb(0x404044));
Jani Honkonen
coding style fixes for demos
r2099 } else {
Michal Klocek
Adds chartviewer demo
r1746 pal.setColor(QPalette::Window, QRgb(0xf0f0f0));
pal.setColor(QPalette::WindowText, QRgb(0x404044));
}
Jani Honkonen
coding style fixes for demos
r2099 foreach (QGraphicsProxyWidget *widget, m_widgetHash)
Michal Klocek
Adds chartviewer demo
r1746 widget->setPalette(pal);
m_view->setBackgroundBrush(pal.color((QPalette::Window)));
Michal Klocek
Refactor charviewer...
r2127 m_grid->setRubberPen(pal.color((QPalette::WindowText)));
Michal Klocek
Adds scroll and zoom to chartviewer
r1748 }
Michal Klocek
Fix layout issues with combobxes in chartsviewer
r1754
void Window::comboBoxFocused(QComboBox *combobox)
{
Jani Honkonen
coding style fixes for demos
r2099 foreach (QGraphicsProxyWidget *widget , m_widgetHash) {
if (widget->widget() == combobox)
widget->setZValue(2.0);
else
widget->setZValue(0.0);
Michal Klocek
Fix layout issues with combobxes in chartsviewer
r1754 }
}
Michal Klocek
Adds charts create selection to chartviewer
r1840
Michal Klocek
Refactor charviewer...
r2127 void Window::handleChartSelected(QChart *qchart)
Michal Klocek
Adds charts create selection to chartviewer
r1840 {
Jani Honkonen
demos: coding style police make a surprise strike
r2130 if (m_templateComboBox->currentIndex() != 0)
return;
Michal Klocek
Refactor charviewer...
r2127
Michal Klocek
Adds charts create selection to chartviewer
r1840 QAction *chosen = m_menu->exec(QCursor::pos());
if (chosen) {
Jani Honkonen
coding style fixes for demos
r2099 Chart *chart = (Chart *) chosen->data().value<void *>();
Jani Honkonen
demos: coding style police make a surprise strike
r2130 m_grid->replaceChart(qchart, chart);
Michal Klocek
Adds charts create selection to chartviewer
r1840 updateUI();
}
}
Jani Honkonen
coding style fixes for demos
r2099 QMenu *Window::createMenu()
Michal Klocek
Adds charts templates to chartviewer
r1864 {
Charts::ChartList list = Charts::chartList();
Jani Honkonen
coding style fixes for demos
r2099 QMultiMap<QString, Chart *> categoryMap;
Michal Klocek
Adds charts templates to chartviewer
r1864
Jani Honkonen
coding style fixes for demos
r2099 QMenu *result = new QMenu(this);
Michal Klocek
Adds charts templates to chartviewer
r1864
Jani Honkonen
coding style fixes for demos
r2099 foreach (Chart *chart, list)
Michal Klocek
Adds charts templates to chartviewer
r1864 categoryMap.insertMulti(chart->category(), chart);
Jani Honkonen
coding style fixes for demos
r2099 foreach (const QString &category, categoryMap.uniqueKeys()) {
QMenu *menu(0);
QMultiMap<QString, Chart *> subCategoryMap;
Michal Klocek
Adds charts templates to chartviewer
r1864 if (category.isEmpty()) {
menu = result;
Jani Honkonen
coding style fixes for demos
r2099 } else {
Michal Klocek
Adds charts templates to chartviewer
r1864 menu = new QMenu(category, this);
result->addMenu(menu);
}
Jani Honkonen
coding style fixes for demos
r2099 foreach (Chart *chart, categoryMap.values(category))
Michal Klocek
Adds charts templates to chartviewer
r1864 subCategoryMap.insert(chart->subCategory(), chart);
Jani Honkonen
coding style fixes for demos
r2099 foreach (const QString &subCategory, subCategoryMap.uniqueKeys()) {
QMenu *subMenu(0);
Michal Klocek
Adds charts templates to chartviewer
r1864 if (subCategory.isEmpty()) {
subMenu = menu;
Jani Honkonen
coding style fixes for demos
r2099 } else {
Michal Klocek
Adds charts templates to chartviewer
r1864 subMenu = new QMenu(subCategory, this);
menu->addMenu(subMenu);
}
Jani Honkonen
more coding style fixes for examples...
r2102 foreach (Chart *chart, subCategoryMap.values(subCategory)) {
Michal Klocek
Adds charts templates to chartviewer
r1864 createMenuAction(subMenu, QIcon(), chart->name(),
Jani Honkonen
coding style fixes for demos
r2099 qVariantFromValue((void *) chart));
Michal Klocek
Adds charts templates to chartviewer
r1864 }
}
}
return result;
}
Jani Honkonen
coding style fixes for demos
r2099 QAction *Window::createMenuAction(QMenu *menu, const QIcon &icon, const QString &text,
const QVariant &data)
Michal Klocek
Adds charts create selection to chartviewer
r1840 {
QAction *action = menu->addAction(icon, text);
action->setCheckable(false);
action->setData(data);
return action;
}
Michal Klocek
Fix layouting in mapviewer
r1964
void Window::handleGeometryChanged()
{
Jani Honkonen
coding style fixes for demos
r2099 QSizeF size = m_baseLayout->sizeHint(Qt::MinimumSize);
m_view->scene()->setSceneRect(0, 0, this->width(), this->height());
m_view->setMinimumSize(size.toSize());
Michal Klocek
Fix layouting in mapviewer
r1964 }