dataseriedialog.cpp
187 lines
| 6.0 KiB
| text/x-c
|
CppLexer
Miikka Heikkinen
|
r2734 | /**************************************************************************** | ||
** | ||||
Titta Heikkala
|
r2776 | ** Copyright (C) 2015 The Qt Company Ltd | ||
Miikka Heikkinen
|
r2734 | ** All rights reserved. | ||
Titta Heikkala
|
r2776 | ** For any questions to The Qt Company, please use contact form at http://qt.io | ||
Miikka Heikkinen
|
r2734 | ** | ||
Titta Heikkala
|
r2740 | ** This file is part of the Qt Charts module. | ||
Miikka Heikkinen
|
r2734 | ** | ||
Titta Heikkala
|
r2740 | ** Licensees holding valid commercial license for Qt may use this file in | ||
** accordance with the Qt License Agreement provided with the Software | ||||
** or, alternatively, in accordance with the terms contained in a written | ||||
Titta Heikkala
|
r2776 | ** agreement between you and The Qt Company. | ||
Miikka Heikkinen
|
r2734 | ** | ||
** If you have questions regarding the use of this file, please use | ||||
Titta Heikkala
|
r2740 | ** contact form at http://qt.io | ||
Miikka Heikkinen
|
r2734 | ** | ||
****************************************************************************/ | ||||
#include "dataseriedialog.h" | ||||
#include <QtWidgets/QDialogButtonBox> | ||||
#include <QtWidgets/QGridLayout> | ||||
#include <QtWidgets/QCheckBox> | ||||
#include <QtWidgets/QPushButton> | ||||
#include <QtWidgets/QGroupBox> | ||||
#include <QtWidgets/QRadioButton> | ||||
#include <QtWidgets/QLabel> | ||||
#include <QtCore/QDebug> | ||||
DataSerieDialog::DataSerieDialog(QWidget *parent) : | ||||
QDialog(parent) | ||||
{ | ||||
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(); | ||||
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); | ||||
setLayout(grid); | ||||
} | ||||
QGroupBox *DataSerieDialog::seriesTypeSelector() | ||||
{ | ||||
QVBoxLayout *layout = new QVBoxLayout(); | ||||
QRadioButton *line = new QRadioButton("Line"); | ||||
line->setChecked(true); | ||||
layout->addWidget(line); | ||||
layout->addWidget(new QRadioButton("Area")); | ||||
layout->addWidget(new QRadioButton("Pie")); | ||||
layout->addWidget(new QRadioButton("Bar")); | ||||
layout->addWidget(new QRadioButton("Stacked bar")); | ||||
layout->addWidget(new QRadioButton("Percent bar")); | ||||
layout->addWidget(new QRadioButton("Scatter")); | ||||
layout->addWidget(new QRadioButton("Spline")); | ||||
QGroupBox *groupBox = new QGroupBox("Series type"); | ||||
groupBox->setLayout(layout); | ||||
selectRadio(groupBox, 0); | ||||
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")); | ||||
layout->addWidget(new QRadioButton("4")); | ||||
layout->addWidget(new QRadioButton("5")); | ||||
layout->addWidget(new QRadioButton("8")); | ||||
layout->addWidget(new QRadioButton("10")); | ||||
layout->addWidget(new QRadioButton("100")); | ||||
QGroupBox *groupBox = new QGroupBox("Column count"); | ||||
groupBox->setLayout(layout); | ||||
selectRadio(groupBox, 0); | ||||
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")); | ||||
layout->addWidget(new QRadioButton("1000")); | ||||
layout->addWidget(new QRadioButton("10000")); | ||||
layout->addWidget(new QRadioButton("100000")); | ||||
layout->addWidget(new QRadioButton("1000000")); | ||||
QGroupBox *groupBox = new QGroupBox("Row count"); | ||||
groupBox->setLayout(layout); | ||||
selectRadio(groupBox, 0); | ||||
return groupBox; | ||||
} | ||||
QGroupBox *DataSerieDialog::dataCharacteristicsSelector() | ||||
{ | ||||
QVBoxLayout *layout = new QVBoxLayout(); | ||||
layout->addWidget(new QRadioButton("Linear")); | ||||
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); | ||||
selectRadio(groupBox, 0); | ||||
return groupBox; | ||||
} | ||||
void DataSerieDialog::accept() | ||||
{ | ||||
accepted(radioSelection(m_seriesTypeSelector), | ||||
radioSelection(m_columnCountSelector).toInt(), | ||||
radioSelection(m_rowCountSelector).toInt(), | ||||
radioSelection(m_dataCharacteristicsSelector), | ||||
m_labelsSelector->isChecked()); | ||||
QDialog::accept(); | ||||
} | ||||
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); | ||||
} | ||||
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; | ||||
} | ||||