##// END OF EJS Templates
Add more themes to piechartcustomization
Jani Honkonen -
r658:6c43bf929dc5
parent child
Show More
@@ -1,605 +1,610
1 1 #include <QtGui/QApplication>
2 2 #include <QMainWindow>
3 3 #include <qchartglobal.h>
4 4 #include <qchartview.h>
5 5 #include <qpieseries.h>
6 6 #include <qpieslice.h>
7 7 #include <QGridLayout>
8 8 #include <QFormLayout>
9 9 #include <QComboBox>
10 10 #include <QSpinBox>
11 11 #include <QCheckBox>
12 12 #include <QGroupBox>
13 13 #include <QLabel>
14 14 #include <QPushButton>
15 15 #include <QColorDialog>
16 16 #include <QFontDialog>
17 17
18 18 QTCOMMERCIALCHART_USE_NAMESPACE
19 19
20 20 class PenTool : public QWidget
21 21 {
22 22 Q_OBJECT
23 23
24 24 public:
25 25 explicit PenTool(QString title, QWidget *parent = 0)
26 26 :QWidget(parent)
27 27 {
28 28 setWindowTitle(title);
29 29 setWindowFlags(Qt::Tool);
30 30
31 31 m_colorButton = new QPushButton();
32 32
33 33 m_widthSpinBox = new QDoubleSpinBox();
34 34
35 35 m_styleCombo = new QComboBox();
36 36 m_styleCombo->addItem("NoPen");
37 37 m_styleCombo->addItem("SolidLine");
38 38 m_styleCombo->addItem("DashLine");
39 39 m_styleCombo->addItem("DotLine");
40 40 m_styleCombo->addItem("DashDotLine");
41 41 m_styleCombo->addItem("DashDotDotLine");
42 42
43 43 m_capStyleCombo = new QComboBox();
44 44 m_capStyleCombo->addItem("FlatCap", Qt::FlatCap);
45 45 m_capStyleCombo->addItem("SquareCap", Qt::SquareCap);
46 46 m_capStyleCombo->addItem("RoundCap", Qt::RoundCap);
47 47
48 48 m_joinStyleCombo = new QComboBox();
49 49 m_joinStyleCombo->addItem("MiterJoin", Qt::MiterJoin);
50 50 m_joinStyleCombo->addItem("BevelJoin", Qt::BevelJoin);
51 51 m_joinStyleCombo->addItem("RoundJoin", Qt::RoundJoin);
52 52 m_joinStyleCombo->addItem("SvgMiterJoin", Qt::SvgMiterJoin);
53 53
54 54 QFormLayout *layout = new QFormLayout();
55 55 layout->addRow("Color", m_colorButton);
56 56 layout->addRow("Width", m_widthSpinBox);
57 57 layout->addRow("Style", m_styleCombo);
58 58 layout->addRow("Cap style", m_capStyleCombo);
59 59 layout->addRow("Join style", m_joinStyleCombo);
60 60 setLayout(layout);
61 61
62 62 connect(m_colorButton, SIGNAL(clicked()), this, SLOT(showColorDialog()));
63 63 connect(m_widthSpinBox, SIGNAL(valueChanged(double)), this, SLOT(updateWidth(double)));
64 64 connect(m_styleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(updateStyle(int)));
65 65 connect(m_capStyleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(updateCapStyle(int)));
66 66 connect(m_joinStyleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(updateJoinStyle(int)));
67 67 }
68 68
69 69 void setPen(QPen pen)
70 70 {
71 71 m_pen = pen;
72 72 m_colorButton->setText(m_pen.color().name());
73 73 m_widthSpinBox->setValue(m_pen.widthF());
74 74 m_styleCombo->setCurrentIndex(m_pen.style()); // index matches the enum
75 75 m_capStyleCombo->setCurrentIndex(m_capStyleCombo->findData(m_pen.capStyle()));
76 76 m_joinStyleCombo->setCurrentIndex(m_joinStyleCombo->findData(m_pen.joinStyle()));
77 77 }
78 78
79 79 QPen pen() const
80 80 {
81 81 return m_pen;
82 82 }
83 83
84 84 QString name()
85 85 {
86 86 return name(m_pen);
87 87 }
88 88
89 89 static QString name(const QPen &pen)
90 90 {
91 91 return pen.color().name() + ":" + QString::number(pen.widthF());
92 92 }
93 93
94 94 Q_SIGNALS:
95 95 void changed();
96 96
97 97 public Q_SLOTS:
98 98
99 99 void showColorDialog()
100 100 {
101 101 QColorDialog dialog(m_pen.color());
102 102 dialog.show();
103 103 dialog.exec();
104 104 m_pen.setColor(dialog.selectedColor());
105 105 m_colorButton->setText(m_pen.color().name());
106 106 emit changed();
107 107 }
108 108
109 109 void updateWidth(double width)
110 110 {
111 111 if (width != m_pen.widthF()) {
112 112 m_pen.setWidthF(width);
113 113 emit changed();
114 114 }
115 115 }
116 116
117 117 void updateStyle(int style)
118 118 {
119 119 if (m_pen.style() != style) {
120 120 m_pen.setStyle((Qt::PenStyle) style);
121 121 emit changed();
122 122 }
123 123 }
124 124
125 125 void updateCapStyle(int index)
126 126 {
127 127 Qt::PenCapStyle capStyle = (Qt::PenCapStyle) m_capStyleCombo->itemData(index).toInt();
128 128 if (m_pen.capStyle() != capStyle) {
129 129 m_pen.setCapStyle(capStyle);
130 130 emit changed();
131 131 }
132 132 }
133 133
134 134 void updateJoinStyle(int index)
135 135 {
136 136 Qt::PenJoinStyle joinStyle = (Qt::PenJoinStyle) m_joinStyleCombo->itemData(index).toInt();
137 137 if (m_pen.joinStyle() != joinStyle) {
138 138 m_pen.setJoinStyle(joinStyle);
139 139 emit changed();
140 140 }
141 141 }
142 142
143 143 private:
144 144 QPen m_pen;
145 145 QPushButton *m_colorButton;
146 146 QDoubleSpinBox *m_widthSpinBox;
147 147 QComboBox *m_styleCombo;
148 148 QComboBox *m_capStyleCombo;
149 149 QComboBox *m_joinStyleCombo;
150 150 };
151 151
152 152 class BrushTool : public QWidget
153 153 {
154 154 Q_OBJECT
155 155
156 156 public:
157 157 explicit BrushTool(QString title, QWidget *parent = 0)
158 158 :QWidget(parent)
159 159 {
160 160 setWindowTitle(title);
161 161 setWindowFlags(Qt::Tool);
162 162
163 163 m_colorButton = new QPushButton();
164 164 m_styleCombo = new QComboBox();
165 165 m_styleCombo->addItem("Nobrush", Qt::NoBrush);
166 166 m_styleCombo->addItem("Solidpattern", Qt::SolidPattern);
167 167 m_styleCombo->addItem("Dense1pattern", Qt::Dense1Pattern);
168 168 m_styleCombo->addItem("Dense2attern", Qt::Dense2Pattern);
169 169 m_styleCombo->addItem("Dense3Pattern", Qt::Dense3Pattern);
170 170 m_styleCombo->addItem("Dense4Pattern", Qt::Dense4Pattern);
171 171 m_styleCombo->addItem("Dense5Pattern", Qt::Dense5Pattern);
172 172 m_styleCombo->addItem("Dense6Pattern", Qt::Dense6Pattern);
173 173 m_styleCombo->addItem("Dense7Pattern", Qt::Dense7Pattern);
174 174 m_styleCombo->addItem("HorPattern", Qt::HorPattern);
175 175 m_styleCombo->addItem("VerPattern", Qt::VerPattern);
176 176 m_styleCombo->addItem("CrossPattern", Qt::CrossPattern);
177 177 m_styleCombo->addItem("BDiagPattern", Qt::BDiagPattern);
178 178 m_styleCombo->addItem("FDiagPattern", Qt::FDiagPattern);
179 179 m_styleCombo->addItem("DiagCrossPattern", Qt::DiagCrossPattern);
180 180
181 181 QFormLayout *layout = new QFormLayout();
182 182 layout->addRow("Color", m_colorButton);
183 183 layout->addRow("Style", m_styleCombo);
184 184 setLayout(layout);
185 185
186 186 connect(m_colorButton, SIGNAL(clicked()), this, SLOT(showColorDialog()));
187 187 connect(m_styleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(updateStyle()));
188 188 }
189 189
190 190 void setBrush(QBrush brush)
191 191 {
192 192 m_brush = brush;
193 193 m_colorButton->setText(m_brush.color().name());
194 194 m_styleCombo->setCurrentIndex(m_brush.style()); // index matches the enum
195 195 }
196 196
197 197 QBrush brush() const
198 198 {
199 199 return m_brush;
200 200 }
201 201
202 202 QString name()
203 203 {
204 204 return name(m_brush);
205 205 }
206 206
207 207 static QString name(const QBrush &brush)
208 208 {
209 209 return brush.color().name();
210 210 }
211 211
212 212 Q_SIGNALS:
213 213 void changed();
214 214
215 215 public Q_SLOTS:
216 216
217 217 void showColorDialog()
218 218 {
219 219 QColorDialog dialog(m_brush.color());
220 220 dialog.show();
221 221 dialog.exec();
222 222 m_brush.setColor(dialog.selectedColor());
223 223 m_colorButton->setText(m_brush.color().name());
224 224 emit changed();
225 225 }
226 226
227 227 void updateStyle()
228 228 {
229 229 Qt::BrushStyle style = (Qt::BrushStyle) m_styleCombo->itemData(m_styleCombo->currentIndex()).toInt();
230 230 if (m_brush.style() != style) {
231 231 m_brush.setStyle(style);
232 232 emit changed();
233 233 }
234 234 }
235 235
236 236 private:
237 237 QBrush m_brush;
238 238 QPushButton *m_colorButton;
239 239 QComboBox *m_styleCombo;
240 240 };
241 241
242 242 class CustomSlice : public QPieSlice
243 243 {
244 244 Q_OBJECT
245 245 public:
246 246 CustomSlice(qreal value, QString label)
247 247 :QPieSlice(value, label)
248 248 {
249 249 connect(this, SIGNAL(hoverEnter()), this, SLOT(handleHoverEnter()));
250 250 connect(this, SIGNAL(hoverLeave()), this, SLOT(handleHoverLeave()));
251 251 }
252 252
253 253 public:
254 254 QBrush originalBrush()
255 255 {
256 256 return m_originalBrush;
257 257 }
258 258
259 259 public Q_SLOTS:
260 260
261 261 void handleHoverEnter()
262 262 {
263 263 QBrush brush = this->sliceBrush();
264 264 m_originalBrush = brush;
265 265 brush.setColor(brush.color().lighter());
266 266 setSliceBrush(brush);
267 267 }
268 268
269 269 void handleHoverLeave()
270 270 {
271 271 setSliceBrush(m_originalBrush);
272 272 }
273 273
274 274 private:
275 275 QBrush m_originalBrush;
276 276 };
277 277
278 278 class MainWidget : public QWidget
279 279 {
280 280 Q_OBJECT
281 281
282 282 public:
283 283 explicit MainWidget(QWidget* parent = 0)
284 284 :QWidget(parent),
285 285 m_slice(0)
286 286 {
287 287 // create chart
288 288 m_chartView = new QChartView();
289 289 m_chartView->setChartTitle("Piechart customization");
290 290 m_chartView->setAnimationOptions(QChart::AllAnimations);
291 291
292 292 // create series
293 293 m_series = new QPieSeries();
294 294 *m_series << new CustomSlice(10.0, "Slice 1");
295 295 *m_series << new CustomSlice(20.0, "Slice 2");
296 296 *m_series << new CustomSlice(30.0, "Slice 3");
297 297 *m_series << new CustomSlice(40.0, "Slice 4");
298 298 *m_series << new CustomSlice(50.0, "Slice 5");
299 299 m_chartView->addSeries(m_series);
300 300
301 301 connect(m_series, SIGNAL(clicked(QPieSlice*)), this, SLOT(handleSliceClicked(QPieSlice*)));
302 302
303 303 // chart settings
304 304 m_themeComboBox = new QComboBox();
305 305 m_themeComboBox->addItem("Default", QChart::ChartThemeDefault);
306 m_themeComboBox->addItem("Light", QChart::ChartThemeLight);
307 m_themeComboBox->addItem("BlueCerulean", QChart::ChartThemeBlueCerulean);
308 m_themeComboBox->addItem("Dark", QChart::ChartThemeDark);
309 m_themeComboBox->addItem("BrownSand", QChart::ChartThemeBrownSand);
310 m_themeComboBox->addItem("BlueNcs", QChart::ChartThemeBlueNcs);
306 311 m_themeComboBox->addItem("Vanilla", QChart::ChartThemeVanilla);
307 312 m_themeComboBox->addItem("Icy", QChart::ChartThemeIcy);
308 313 m_themeComboBox->addItem("Grayscale", QChart::ChartThemeGrayscale);
309 314 m_themeComboBox->addItem("Scientific", QChart::ChartThemeScientific);
310 315
311 316 m_aaCheckBox = new QCheckBox();
312 317 m_animationsCheckBox = new QCheckBox();
313 318 m_animationsCheckBox->setCheckState(Qt::Checked);
314 319
315 320 QFormLayout* chartSettingsLayout = new QFormLayout();
316 321 chartSettingsLayout->addRow("Theme", m_themeComboBox);
317 322 chartSettingsLayout->addRow("Antialiasing", m_aaCheckBox);
318 323 chartSettingsLayout->addRow("Animations", m_animationsCheckBox);
319 324 QGroupBox* chartSettings = new QGroupBox("Chart");
320 325 chartSettings->setLayout(chartSettingsLayout);
321 326
322 327 connect(m_themeComboBox, SIGNAL(currentIndexChanged(int)), this ,SLOT(updateChartSettings()));
323 328 connect(m_aaCheckBox, SIGNAL(toggled(bool)), this ,SLOT(updateChartSettings()));
324 329 connect(m_animationsCheckBox, SIGNAL(toggled(bool)), this ,SLOT(updateChartSettings()));
325 330
326 331 // series settings
327 332 m_hPosition = new QDoubleSpinBox();
328 333 m_hPosition->setMinimum(0.0);
329 334 m_hPosition->setMaximum(1.0);
330 335 m_hPosition->setSingleStep(0.1);
331 336 m_hPosition->setValue(m_series->pieHorizontalPosition());
332 337
333 338 m_vPosition = new QDoubleSpinBox();
334 339 m_vPosition->setMinimum(0.0);
335 340 m_vPosition->setMaximum(1.0);
336 341 m_vPosition->setSingleStep(0.1);
337 342 m_vPosition->setValue(m_series->pieVerticalPosition());
338 343
339 344 m_sizeFactor = new QDoubleSpinBox();
340 345 m_sizeFactor->setMinimum(0.0);
341 346 m_sizeFactor->setMaximum(1.0);
342 347 m_sizeFactor->setSingleStep(0.1);
343 348 m_sizeFactor->setValue(m_series->pieSize());
344 349
345 350 m_startAngle = new QDoubleSpinBox();
346 351 m_startAngle->setMinimum(0.0);
347 352 m_startAngle->setMaximum(360);
348 353 m_startAngle->setValue(m_series->pieStartAngle());
349 354 m_startAngle->setSingleStep(1);
350 355
351 356 m_endAngle = new QDoubleSpinBox();
352 357 m_endAngle->setMinimum(0.0);
353 358 m_endAngle->setMaximum(360);
354 359 m_endAngle->setValue(m_series->pieEndAngle());
355 360 m_endAngle->setSingleStep(1);
356 361
357 362 QPushButton *addSlice = new QPushButton("Add slice");
358 363 QPushButton *insertSlice = new QPushButton("Insert slice");
359 364
360 365 QFormLayout* seriesSettingsLayout = new QFormLayout();
361 366 seriesSettingsLayout->addRow("Horizontal position", m_hPosition);
362 367 seriesSettingsLayout->addRow("Vertical position", m_vPosition);
363 368 seriesSettingsLayout->addRow("Size factor", m_sizeFactor);
364 369 seriesSettingsLayout->addRow("Start angle", m_startAngle);
365 370 seriesSettingsLayout->addRow("End angle", m_endAngle);
366 371 seriesSettingsLayout->addRow(addSlice);
367 372 seriesSettingsLayout->addRow(insertSlice);
368 373 QGroupBox* seriesSettings = new QGroupBox("Series");
369 374 seriesSettings->setLayout(seriesSettingsLayout);
370 375
371 376 connect(m_vPosition, SIGNAL(valueChanged(double)), this, SLOT(updateSerieSettings()));
372 377 connect(m_hPosition, SIGNAL(valueChanged(double)), this, SLOT(updateSerieSettings()));
373 378 connect(m_sizeFactor, SIGNAL(valueChanged(double)), this, SLOT(updateSerieSettings()));
374 379 connect(m_startAngle, SIGNAL(valueChanged(double)), this, SLOT(updateSerieSettings()));
375 380 connect(m_endAngle, SIGNAL(valueChanged(double)), this, SLOT(updateSerieSettings()));
376 381 connect(addSlice, SIGNAL(clicked()), this, SLOT(addSlice()));
377 382 connect(insertSlice, SIGNAL(clicked()), this, SLOT(insertSlice()));
378 383
379 384 // slice settings
380 385 m_sliceName = new QLabel("<click a slice>");
381 386 m_sliceValue = new QDoubleSpinBox();
382 387 m_sliceValue->setMaximum(1000);
383 388 m_sliceLabelVisible = new QCheckBox();
384 389 m_sliceLabelArmFactor = new QDoubleSpinBox();
385 390 m_sliceLabelArmFactor->setSingleStep(0.01);
386 391 m_sliceExploded = new QCheckBox();
387 392 m_sliceExplodedFactor = new QDoubleSpinBox();
388 393 m_sliceExplodedFactor->setSingleStep(0.01);
389 394 m_pen = new QPushButton();
390 395 m_penTool = new PenTool("Slice pen", this);
391 396 m_brush = new QPushButton();
392 397 m_brushTool = new BrushTool("Slice brush", this);
393 398 m_font = new QPushButton();
394 399 m_labelArmPen = new QPushButton();
395 400 m_labelArmPenTool = new PenTool("Label arm pen", this);
396 401 QPushButton *removeSlice = new QPushButton("Remove slice");
397 402
398 403 QFormLayout* sliceSettingsLayout = new QFormLayout();
399 404 sliceSettingsLayout->addRow("Selected", m_sliceName);
400 405 sliceSettingsLayout->addRow("Value", m_sliceValue);
401 406 sliceSettingsLayout->addRow("Pen", m_pen);
402 407 sliceSettingsLayout->addRow("Brush", m_brush);
403 408 sliceSettingsLayout->addRow("Label visible", m_sliceLabelVisible);
404 409 sliceSettingsLayout->addRow("Label font", m_font);
405 410 sliceSettingsLayout->addRow("Label arm pen", m_labelArmPen);
406 411 sliceSettingsLayout->addRow("Label arm length", m_sliceLabelArmFactor);
407 412 sliceSettingsLayout->addRow("Exploded", m_sliceExploded);
408 413 sliceSettingsLayout->addRow("Explode distance", m_sliceExplodedFactor);
409 414 sliceSettingsLayout->addRow(removeSlice);
410 415 QGroupBox* sliceSettings = new QGroupBox("Slice");
411 416 sliceSettings->setLayout(sliceSettingsLayout);
412 417
413 418 connect(m_sliceValue, SIGNAL(valueChanged(double)), this, SLOT(updateSliceSettings()));
414 419 connect(m_pen, SIGNAL(clicked()), m_penTool, SLOT(show()));
415 420 connect(m_penTool, SIGNAL(changed()), this, SLOT(updateSliceSettings()));
416 421 connect(m_brush, SIGNAL(clicked()), m_brushTool, SLOT(show()));
417 422 connect(m_brushTool, SIGNAL(changed()), this, SLOT(updateSliceSettings()));
418 423 connect(m_font, SIGNAL(clicked()), this, SLOT(showFontDialog()));
419 424 connect(m_labelArmPen, SIGNAL(clicked()), m_labelArmPenTool, SLOT(show()));
420 425 connect(m_labelArmPenTool, SIGNAL(changed()), this, SLOT(updateSliceSettings()));
421 426 connect(m_sliceLabelVisible, SIGNAL(toggled(bool)), this, SLOT(updateSliceSettings()));
422 427 connect(m_sliceLabelVisible, SIGNAL(toggled(bool)), this, SLOT(updateSliceSettings()));
423 428 connect(m_sliceLabelArmFactor, SIGNAL(valueChanged(double)), this, SLOT(updateSliceSettings()));
424 429 connect(m_sliceExploded, SIGNAL(toggled(bool)), this, SLOT(updateSliceSettings()));
425 430 connect(m_sliceExplodedFactor, SIGNAL(valueChanged(double)), this, SLOT(updateSliceSettings()));
426 431 connect(removeSlice, SIGNAL(clicked()), this, SLOT(removeSlice()));
427 432
428 433 // create main layout
429 434 QVBoxLayout *settingsLayout = new QVBoxLayout();
430 435 settingsLayout->addWidget(chartSettings);
431 436 settingsLayout->addWidget(seriesSettings);
432 437 settingsLayout->addWidget(sliceSettings);
433 438 settingsLayout->addStretch();
434 439
435 440 QGridLayout* baseLayout = new QGridLayout();
436 441 baseLayout->addLayout(settingsLayout, 0, 0);
437 442 baseLayout->addWidget(m_chartView, 0, 1);
438 443 setLayout(baseLayout);
439 444
440 445 updateSerieSettings();
441 446 }
442 447
443 448 public Q_SLOTS:
444 449
445 450 void updateChartSettings()
446 451 {
447 452 QChart::ChartTheme theme = (QChart::ChartTheme) m_themeComboBox->itemData(m_themeComboBox->currentIndex()).toInt();
448 453 m_chartView->setChartTheme(theme);
449 454 m_chartView->setRenderHint(QPainter::Antialiasing, m_aaCheckBox->isChecked());
450 455
451 456 if (m_animationsCheckBox->checkState() == Qt::Checked)
452 457 m_chartView->setAnimationOptions(QChart::AllAnimations);
453 458 else
454 459 m_chartView->setAnimationOptions(QChart::NoAnimation);
455 460 }
456 461
457 462 void updateSerieSettings()
458 463 {
459 464 m_series->setPiePosition(m_hPosition->value(), m_vPosition->value());
460 465 m_series->setPieSize(m_sizeFactor->value());
461 466 m_series->setPieStartAngle(m_startAngle->value());
462 467 m_series->setPieEndAngle(m_endAngle->value());
463 468 }
464 469
465 470 void updateSliceSettings()
466 471 {
467 472 if (!m_slice)
468 473 return;
469 474
470 475 m_slice->setValue(m_sliceValue->value());
471 476
472 477 m_slice->setSlicePen(m_penTool->pen());
473 478 m_slice->setSliceBrush(m_brushTool->brush());
474 479
475 480 m_slice->setLabelArmPen(m_labelArmPenTool->pen());
476 481 m_slice->setLabelVisible(m_sliceLabelVisible->isChecked());
477 482 m_slice->setLabelArmLengthFactor(m_sliceLabelArmFactor->value());
478 483
479 484 m_slice->setExploded(m_sliceExploded->isChecked());
480 485 m_slice->setExplodeDistanceFactor(m_sliceExplodedFactor->value());
481 486 }
482 487
483 488 void handleSliceClicked(QPieSlice* slice)
484 489 {
485 490 m_slice = static_cast<CustomSlice*>(slice);
486 491
487 492 // name
488 493 m_sliceName->setText(slice->label());
489 494
490 495 // value
491 496 m_sliceValue->blockSignals(true);
492 497 m_sliceValue->setValue(slice->value());
493 498 m_sliceValue->blockSignals(false);
494 499
495 500 // pen
496 501 m_pen->setText(PenTool::name(m_slice->slicePen()));
497 502 m_penTool->setPen(m_slice->slicePen());
498 503
499 504 // brush
500 505 m_brush->setText(m_slice->originalBrush().color().name());
501 506 m_brushTool->setBrush(m_slice->originalBrush());
502 507
503 508 // label
504 509 m_labelArmPen->setText(PenTool::name(m_slice->labelArmPen()));
505 510 m_labelArmPenTool->setPen(m_slice->labelArmPen());
506 511 m_font->setText(slice->labelFont().toString());
507 512 m_sliceLabelVisible->blockSignals(true);
508 513 m_sliceLabelVisible->setChecked(slice->isLabelVisible());
509 514 m_sliceLabelVisible->blockSignals(false);
510 515 m_sliceLabelArmFactor->blockSignals(true);
511 516 m_sliceLabelArmFactor->setValue(slice->labelArmLengthFactor());
512 517 m_sliceLabelArmFactor->blockSignals(false);
513 518
514 519 // exploded
515 520 m_sliceExploded->blockSignals(true);
516 521 m_sliceExploded->setChecked(slice->isExploded());
517 522 m_sliceExploded->blockSignals(false);
518 523 m_sliceExplodedFactor->blockSignals(true);
519 524 m_sliceExplodedFactor->setValue(slice->explodeDistanceFactor());
520 525 m_sliceExplodedFactor->blockSignals(false);
521 526 }
522 527
523 528 void showFontDialog()
524 529 {
525 530 if (!m_slice)
526 531 return;
527 532
528 533 QFontDialog dialog(m_slice->labelFont());
529 534 dialog.show();
530 535 dialog.exec();
531 536
532 537 m_slice->setLabelFont(dialog.currentFont());
533 538 m_font->setText(dialog.currentFont().toString());
534 539 }
535 540
536 541 void addSlice()
537 542 {
538 543 *m_series << new CustomSlice(10.0, "Slice " + QString::number(m_series->count()+1));
539 544 }
540 545
541 546 void insertSlice()
542 547 {
543 548 if (!m_slice)
544 549 return;
545 550
546 551 int i = m_series->slices().indexOf(m_slice);
547 552
548 553 m_series->insert(i, new CustomSlice(10.0, "Slice " + QString::number(m_series->count()+1)));
549 554 }
550 555
551 556 void removeSlice()
552 557 {
553 558 if (!m_slice)
554 559 return;
555 560
556 561 m_series->remove(m_slice);
557 562 m_slice = 0;
558 563 }
559 564
560 565 private:
561 566 QComboBox *m_themeComboBox;
562 567 QCheckBox *m_aaCheckBox;
563 568 QCheckBox *m_animationsCheckBox;
564 569
565 570 QChartView* m_chartView;
566 571 QPieSeries* m_series;
567 572 CustomSlice* m_slice;
568 573
569 574 QDoubleSpinBox* m_hPosition;
570 575 QDoubleSpinBox* m_vPosition;
571 576 QDoubleSpinBox* m_sizeFactor;
572 577 QDoubleSpinBox* m_startAngle;
573 578 QDoubleSpinBox* m_endAngle;
574 579
575 580 QLabel* m_sliceName;
576 581 QDoubleSpinBox* m_sliceValue;
577 582 QCheckBox* m_sliceLabelVisible;
578 583 QDoubleSpinBox* m_sliceLabelArmFactor;
579 584 QCheckBox* m_sliceExploded;
580 585 QDoubleSpinBox* m_sliceExplodedFactor;
581 586 QPushButton *m_brush;
582 587 BrushTool *m_brushTool;
583 588 QPushButton *m_pen;
584 589 PenTool *m_penTool;
585 590 QPushButton *m_font;
586 591 QPushButton *m_labelArmPen;
587 592 PenTool *m_labelArmPenTool;
588 593 };
589 594
590 595 int main(int argc, char *argv[])
591 596 {
592 597 QApplication a(argc, argv);
593 598
594 599 QMainWindow window;
595 600
596 601 MainWidget* widget = new MainWidget();
597 602
598 603 window.setCentralWidget(widget);
599 604 window.resize(900, 600);
600 605 window.show();
601 606
602 607 return a.exec();
603 608 }
604 609
605 610 #include "main.moc"
General Comments 0
You need to be logged in to leave comments. Login now