##// END OF EJS Templates
Added test data
Tero Ahola -
r16:1913bd8fedc4
parent child
Show More
@@ -1,167 +1,199
1 #include "mainwidget.h"
1 #include "mainwidget.h"
2 #include "qchartwidget.h"
2 #include "qchartwidget.h"
3 //#include <chartwidget.h>
3 //#include <chartwidget.h>
4 #include <QPushButton>
4 #include <QPushButton>
5 #include <QComboBox>
5 #include <QComboBox>
6 #include <QSpinBox>
6 #include <QSpinBox>
7 #include <QCheckBox>
7 #include <QCheckBox>
8 #include <QGridLayout>
8 #include <QGridLayout>
9 #include <QHBoxLayout>
9 #include <QHBoxLayout>
10 #include <QLabel>
10 #include <QLabel>
11 #include <QSpacerItem>
11 #include <QSpacerItem>
12 #include <QMessageBox>
12 #include <QMessageBox>
13 #include <cmath>
13 #include <cmath>
14 #include <QDebug>
14 #include <QDebug>
15
15
16 MainWidget::MainWidget(QWidget *parent) :
16 MainWidget::MainWidget(QWidget *parent) :
17 QWidget(parent)
17 QWidget(parent)
18 {
18 {
19 m_chartWidget = new QChartWidget(this);
19 m_chartWidget = new QChartWidget(this);
20 // m_chartWidget->resize(QSize(200,200));
20 // m_chartWidget->resize(QSize(200,200));
21 // m_chartWidget->setColor(Qt::red);
21 // m_chartWidget->setColor(Qt::red);
22 // Chart type
22 // Chart type
23 // TODO: How about multiple types?
23 // TODO: How about multiple types?
24 // Should the type be a property of a graph instead of the chart?
24 // Should the type be a property of a graph instead of the chart?
25 QComboBox *chartTypeCombo = new QComboBox(this);
25 QComboBox *chartTypeCombo = new QComboBox(this);
26 chartTypeCombo->addItem("Line");
26 chartTypeCombo->addItem("Line");
27 chartTypeCombo->addItem("Area");
27 chartTypeCombo->addItem("Area");
28 chartTypeCombo->addItem("Bar");
28 chartTypeCombo->addItem("Bar");
29 chartTypeCombo->addItem("Pie");
29 chartTypeCombo->addItem("Pie");
30 chartTypeCombo->addItem("Scatter");
30 chartTypeCombo->addItem("Scatter");
31 chartTypeCombo->addItem("Spline");
31 chartTypeCombo->addItem("Spline");
32 connect(chartTypeCombo, SIGNAL(currentIndexChanged(int)),
32 connect(chartTypeCombo, SIGNAL(currentIndexChanged(int)),
33 this, SLOT(chartTypeChanged(int)));
33 this, SLOT(chartTypeChanged(int)));
34
34
35 // Test data selector
35 // Test data selector
36 QPushButton *fileButton = new QPushButton("From file");
36 QComboBox *testDataCombo = new QComboBox(this);
37 QPushButton *urlButton = new QPushButton("From URL");
37 testDataCombo->addItem("linear");
38 testDataCombo->addItem("SIN");
39 testDataCombo->addItem("SIN + random component");
40 testDataCombo->addItem("TODO From file...");
41 testDataCombo->addItem("TODO From URL...");
42 connect(testDataCombo, SIGNAL(currentIndexChanged(int)),
43 this, SLOT(testDataChanged(int)));
38
44
39 // Chart background
45 // Chart background
40 QComboBox *backgroundCombo = new QComboBox(this);
46 QComboBox *backgroundCombo = new QComboBox(this);
41 backgroundCombo->addItem("todo: add background types");
47 backgroundCombo->addItem("None");
48 backgroundCombo->addItem("TODO Grid");
49 backgroundCombo->addItem("TODO Image");
42 connect(backgroundCombo, SIGNAL(currentIndexChanged(int)),
50 connect(backgroundCombo, SIGNAL(currentIndexChanged(int)),
43 this, SLOT(backgroundChanged(int)));
51 this, SLOT(backgroundChanged(int)));
44
52
45 // Axis
53 // Axis
46 // TODO: multiple axes?
54 // TODO: multiple axes?
47 m_autoScaleCheck = new QCheckBox("Automatic scaling");
55 m_autoScaleCheck = new QCheckBox("Automatic scaling");
48 connect(m_autoScaleCheck, SIGNAL(stateChanged(int)), this, SLOT(autoScaleChanged(int)));
56 connect(m_autoScaleCheck, SIGNAL(stateChanged(int)), this, SLOT(autoScaleChanged(int)));
49 // Allow setting also non-sense values (like -2147483648 and 2147483647)
57 // Allow setting also non-sense values (like -2147483648 and 2147483647)
50 m_xMinSpin = new QSpinBox();
58 m_xMinSpin = new QSpinBox();
51 m_xMinSpin->setMinimum(INT_MIN);
59 m_xMinSpin->setMinimum(INT_MIN);
52 m_xMinSpin->setMaximum(INT_MAX);
60 m_xMinSpin->setMaximum(INT_MAX);
53 m_xMinSpin->setValue(0);
61 m_xMinSpin->setValue(0);
54 connect(m_xMinSpin, SIGNAL(valueChanged(int)), this, SLOT(xMinChanged(int)));
62 connect(m_xMinSpin, SIGNAL(valueChanged(int)), this, SLOT(xMinChanged(int)));
55 m_xMaxSpin = new QSpinBox();
63 m_xMaxSpin = new QSpinBox();
56 m_xMaxSpin->setMinimum(INT_MIN);
64 m_xMaxSpin->setMinimum(INT_MIN);
57 m_xMaxSpin->setMaximum(INT_MAX);
65 m_xMaxSpin->setMaximum(INT_MAX);
58 m_xMaxSpin->setValue(10);
66 m_xMaxSpin->setValue(10);
59 connect(m_xMaxSpin, SIGNAL(valueChanged(int)), this, SLOT(xMaxChanged(int)));
67 connect(m_xMaxSpin, SIGNAL(valueChanged(int)), this, SLOT(xMaxChanged(int)));
60 m_yMinSpin = new QSpinBox();
68 m_yMinSpin = new QSpinBox();
61 m_yMinSpin->setMinimum(INT_MIN);
69 m_yMinSpin->setMinimum(INT_MIN);
62 m_yMinSpin->setMaximum(INT_MAX);
70 m_yMinSpin->setMaximum(INT_MAX);
63 m_yMinSpin->setValue(0);
71 m_yMinSpin->setValue(0);
64 connect(m_yMinSpin, SIGNAL(valueChanged(int)), this, SLOT(yMinChanged(int)));
72 connect(m_yMinSpin, SIGNAL(valueChanged(int)), this, SLOT(yMinChanged(int)));
65 m_yMaxSpin = new QSpinBox();
73 m_yMaxSpin = new QSpinBox();
66 m_yMaxSpin->setMinimum(INT_MIN);
74 m_yMaxSpin->setMinimum(INT_MIN);
67 m_yMaxSpin->setMaximum(INT_MAX);
75 m_yMaxSpin->setMaximum(INT_MAX);
68 m_yMaxSpin->setValue(10);
76 m_yMaxSpin->setValue(10);
69 connect(m_yMaxSpin, SIGNAL(valueChanged(int)), this, SLOT(yMaxChanged(int)));
77 connect(m_yMaxSpin, SIGNAL(valueChanged(int)), this, SLOT(yMaxChanged(int)));
70
78
71 QGridLayout *grid = new QGridLayout();
79 QGridLayout *grid = new QGridLayout();
72 QHBoxLayout *hbox = new QHBoxLayout();
80 QHBoxLayout *hbox = new QHBoxLayout();
73 grid->addWidget(new QLabel("Chart type:"), 0, 0);
81 grid->addWidget(new QLabel("Chart type:"), 0, 0);
74 grid->addWidget(chartTypeCombo, 0, 1, 1, 2);
82 grid->addWidget(chartTypeCombo, 0, 1);
75 grid->addWidget(new QLabel("Data:"), 1, 0);
83 grid->addWidget(new QLabel("Data:"), 1, 0);
76 grid->addWidget(fileButton, 1, 1);
84 grid->addWidget(testDataCombo, 1, 1);
77 grid->addWidget(urlButton, 1, 2);
78 grid->addWidget(new QLabel("Background:"), 2, 0);
85 grid->addWidget(new QLabel("Background:"), 2, 0);
79 grid->addWidget(backgroundCombo, 2, 1, 1, 2);
86 grid->addWidget(backgroundCombo, 2, 1);
80 grid->addWidget(m_autoScaleCheck, 3, 0);
87 grid->addWidget(m_autoScaleCheck, 3, 0);
81 grid->addWidget(new QLabel("x min:"), 4, 0);
88 grid->addWidget(new QLabel("x min:"), 4, 0);
82 grid->addWidget(m_xMinSpin, 4, 1, 1, 2);
89 grid->addWidget(m_xMinSpin, 4, 1);
83 grid->addWidget(new QLabel("x max:"), 5, 0);
90 grid->addWidget(new QLabel("x max:"), 5, 0);
84 grid->addWidget(m_xMaxSpin, 5, 1, 1, 2);
91 grid->addWidget(m_xMaxSpin, 5, 1);
85 grid->addWidget(new QLabel("y min:"), 6, 0);
92 grid->addWidget(new QLabel("y min:"), 6, 0);
86 grid->addWidget(m_yMinSpin, 6, 1, 1, 2);
93 grid->addWidget(m_yMinSpin, 6, 1);
87 grid->addWidget(new QLabel("y max:"), 7, 0);
94 grid->addWidget(new QLabel("y max:"), 7, 0);
88 grid->addWidget(m_yMaxSpin, 7, 1, 1, 2);
95 grid->addWidget(m_yMaxSpin, 7, 1);
89 // add row with empty label to make all the other rows static
96 // add row with empty label to make all the other rows static
90 grid->addWidget(new QLabel(""), 8, 0);
97 grid->addWidget(new QLabel(""), 8, 0);
91 grid->setRowStretch(8, 1);
98 grid->setRowStretch(8, 1);
92
99
93 hbox->addLayout(grid);
100 hbox->addLayout(grid);
94 hbox->addWidget(m_chartWidget);
101 hbox->addWidget(m_chartWidget);
95 hbox->setStretch(1, 1);
102 hbox->setStretch(1, 1);
96
103
97 setLayout(hbox);
104 setLayout(hbox);
98
105
99 m_autoScaleCheck->setChecked(true);
106 m_autoScaleCheck->setChecked(true);
100 chartTypeChanged(4);
107 chartTypeChanged(4);
108 testDataChanged(0);
101 }
109 }
102
110
103 void MainWidget::chartTypeChanged(int itemIndex)
111 void MainWidget::chartTypeChanged(int itemIndex)
104 {
112 {
105 // TODO: change chart type
113 // TODO: change chart type
106 switch (itemIndex) {
114 switch (itemIndex) {
107 case 4: {
115 case 4:
116 m_chartWidget->setType(4);
117 break;
118 default: {
119 m_chartWidget->setType(0);
120 break;
121 }
122 }
123 }
124
125 void MainWidget::testDataChanged(int itemIndex)
126 {
127 qDebug() << "testDataChanged: " << itemIndex;
128
129 switch (itemIndex) {
130 case 0: {
131 QList<QChartDataPoint> data;
132 for (int x = 0; x < 20; x++) {
133 data.append(QChartDataPoint() << x << x / 2);
134 }
135 m_chartWidget->setData(data);
136 break;
137 }
138 case 1: {
139 QList<QChartDataPoint> data;
140 for (int x = 0; x < 100; x++) {
141 data.append(QChartDataPoint() << x - 200 << 2 * (uint(sin(3.14159/50*x)*80) % 100));
142 }
143 m_chartWidget->setData(data);
144 break;
145 }
146 case 2: {
108 QList<QChartDataPoint> data;
147 QList<QChartDataPoint> data;
109 for (int x = 0; x < 1000; ++x) {
148 for (int x = 0; x < 1000; x++) {
110 data.append(QChartDataPoint() << x - 200 << 2 * (uint(sin(3.14159/50*x)*80) % 100) + (rand() % 100 * 0.2));
149 data.append(QChartDataPoint() << x - 200 << 2 * (uint(sin(3.14159/50*x)*80) % 100) + (rand() % 100 * 0.2));
111 data.append(QChartDataPoint() << x - 200 << 2 * (uint(sin(3.14159/50*x)*80) % 100) + (rand() % 100 * 0.2));
150 data.append(QChartDataPoint() << x - 200 << 2 * (uint(sin(3.14159/50*x)*80) % 100) + (rand() % 100 * 0.2));
112 data.append(QChartDataPoint() << x - 200 << 2 * (uint(sin(3.14159/50*x)*80) % 100) + (rand() % 100 * 0.2));
151 data.append(QChartDataPoint() << x - 200 << 2 * (uint(sin(3.14159/50*x)*80) % 100) + (rand() % 100 * 0.2));
113 }
152 }
114 m_chartWidget->setType(4);
115 m_chartWidget->setData(data);
153 m_chartWidget->setData(data);
116 break;
154 break;
117 }
155 }
118 default: {
156 default:
119 m_chartWidget->setType(0);
120 break;
157 break;
121 }
158 }
122 }
123 }
124
159
125 void MainWidget::dataChanged(QString itemText)
126 {
127 qDebug() << "dataChanged: " << itemText;
128 }
160 }
129
161
130 void MainWidget::backgroundChanged(int itemIndex)
162 void MainWidget::backgroundChanged(int itemIndex)
131 {
163 {
132 qDebug() << "backgroundChanged: " << itemIndex;
164 qDebug() << "backgroundChanged: " << itemIndex;
133 }
165 }
134
166
135 void MainWidget::autoScaleChanged(int value)
167 void MainWidget::autoScaleChanged(int value)
136 {
168 {
137 if (value) {
169 if (value) {
138 // TODO: enable auto scaling
170 // TODO: enable auto scaling
139 } else {
171 } else {
140 // TODO: set scaling manually (and disable auto scaling)
172 // TODO: set scaling manually (and disable auto scaling)
141 }
173 }
142
174
143 m_xMinSpin->setEnabled(!value);
175 m_xMinSpin->setEnabled(!value);
144 m_xMaxSpin->setEnabled(!value);
176 m_xMaxSpin->setEnabled(!value);
145 m_yMinSpin->setEnabled(!value);
177 m_yMinSpin->setEnabled(!value);
146 m_yMaxSpin->setEnabled(!value);
178 m_yMaxSpin->setEnabled(!value);
147 }
179 }
148
180
149 void MainWidget::xMinChanged(int value)
181 void MainWidget::xMinChanged(int value)
150 {
182 {
151 qDebug() << "xMinChanged: " << value;
183 qDebug() << "xMinChanged: " << value;
152 }
184 }
153
185
154 void MainWidget::xMaxChanged(int value)
186 void MainWidget::xMaxChanged(int value)
155 {
187 {
156 qDebug() << "xMaxChanged: " << value;
188 qDebug() << "xMaxChanged: " << value;
157 }
189 }
158
190
159 void MainWidget::yMinChanged(int value)
191 void MainWidget::yMinChanged(int value)
160 {
192 {
161 qDebug() << "yMinChanged: " << value;
193 qDebug() << "yMinChanged: " << value;
162 }
194 }
163
195
164 void MainWidget::yMaxChanged(int value)
196 void MainWidget::yMaxChanged(int value)
165 {
197 {
166 qDebug() << "yMaxChanged: " << value;
198 qDebug() << "yMaxChanged: " << value;
167 }
199 }
@@ -1,37 +1,37
1 #ifndef MAINWIDGET_H
1 #ifndef MAINWIDGET_H
2 #define MAINWIDGET_H
2 #define MAINWIDGET_H
3
3
4 #include <QWidget>
4 #include <QWidget>
5
5
6 class QChartWidget;
6 class QChartWidget;
7 class QSpinBox;
7 class QSpinBox;
8 class QCheckBox;
8 class QCheckBox;
9
9
10 class MainWidget : public QWidget
10 class MainWidget : public QWidget
11 {
11 {
12 Q_OBJECT
12 Q_OBJECT
13 public:
13 public:
14 explicit MainWidget(QWidget *parent = 0);
14 explicit MainWidget(QWidget *parent = 0);
15
15
16 signals:
16 signals:
17
17
18 private slots:
18 private slots:
19 void chartTypeChanged(int itemIndex);
19 void chartTypeChanged(int itemIndex);
20 void dataChanged(QString itemText);
20 void testDataChanged(int itemIndex);
21 void backgroundChanged(int itemIndex);
21 void backgroundChanged(int itemIndex);
22 void autoScaleChanged(int value);
22 void autoScaleChanged(int value);
23 void xMinChanged(int value);
23 void xMinChanged(int value);
24 void xMaxChanged(int value);
24 void xMaxChanged(int value);
25 void yMinChanged(int value);
25 void yMinChanged(int value);
26 void yMaxChanged(int value);
26 void yMaxChanged(int value);
27
27
28 private:
28 private:
29 QChartWidget *m_chartWidget;
29 QChartWidget *m_chartWidget;
30 QCheckBox *m_autoScaleCheck;
30 QCheckBox *m_autoScaleCheck;
31 QSpinBox *m_xMinSpin;
31 QSpinBox *m_xMinSpin;
32 QSpinBox *m_xMaxSpin;
32 QSpinBox *m_xMaxSpin;
33 QSpinBox *m_yMinSpin;
33 QSpinBox *m_yMinSpin;
34 QSpinBox *m_yMaxSpin;
34 QSpinBox *m_yMaxSpin;
35 };
35 };
36
36
37 #endif // MAINWIDGET_H
37 #endif // MAINWIDGET_H
General Comments 0
You need to be logged in to leave comments. Login now