dataseriedialog.cpp
190 lines
| 6.2 KiB
| text/x-c
|
CppLexer
Jani Honkonen
|
r830 | /**************************************************************************** | ||
** | ||||
** 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$ | ||||
** | ||||
****************************************************************************/ | ||||
Tero Ahola
|
r19 | #include "dataseriedialog.h" | ||
#include <QDialogButtonBox> | ||||
Tero Ahola
|
r20 | #include <QGridLayout> | ||
Michal Klocek
|
r292 | #include <QCheckBox> | ||
Tero Ahola
|
r20 | #include <QPushButton> | ||
Tero Ahola
|
r278 | #include <QGroupBox> | ||
#include <QRadioButton> | ||||
Tero Ahola
|
r20 | #include <QLabel> | ||
Tero Ahola
|
r19 | #include <QDebug> | ||
Tero Ahola
|
r376 | DataSerieDialog::DataSerieDialog(QWidget *parent) : | ||
Tero Ahola
|
r19 | QDialog(parent) | ||
{ | ||||
Tero Ahola
|
r20 | QDialogButtonBox *addSeriesBox = new QDialogButtonBox(Qt::Horizontal); | ||
QPushButton *b = addSeriesBox->addButton(QDialogButtonBox::Ok); | ||||
connect(b, SIGNAL(clicked()), this, SLOT(accept())); | ||||
b = addSeriesBox->addButton(QDialogButtonBox::Cancel); | ||||
connect(b, SIGNAL(clicked()), this, SLOT(reject())); | ||||
QGridLayout *grid = new QGridLayout(); | ||||
Tero Ahola
|
r278 | |||
m_seriesTypeSelector = seriesTypeSelector(); | ||||
m_columnCountSelector = columnCountSelector(); | ||||
m_rowCountSelector = rowCountSelector(); | ||||
m_dataCharacteristicsSelector = dataCharacteristicsSelector(); | ||||
grid->addWidget(m_seriesTypeSelector, 0, 0); | ||||
grid->addWidget(m_columnCountSelector, 0, 1); | ||||
grid->addWidget(m_rowCountSelector, 1, 1); | ||||
grid->addWidget(m_dataCharacteristicsSelector, 1, 0); | ||||
m_labelsSelector = new QCheckBox("Labels defined"); | ||||
m_labelsSelector->setChecked(true); | ||||
grid->addWidget(m_labelsSelector, 2, 0); | ||||
grid->addWidget(addSeriesBox, 3, 1); | ||||
Tero Ahola
|
r20 | |||
setLayout(grid); | ||||
Tero Ahola
|
r19 | } | ||
Tero Ahola
|
r278 | QGroupBox *DataSerieDialog::seriesTypeSelector() | ||
{ | ||||
QVBoxLayout *layout = new QVBoxLayout(); | ||||
Tero Ahola
|
r279 | QRadioButton *line = new QRadioButton("Line"); | ||
Tero Ahola
|
r278 | line->setChecked(true); | ||
layout->addWidget(line); | ||||
Tero Ahola
|
r279 | layout->addWidget(new QRadioButton("Area")); | ||
layout->addWidget(new QRadioButton("Pie")); | ||||
layout->addWidget(new QRadioButton("Bar")); | ||||
Tero Ahola
|
r1223 | layout->addWidget(new QRadioButton("Grouped bar")); | ||
Tero Ahola
|
r279 | layout->addWidget(new QRadioButton("Stacked bar")); | ||
layout->addWidget(new QRadioButton("Percent bar")); | ||||
layout->addWidget(new QRadioButton("Scatter")); | ||||
layout->addWidget(new QRadioButton("Spline")); | ||||
Tero Ahola
|
r278 | |||
QGroupBox *groupBox = new QGroupBox("Series type"); | ||||
groupBox->setLayout(layout); | ||||
Tero Ahola
|
r376 | selectRadio(groupBox, 0); | ||
Tero Ahola
|
r278 | |||
return groupBox; | ||||
} | ||||
QGroupBox *DataSerieDialog::columnCountSelector() | ||||
{ | ||||
QVBoxLayout *layout = new QVBoxLayout(); | ||||
QRadioButton *radio = new QRadioButton("1"); | ||||
radio->setChecked(true); | ||||
layout->addWidget(radio); | ||||
layout->addWidget(new QRadioButton("2")); | ||||
layout->addWidget(new QRadioButton("3")); | ||||
Tero Ahola
|
r661 | layout->addWidget(new QRadioButton("4")); | ||
Tero Ahola
|
r278 | layout->addWidget(new QRadioButton("5")); | ||
Tero Ahola
|
r661 | layout->addWidget(new QRadioButton("8")); | ||
Tero Ahola
|
r278 | layout->addWidget(new QRadioButton("10")); | ||
layout->addWidget(new QRadioButton("100")); | ||||
QGroupBox *groupBox = new QGroupBox("Column count"); | ||||
groupBox->setLayout(layout); | ||||
Tero Ahola
|
r376 | selectRadio(groupBox, 0); | ||
Tero Ahola
|
r278 | |||
return groupBox; | ||||
} | ||||
QGroupBox *DataSerieDialog::rowCountSelector() | ||||
{ | ||||
QVBoxLayout *layout = new QVBoxLayout(); | ||||
layout->addWidget(new QRadioButton("1")); | ||||
QRadioButton *radio = new QRadioButton("10"); | ||||
radio->setChecked(true); | ||||
layout->addWidget(radio); | ||||
layout->addWidget(new QRadioButton("50")); | ||||
layout->addWidget(new QRadioButton("100")); | ||||
Tero Ahola
|
r1276 | layout->addWidget(new QRadioButton("1000")); | ||
Tero Ahola
|
r278 | layout->addWidget(new QRadioButton("10000")); | ||
Tero Ahola
|
r661 | layout->addWidget(new QRadioButton("100000")); | ||
Tero Ahola
|
r278 | layout->addWidget(new QRadioButton("1000000")); | ||
QGroupBox *groupBox = new QGroupBox("Row count"); | ||||
groupBox->setLayout(layout); | ||||
Tero Ahola
|
r376 | selectRadio(groupBox, 0); | ||
Tero Ahola
|
r278 | |||
return groupBox; | ||||
} | ||||
QGroupBox *DataSerieDialog::dataCharacteristicsSelector() | ||||
{ | ||||
QVBoxLayout *layout = new QVBoxLayout(); | ||||
Tero Ahola
|
r376 | layout->addWidget(new QRadioButton("Linear")); | ||
Tero Ahola
|
r278 | layout->addWidget(new QRadioButton("Constant")); | ||
layout->addWidget(new QRadioButton("Random")); | ||||
layout->addWidget(new QRadioButton("Sin")); | ||||
layout->addWidget(new QRadioButton("Sin + random")); | ||||
QGroupBox *groupBox = new QGroupBox("Data Characteristics"); | ||||
groupBox->setLayout(layout); | ||||
Tero Ahola
|
r376 | selectRadio(groupBox, 0); | ||
Tero Ahola
|
r278 | |||
return groupBox; | ||||
} | ||||
Tero Ahola
|
r20 | void DataSerieDialog::accept() | ||
Tero Ahola
|
r19 | { | ||
Tero Ahola
|
r278 | accepted(radioSelection(m_seriesTypeSelector), | ||
radioSelection(m_columnCountSelector).toInt(), | ||||
radioSelection(m_rowCountSelector).toInt(), | ||||
radioSelection(m_dataCharacteristicsSelector), | ||||
m_labelsSelector->isChecked()); | ||||
Tero Ahola
|
r20 | QDialog::accept(); | ||
Tero Ahola
|
r19 | } | ||
Tero Ahola
|
r278 | |||
Tero Ahola
|
r376 | void DataSerieDialog::selectRadio(QGroupBox *groupBox, int defaultSelection) | ||
{ | ||||
QVBoxLayout *layout = qobject_cast<QVBoxLayout *>(groupBox->layout()); | ||||
Q_ASSERT(layout); | ||||
Q_ASSERT(layout->count()); | ||||
QLayoutItem *item = 0; | ||||
if (defaultSelection == -1) { | ||||
item = layout->itemAt(0); | ||||
} else if (layout->count() > defaultSelection) { | ||||
item = layout->itemAt(defaultSelection); | ||||
} | ||||
Q_ASSERT(item); | ||||
QRadioButton *radio = qobject_cast<QRadioButton *>(item->widget()); | ||||
Q_ASSERT(radio); | ||||
radio->setChecked(true); | ||||
} | ||||
Tero Ahola
|
r278 | QString DataSerieDialog::radioSelection(QGroupBox *groupBox) | ||
{ | ||||
QString selection; | ||||
QVBoxLayout *layout = qobject_cast<QVBoxLayout *>(groupBox->layout()); | ||||
Q_ASSERT(layout); | ||||
for (int i(0); i < layout->count(); i++) { | ||||
QLayoutItem *item = layout->itemAt(i); | ||||
Q_ASSERT(item); | ||||
QRadioButton *radio = qobject_cast<QRadioButton *>(item->widget()); | ||||
Q_ASSERT(radio); | ||||
if (radio->isChecked()) { | ||||
selection = radio->text(); | ||||
break; | ||||
} | ||||
} | ||||
qDebug() << "radioSelection: " << selection; | ||||
return selection; | ||||
} | ||||