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