From 173abb78cc611199dd286ac239b4b723ccca4bfa 2012-02-28 09:59:53 From: Tero Ahola Date: 2012-02-28 09:59:53 Subject: [PATCH] Add dialog of chartwidgettest now remembers selections --- diff --git a/test/chartwidgettest/dataseriedialog.cpp b/test/chartwidgettest/dataseriedialog.cpp index 78bd77c..4d2f2eb 100644 --- a/test/chartwidgettest/dataseriedialog.cpp +++ b/test/chartwidgettest/dataseriedialog.cpp @@ -8,7 +8,7 @@ #include #include -DataSerieDialog::DataSerieDialog(QString defaultType, QWidget *parent) : +DataSerieDialog::DataSerieDialog(QWidget *parent) : QDialog(parent) { QDialogButtonBox *addSeriesBox = new QDialogButtonBox(Qt::Horizontal); @@ -53,6 +53,7 @@ QGroupBox *DataSerieDialog::seriesTypeSelector() QGroupBox *groupBox = new QGroupBox("Series type"); groupBox->setLayout(layout); + selectRadio(groupBox, 0); return groupBox; } @@ -72,6 +73,7 @@ QGroupBox *DataSerieDialog::columnCountSelector() QGroupBox *groupBox = new QGroupBox("Column count"); groupBox->setLayout(layout); + selectRadio(groupBox, 0); return groupBox; } @@ -91,6 +93,7 @@ QGroupBox *DataSerieDialog::rowCountSelector() QGroupBox *groupBox = new QGroupBox("Row count"); groupBox->setLayout(layout); + selectRadio(groupBox, 0); return groupBox; } @@ -99,9 +102,7 @@ QGroupBox *DataSerieDialog::dataCharacteristicsSelector() { QVBoxLayout *layout = new QVBoxLayout(); - QRadioButton *radio1 = new QRadioButton("Linear"); - radio1->setChecked(true); - layout->addWidget(radio1); + layout->addWidget(new QRadioButton("Linear")); layout->addWidget(new QRadioButton("Constant")); layout->addWidget(new QRadioButton("Random")); layout->addWidget(new QRadioButton("Sin")); @@ -109,6 +110,7 @@ QGroupBox *DataSerieDialog::dataCharacteristicsSelector() QGroupBox *groupBox = new QGroupBox("Data Characteristics"); groupBox->setLayout(layout); + selectRadio(groupBox, 0); return groupBox; } @@ -123,6 +125,24 @@ void DataSerieDialog::accept() QDialog::accept(); } +void DataSerieDialog::selectRadio(QGroupBox *groupBox, int defaultSelection) +{ + QVBoxLayout *layout = qobject_cast(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(item->widget()); + Q_ASSERT(radio); + radio->setChecked(true); +} + QString DataSerieDialog::radioSelection(QGroupBox *groupBox) { QString selection; diff --git a/test/chartwidgettest/dataseriedialog.h b/test/chartwidgettest/dataseriedialog.h index 9ba83c6..fc016dc 100644 --- a/test/chartwidgettest/dataseriedialog.h +++ b/test/chartwidgettest/dataseriedialog.h @@ -10,7 +10,7 @@ class DataSerieDialog : public QDialog { Q_OBJECT public: - explicit DataSerieDialog(QString defaultType, QWidget *parent = 0); + explicit DataSerieDialog(QWidget *parent = 0); signals: void accepted(QString series, int columnCount, int rowCount, QString dataCharacteristics, bool labelsDefined); @@ -23,6 +23,7 @@ private: QGroupBox *columnCountSelector(); QGroupBox *rowCountSelector(); QGroupBox *dataCharacteristicsSelector(); + void selectRadio(QGroupBox *groupBox, int defaultSelection); QString radioSelection(QGroupBox *groupBox); QGroupBox *m_seriesTypeSelector; QGroupBox *m_columnCountSelector; diff --git a/test/chartwidgettest/mainwidget.cpp b/test/chartwidgettest/mainwidget.cpp index f0b4c76..20518f1 100644 --- a/test/chartwidgettest/mainwidget.cpp +++ b/test/chartwidgettest/mainwidget.cpp @@ -25,7 +25,9 @@ QTCOMMERCIALCHART_USE_NAMESPACE MainWidget::MainWidget(QWidget *parent) : - QWidget(parent) + QWidget(parent), + m_addSerieDialog(0), + m_chartWidget(0) { m_chartWidget = new QChartView(this); m_chartWidget->setRubberBandPolicy(QChartView::HorizonalRubberBand); @@ -163,10 +165,12 @@ void MainWidget::initPieControls() void MainWidget::addSeries() { - DataSerieDialog dialog(m_defaultSeriesName, this); - connect(&dialog, SIGNAL(accepted(QString, int, int, QString, bool)), - this, SLOT(addSeries(QString, int, int, QString, bool))); - dialog.exec(); + if (!m_addSerieDialog) { + m_addSerieDialog = new DataSerieDialog(this); + connect(m_addSerieDialog, SIGNAL(accepted(QString, int, int, QString, bool)), + this, SLOT(addSeries(QString, int, int, QString, bool))); + } + m_addSerieDialog->exec(); } QList MainWidget::generateTestData(int columnCount, int rowCount, QString dataCharacteristics) diff --git a/test/chartwidgettest/mainwidget.h b/test/chartwidgettest/mainwidget.h index 9ddc288..eab37b4 100644 --- a/test/chartwidgettest/mainwidget.h +++ b/test/chartwidgettest/mainwidget.h @@ -12,6 +12,7 @@ class QGridLayout; QTCOMMERCIALCHART_USE_NAMESPACE #define RealList QList +class DataSerieDialog; class MainWidget : public QWidget { @@ -44,6 +45,7 @@ private slots: QStringList generateLabels(int count); private: + DataSerieDialog *m_addSerieDialog; QChartView *m_chartWidget; QCheckBox *m_autoScaleCheck; QSpinBox *m_xMinSpin;