##// END OF EJS Templates
Implements qbarcategoriesaxis logic...
Michal Klocek -
r1725:251205c7e45d
parent child
Show More
@@ -0,0 +1,5
1 !include( ../auto.pri ) {
2 error( "Couldn't find the auto.pri file!" )
3 }
4 HEADERS += ../qabstractaxis/tst_qabstractaxis.h
5 SOURCES += tst_qbarcategoriesaxis.cpp ../qabstractaxis/tst_qabstractaxis.cpp
This diff has been collapsed as it changes many lines, (702 lines changed) Show them Hide them
@@ -0,0 +1,702
1 /****************************************************************************
2 **
3 ** Copyright (C) 2012 Digia Plc
4 ** All rights reserved.
5 ** For any questions to Digia, please use contact form at http://qt.digia.com
6 **
7 ** This file is part of the Qt Commercial Charts Add-on.
8 **
9 ** $QT_BEGIN_LICENSE$
10 ** Licensees holding valid Qt Commercial licenses may use this file in
11 ** accordance with the Qt Commercial License Agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and Digia.
14 **
15 ** If you have questions regarding the use of this file, please use
16 ** contact form at http://qt.digia.com
17 ** $QT_END_LICENSE$
18 **
19 ****************************************************************************/
20
21 #include "../qabstractaxis/tst_qabstractaxis.h"
22 #include <qbarseries.h>
23 #include <qbarset.h>
24 #include <qbarcategoriesaxis.h>
25
26 class tst_QBarCategoriesAxis: public tst_QAbstractAxis
27 {
28 Q_OBJECT
29
30 public slots:
31 void initTestCase();
32 void cleanupTestCase();
33 void init();
34 void cleanup();
35
36 private slots:
37 void qbarcategoriesaxis_data();
38 void qbarcategoriesaxis();
39
40 void append_data();
41 void append();
42 void at_data();
43 void at();
44 void categories_data();
45 void categories();
46 void clear_data();
47 void clear();
48 void count_data();
49 void count();
50 void insert_data();
51 void insert();
52 void max_data();
53 void max();
54 void min_data();
55 void min();
56 void remove_data();
57 void remove();
58 void setCategories_data();
59 void setCategories();
60 void setMax_data();
61 void setMax();
62 void setMin_data();
63 void setMin();
64 void setRange_data();
65 void setRange();
66 void type_data();
67 void type();
68 void categoriesChanged_data();
69 void categoriesChanged();
70 void maxChanged_data();
71 void maxChanged();
72 void minChanged_data();
73 void minChanged();
74 void rangeChanged_data();
75 void rangeChanged();
76 private:
77 QBarCategoriesAxis* m_baraxis;
78 QBarSeries* m_series;
79 };
80
81 void tst_QBarCategoriesAxis::initTestCase()
82 {
83 }
84
85 void tst_QBarCategoriesAxis::cleanupTestCase()
86 {
87 }
88
89 void tst_QBarCategoriesAxis::init()
90 {
91 m_baraxis = new QBarCategoriesAxis();
92 m_series = new QBarSeries();
93
94 QBarSet *set0 = new QBarSet("Jane");
95 QBarSet *set1 = new QBarSet("John");
96 QBarSet *set2 = new QBarSet("Axel");
97 QBarSet *set3 = new QBarSet("Mary");
98 QBarSet *set4 = new QBarSet("Samantha");
99
100 *set0 << 1 << 2 << 3 << 4 << 5 << 6;
101 *set1 << 5 << 0 << 0 << 4 << 0 << 7;
102 *set2 << 3 << 5 << 8 << 13 << 8 << 5;
103 *set3 << 5 << 6 << 7 << 3 << 4 << 5;
104 *set4 << 9 << 7 << 5 << 3 << 1 << 2;
105
106 m_series->append(set0);
107 m_series->append(set1);
108 m_series->append(set2);
109 m_series->append(set3);
110 m_series->append(set4);
111
112 QStringList categories;
113 categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun";
114
115 m_baraxis->append(categories);
116
117 tst_QAbstractAxis::init(m_baraxis, m_series);
118 m_chart->addSeries(m_series);
119 m_chart->createDefaultAxes();
120 }
121
122 void tst_QBarCategoriesAxis::cleanup()
123 {
124 delete m_series;
125 delete m_baraxis;
126 m_series = 0;
127 m_baraxis = 0;
128 tst_QAbstractAxis::cleanup();
129 }
130
131 void tst_QBarCategoriesAxis::qbarcategoriesaxis_data()
132 {
133 }
134
135 void tst_QBarCategoriesAxis::qbarcategoriesaxis()
136 {
137 qabstractaxis();
138 QBarCategoriesAxis axis;
139 axis.append(QStringList());
140 axis.append(QString());
141 QCOMPARE(axis.at(0), QString());
142 QStringList test;
143 test.append(QString());
144 QCOMPARE(axis.categories(),test);
145 axis.clear();
146 QCOMPARE(axis.count(), 0);
147 axis.insert(-1, QString());
148 QCOMPARE(axis.max(), QString());
149 QCOMPARE(axis.min(), QString());
150 axis.remove(QString());
151 axis.setCategories(QStringList());
152 axis.setMax(QString());
153 axis.setMin(QString());
154 axis.setRange(QString(), QString());
155 QCOMPARE(axis.type(), QAbstractAxis::AxisTypeCategories);
156 }
157
158 void tst_QBarCategoriesAxis::append_data()
159 {
160 QTest::addColumn<QStringList>("categories");
161 QTest::newRow("null") << QStringList();
162 }
163
164 // public void append(QStringList const& categories)
165 void tst_QBarCategoriesAxis::append()
166 {
167 #if 0
168 QFETCH(QStringList, categories);
169
170 SubQBarCategoriesAxis axis;
171
172 QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
173 QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString const&)));
174 QSignalSpy spy2(&axis, SIGNAL(minChanged(QString const&)));
175 QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString const&, QString const&)));
176
177 axis.append(categories);
178
179 QCOMPARE(spy0.count(), 0);
180 QCOMPARE(spy1.count(), 0);
181 QCOMPARE(spy2.count(), 0);
182 QCOMPARE(spy3.count(), 0);
183 #endif
184 QSKIP("Test is not implemented.", SkipAll);
185 }
186
187 void tst_QBarCategoriesAxis::at_data()
188 {
189 QTest::addColumn<int>("index");
190 QTest::addColumn<QString>("at");
191 QTest::newRow("null") << 0 << QString();
192 }
193
194 // public QString at(int index) const
195 void tst_QBarCategoriesAxis::at()
196 {
197 #if 0
198 QFETCH(int, index);
199 QFETCH(QString, at);
200
201 SubQBarCategoriesAxis axis;
202
203 QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
204 QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString const&)));
205 QSignalSpy spy2(&axis, SIGNAL(minChanged(QString const&)));
206 QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString const&, QString const&)));
207
208 QCOMPARE(axis.at(index), at);
209
210 QCOMPARE(spy0.count(), 0);
211 QCOMPARE(spy1.count(), 0);
212 QCOMPARE(spy2.count(), 0);
213 QCOMPARE(spy3.count(), 0);
214 #endif
215 QSKIP("Test is not implemented.", SkipAll);
216 }
217
218 void tst_QBarCategoriesAxis::categories_data()
219 {
220 QTest::addColumn<QStringList>("categories");
221 QTest::newRow("null") << QStringList();
222 }
223
224 // public QStringList categories()
225 void tst_QBarCategoriesAxis::categories()
226 {
227 #if 0
228 QFETCH(QStringList, categories);
229
230 SubQBarCategoriesAxis axis;
231
232 QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
233 QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString const&)));
234 QSignalSpy spy2(&axis, SIGNAL(minChanged(QString const&)));
235 QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString const&, QString const&)));
236
237 QCOMPARE(axis.categories(), categories);
238
239 QCOMPARE(spy0.count(), 0);
240 QCOMPARE(spy1.count(), 0);
241 QCOMPARE(spy2.count(), 0);
242 QCOMPARE(spy3.count(), 0);
243 #endif
244 QSKIP("Test is not implemented.", SkipAll);
245 }
246
247 void tst_QBarCategoriesAxis::clear_data()
248 {
249 QTest::addColumn<int>("foo");
250 QTest::newRow("0") << 0;
251 QTest::newRow("-1") << -1;
252 }
253
254 // public void clear()
255 void tst_QBarCategoriesAxis::clear()
256 {
257 #if 0
258 QFETCH(int, foo);
259
260 SubQBarCategoriesAxis axis;
261
262 QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
263 QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString const&)));
264 QSignalSpy spy2(&axis, SIGNAL(minChanged(QString const&)));
265 QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString const&, QString const&)));
266
267 axis.clear();
268
269 QCOMPARE(spy0.count(), 0);
270 QCOMPARE(spy1.count(), 0);
271 QCOMPARE(spy2.count(), 0);
272 QCOMPARE(spy3.count(), 0);
273 #endif
274 QSKIP("Test is not implemented.", SkipAll);
275 }
276
277 void tst_QBarCategoriesAxis::count_data()
278 {
279 QTest::addColumn<int>("count");
280 QTest::newRow("0") << 0;
281 QTest::newRow("-1") << -1;
282 }
283
284 // public int count() const
285 void tst_QBarCategoriesAxis::count()
286 {
287 #if 0
288 QFETCH(int, count);
289
290 SubQBarCategoriesAxis axis;
291
292 QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
293 QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString const&)));
294 QSignalSpy spy2(&axis, SIGNAL(minChanged(QString const&)));
295 QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString const&, QString const&)));
296
297 QCOMPARE(axis.count(), count);
298
299 QCOMPARE(spy0.count(), 0);
300 QCOMPARE(spy1.count(), 0);
301 QCOMPARE(spy2.count(), 0);
302 QCOMPARE(spy3.count(), 0);
303 #endif
304 QSKIP("Test is not implemented.", SkipAll);
305 }
306
307 void tst_QBarCategoriesAxis::insert_data()
308 {
309 QTest::addColumn<int>("index");
310 QTest::addColumn<QString>("category");
311 QTest::newRow("null") << 0 << QString();
312 }
313
314 // public void insert(int index, QString const& category)
315 void tst_QBarCategoriesAxis::insert()
316 {
317 #if 0
318 QFETCH(int, index);
319 QFETCH(QString, category);
320
321 SubQBarCategoriesAxis axis;
322
323 QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
324 QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString const&)));
325 QSignalSpy spy2(&axis, SIGNAL(minChanged(QString const&)));
326 QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString const&, QString const&)));
327
328 axis.insert(index, category);
329
330 QCOMPARE(spy0.count(), 0);
331 QCOMPARE(spy1.count(), 0);
332 QCOMPARE(spy2.count(), 0);
333 QCOMPARE(spy3.count(), 0);
334 #endif
335 QSKIP("Test is not implemented.", SkipAll);
336 }
337
338 void tst_QBarCategoriesAxis::max_data()
339 {
340 QTest::addColumn<QString>("max");
341 QTest::newRow("null") << QString();
342 QTest::newRow("foo") << QString("foo");
343 }
344
345 // public QString max() const
346 void tst_QBarCategoriesAxis::max()
347 {
348 #if 0
349 QFETCH(QString, max);
350
351 SubQBarCategoriesAxis axis;
352
353 QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
354 QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString const&)));
355 QSignalSpy spy2(&axis, SIGNAL(minChanged(QString const&)));
356 QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString const&, QString const&)));
357
358 QCOMPARE(axis.max(), max);
359
360 QCOMPARE(spy0.count(), 0);
361 QCOMPARE(spy1.count(), 0);
362 QCOMPARE(spy2.count(), 0);
363 QCOMPARE(spy3.count(), 0);
364 #endif
365 QSKIP("Test is not implemented.", SkipAll);
366 }
367
368 void tst_QBarCategoriesAxis::min_data()
369 {
370 QTest::addColumn<QString>("min");
371 QTest::newRow("null") << QString();
372 QTest::newRow("foo") << QString("foo");
373 }
374
375 // public QString min() const
376 void tst_QBarCategoriesAxis::min()
377 {
378 #if 0
379 QFETCH(QString, min);
380
381 SubQBarCategoriesAxis axis;
382
383 QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
384 QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString const&)));
385 QSignalSpy spy2(&axis, SIGNAL(minChanged(QString const&)));
386 QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString const&, QString const&)));
387
388 QCOMPARE(axis.min(), min);
389
390 QCOMPARE(spy0.count(), 0);
391 QCOMPARE(spy1.count(), 0);
392 QCOMPARE(spy2.count(), 0);
393 QCOMPARE(spy3.count(), 0);
394 #endif
395 QSKIP("Test is not implemented.", SkipAll);
396 }
397
398 void tst_QBarCategoriesAxis::remove_data()
399 {
400 QTest::addColumn<QString>("category");
401 QTest::newRow("null") << QString();
402 QTest::newRow("foo") << QString("foo");
403 }
404
405 // public void remove(QString const& category)
406 void tst_QBarCategoriesAxis::remove()
407 {
408 #if 0
409 QFETCH(QString, category);
410
411 SubQBarCategoriesAxis axis;
412
413 QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
414 QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString const&)));
415 QSignalSpy spy2(&axis, SIGNAL(minChanged(QString const&)));
416 QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString const&, QString const&)));
417
418 axis.remove(category);
419
420 QCOMPARE(spy0.count(), 0);
421 QCOMPARE(spy1.count(), 0);
422 QCOMPARE(spy2.count(), 0);
423 QCOMPARE(spy3.count(), 0);
424 #endif
425 QSKIP("Test is not implemented.", SkipAll);
426 }
427
428 void tst_QBarCategoriesAxis::setCategories_data()
429 {
430 QTest::addColumn<QStringList>("categories");
431 QTest::newRow("null") << QStringList();
432 }
433
434 // public void setCategories(QStringList const& categories)
435 void tst_QBarCategoriesAxis::setCategories()
436 {
437 #if 0
438 QFETCH(QStringList, categories);
439
440 SubQBarCategoriesAxis axis;
441
442 QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
443 QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString const&)));
444 QSignalSpy spy2(&axis, SIGNAL(minChanged(QString const&)));
445 QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString const&, QString const&)));
446
447 axis.setCategories(categories);
448
449 QCOMPARE(spy0.count(), 0);
450 QCOMPARE(spy1.count(), 0);
451 QCOMPARE(spy2.count(), 0);
452 QCOMPARE(spy3.count(), 0);
453 #endif
454 QSKIP("Test is not implemented.", SkipAll);
455 }
456
457 void tst_QBarCategoriesAxis::setMax_data()
458 {
459 QTest::addColumn<QString>("maxCategory");
460 QTest::newRow("null") << QString();
461 QTest::newRow("foo") << QString("foo");
462 }
463
464 // public void setMax(QString const& maxCategory)
465 void tst_QBarCategoriesAxis::setMax()
466 {
467 #if 0
468 QFETCH(QString, maxCategory);
469
470 SubQBarCategoriesAxis axis;
471
472 QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
473 QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString const&)));
474 QSignalSpy spy2(&axis, SIGNAL(minChanged(QString const&)));
475 QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString const&, QString const&)));
476
477 axis.setMax(maxCategory);
478
479 QCOMPARE(spy0.count(), 0);
480 QCOMPARE(spy1.count(), 0);
481 QCOMPARE(spy2.count(), 0);
482 QCOMPARE(spy3.count(), 0);
483 #endif
484 QSKIP("Test is not implemented.", SkipAll);
485 }
486
487 void tst_QBarCategoriesAxis::setMin_data()
488 {
489 QTest::addColumn<QString>("minCategory");
490 QTest::newRow("null") << QString();
491 QTest::newRow("foo") << QString("foo");
492 }
493
494 // public void setMin(QString const& minCategory)
495 void tst_QBarCategoriesAxis::setMin()
496 {
497 #if 0
498 QFETCH(QString, minCategory);
499
500 SubQBarCategoriesAxis axis;
501
502 QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
503 QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString const&)));
504 QSignalSpy spy2(&axis, SIGNAL(minChanged(QString const&)));
505 QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString const&, QString const&)));
506
507 axis.setMin(minCategory);
508
509 QCOMPARE(spy0.count(), 0);
510 QCOMPARE(spy1.count(), 0);
511 QCOMPARE(spy2.count(), 0);
512 QCOMPARE(spy3.count(), 0);
513 #endif
514 QSKIP("Test is not implemented.", SkipAll);
515 }
516
517 void tst_QBarCategoriesAxis::setRange_data()
518 {
519 QTest::addColumn<QString>("minCategory");
520 QTest::addColumn<QString>("maxCategory");
521 QTest::newRow("null") << QString() << QString();
522 }
523
524 // public void setRange(QString const& minCategory, QString const& maxCategory)
525 void tst_QBarCategoriesAxis::setRange()
526 {
527 #if 0
528 QFETCH(QString, minCategory);
529 QFETCH(QString, maxCategory);
530
531 SubQBarCategoriesAxis axis;
532
533 QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
534 QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString const&)));
535 QSignalSpy spy2(&axis, SIGNAL(minChanged(QString const&)));
536 QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString const&, QString const&)));
537
538 axis.setRange(minCategory, maxCategory);
539
540 QCOMPARE(spy0.count(), 0);
541 QCOMPARE(spy1.count(), 0);
542 QCOMPARE(spy2.count(), 0);
543 QCOMPARE(spy3.count(), 0);
544 #endif
545 QSKIP("Test is not implemented.", SkipAll);
546 }
547
548 void tst_QBarCategoriesAxis::type_data()
549 {
550 #if 0
551 QTest::addColumn<AxisType>("type");
552 QTest::newRow("null") << AxisType();
553 #endif
554 }
555
556 // public AxisType type() const
557 void tst_QBarCategoriesAxis::type()
558 {
559 #if 0
560 QFETCH(AxisType, type);
561
562 SubQBarCategoriesAxis axis;
563
564 QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
565 QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString const&)));
566 QSignalSpy spy2(&axis, SIGNAL(minChanged(QString const&)));
567 QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString const&, QString const&)));
568
569 QCOMPARE(axis.type(), type);
570
571 QCOMPARE(spy0.count(), 0);
572 QCOMPARE(spy1.count(), 0);
573 QCOMPARE(spy2.count(), 0);
574 QCOMPARE(spy3.count(), 0);
575 #endif
576 QSKIP("Test is not implemented.", SkipAll);
577 }
578
579 void tst_QBarCategoriesAxis::categoriesChanged_data()
580 {
581 QTest::addColumn<int>("foo");
582 QTest::newRow("0") << 0;
583 QTest::newRow("-1") << -1;
584 }
585
586 // protected void categoriesChanged()
587 void tst_QBarCategoriesAxis::categoriesChanged()
588 {
589 #if 0
590 QFETCH(int, foo);
591
592 SubQBarCategoriesAxis axis;
593
594 QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
595 QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString const&)));
596 QSignalSpy spy2(&axis, SIGNAL(minChanged(QString const&)));
597 QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString const&, QString const&)));
598
599 axis.call_categoriesChanged();
600
601 QCOMPARE(spy0.count(), 0);
602 QCOMPARE(spy1.count(), 0);
603 QCOMPARE(spy2.count(), 0);
604 QCOMPARE(spy3.count(), 0);
605 #endif
606 QSKIP("Test is not implemented.", SkipAll);
607 }
608
609 void tst_QBarCategoriesAxis::maxChanged_data()
610 {
611 QTest::addColumn<QString>("max");
612 QTest::newRow("null") << QString();
613 QTest::newRow("foo") << QString("foo");
614 }
615
616 // protected void maxChanged(QString const& max)
617 void tst_QBarCategoriesAxis::maxChanged()
618 {
619 #if 0
620 QFETCH(QString, max);
621
622 SubQBarCategoriesAxis axis;
623
624 QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
625 QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString const&)));
626 QSignalSpy spy2(&axis, SIGNAL(minChanged(QString const&)));
627 QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString const&, QString const&)));
628
629 axis.call_maxChanged(max);
630
631 QCOMPARE(spy0.count(), 0);
632 QCOMPARE(spy1.count(), 0);
633 QCOMPARE(spy2.count(), 0);
634 QCOMPARE(spy3.count(), 0);
635 #endif
636 QSKIP("Test is not implemented.", SkipAll);
637 }
638
639 void tst_QBarCategoriesAxis::minChanged_data()
640 {
641 QTest::addColumn<QString>("min");
642 QTest::newRow("null") << QString();
643 QTest::newRow("foo") << QString("foo");
644 }
645
646 // protected void minChanged(QString const& min)
647 void tst_QBarCategoriesAxis::minChanged()
648 {
649 #if 0
650 QFETCH(QString, min);
651
652 SubQBarCategoriesAxis axis;
653
654 QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
655 QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString const&)));
656 QSignalSpy spy2(&axis, SIGNAL(minChanged(QString const&)));
657 QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString const&, QString const&)));
658
659 axis.call_minChanged(min);
660
661 QCOMPARE(spy0.count(), 0);
662 QCOMPARE(spy1.count(), 0);
663 QCOMPARE(spy2.count(), 0);
664 QCOMPARE(spy3.count(), 0);
665 #endif
666 QSKIP("Test is not implemented.", SkipAll);
667 }
668
669 void tst_QBarCategoriesAxis::rangeChanged_data()
670 {
671 QTest::addColumn<QString>("min");
672 QTest::addColumn<QString>("max");
673 QTest::newRow("null") << QString() << QString();
674 }
675
676 // protected void rangeChanged(QString const& min, QString const& max)
677 void tst_QBarCategoriesAxis::rangeChanged()
678 {
679 #if 0
680 QFETCH(QString, min);
681 QFETCH(QString, max);
682
683 SubQBarCategoriesAxis axis;
684
685 QSignalSpy spy0(&axis, SIGNAL(categoriesChanged()));
686 QSignalSpy spy1(&axis, SIGNAL(maxChanged(QString const&)));
687 QSignalSpy spy2(&axis, SIGNAL(minChanged(QString const&)));
688 QSignalSpy spy3(&axis, SIGNAL(rangeChanged(QString const&, QString const&)));
689
690 axis.call_rangeChanged(min, max);
691
692 QCOMPARE(spy0.count(), 0);
693 QCOMPARE(spy1.count(), 0);
694 QCOMPARE(spy2.count(), 0);
695 QCOMPARE(spy3.count(), 0);
696 #endif
697 QSKIP("Test is not implemented.", SkipAll);
698 }
699
700 QTEST_MAIN(tst_QBarCategoriesAxis)
701 #include "tst_qbarcategoriesaxis.moc"
702
@@ -40,12 +40,14 ChartCategoriesAxisX::~ChartCategoriesAxisX()
40
40
41 QVector<qreal> ChartCategoriesAxisX::calculateLayout() const
41 QVector<qreal> ChartCategoriesAxisX::calculateLayout() const
42 {
42 {
43 Q_ASSERT(m_categoriesAxis->categories().count()>=1);
43 int count = m_categoriesAxis->d_ptr->count();
44
45 Q_ASSERT(count>=1);
44
46
45 QVector<qreal> points;
47 QVector<qreal> points;
46 points.resize(m_categoriesAxis->categories().count()+2);
48 points.resize(count+2);
47
49
48 const qreal delta = m_rect.width()/(m_categoriesAxis->categories().count());
50 const qreal delta = m_rect.width()/(count);
49 qreal offset =-m_min-0.5;
51 qreal offset =-m_min-0.5;
50
52
51 if(offset<=0) {
53 if(offset<=0) {
@@ -56,9 +58,9 QVector<qreal> ChartCategoriesAxisX::calculateLayout() const
56 }
58 }
57
59
58 points[0] = m_rect.left();
60 points[0] = m_rect.left();
59 points[m_categoriesAxis->categories().count()+1] = m_rect.right();
61 points[count+1] = m_rect.right();
60
62
61 for (int i = 0; i < m_categoriesAxis->categories().count(); ++i) {
63 for (int i = 0; i < count; ++i) {
62 qreal x = offset + i * delta + m_rect.left();
64 qreal x = offset + i * delta + m_rect.left();
63 points[i+1] = x;
65 points[i+1] = x;
64 }
66 }
@@ -103,7 +105,7 void ChartCategoriesAxisX::updateGeometry()
103 Q_ASSERT(labels.size() == ticksList.size());
105 Q_ASSERT(labels.size() == ticksList.size());
104 Q_ASSERT(layout.size() == ticksList.size());
106 Q_ASSERT(layout.size() == ticksList.size());
105
107
106 const qreal delta = m_rect.width()/(m_categoriesAxis->categories().count());
108 const qreal delta = m_rect.width()/(m_categoriesAxis->d_ptr->count());
107
109
108 QGraphicsLineItem *lineItem = static_cast<QGraphicsLineItem*>(axis.at(0));
110 QGraphicsLineItem *lineItem = static_cast<QGraphicsLineItem*>(axis.at(0));
109 lineItem->setLine(m_rect.left(), m_rect.bottom(), m_rect.right(), m_rect.bottom());
111 lineItem->setLine(m_rect.left(), m_rect.bottom(), m_rect.right(), m_rect.bottom());
@@ -149,7 +151,7 void ChartCategoriesAxisX::handleAxisUpdated()
149 if(m_categoriesAxis->categories()!=m_categories)
151 if(m_categoriesAxis->categories()!=m_categories)
150 {
152 {
151 m_categories=m_categoriesAxis->categories();
153 m_categories=m_categoriesAxis->categories();
152 if(ChartAxis::layout().count()==m_categories.size()+1) updateGeometry();
154 if(ChartAxis::layout().count()==m_categoriesAxis->d_ptr->count()+2) updateGeometry();
153 }
155 }
154 ChartAxis::handleAxisUpdated();
156 ChartAxis::handleAxisUpdated();
155 }
157 }
@@ -38,12 +38,14 ChartCategoriesAxisY::~ChartCategoriesAxisY()
38
38
39 QVector<qreal> ChartCategoriesAxisY::calculateLayout() const
39 QVector<qreal> ChartCategoriesAxisY::calculateLayout() const
40 {
40 {
41 Q_ASSERT(m_categoriesAxis->categories().count()>=1);
41 int count = m_categoriesAxis->d_ptr->count();
42
43 Q_ASSERT(count>=1);
42
44
43 QVector<qreal> points;
45 QVector<qreal> points;
44 points.resize(m_categoriesAxis->categories().count()+2);
46 points.resize(count+2);
45
47
46 const qreal delta = m_rect.height()/(m_categoriesAxis->categories().count());
48 const qreal delta = m_rect.height()/(count);
47 qreal offset = - m_min - 0.5;
49 qreal offset = - m_min - 0.5;
48
50
49 if(offset<=0) {
51 if(offset<=0) {
@@ -54,9 +56,9 QVector<qreal> ChartCategoriesAxisY::calculateLayout() const
54 }
56 }
55
57
56 points[0] = m_rect.bottom();
58 points[0] = m_rect.bottom();
57 points[m_categoriesAxis->categories().count()+1] = m_rect.top();
59 points[count+1] = m_rect.top();
58
60
59 for (int i = 0; i < m_categoriesAxis->categories().count(); ++i) {
61 for (int i = 0; i < count; ++i) {
60 int y = m_rect.bottom() - i * delta - offset;
62 int y = m_rect.bottom() - i * delta - offset;
61 points[i+1] = y;
63 points[i+1] = y;
62 }
64 }
@@ -100,7 +102,7 void ChartCategoriesAxisY::updateGeometry()
100 Q_ASSERT(labels.size() == ticksList.size());
102 Q_ASSERT(labels.size() == ticksList.size());
101 Q_ASSERT(layout.size() == ticksList.size());
103 Q_ASSERT(layout.size() == ticksList.size());
102
104
103 const qreal delta = m_rect.height()/(m_categoriesAxis->categories().count());
105 const qreal delta = m_rect.height()/(m_categoriesAxis->d_ptr->count());
104
106
105 QGraphicsLineItem *lineItem = static_cast<QGraphicsLineItem*>(axis.at(0));
107 QGraphicsLineItem *lineItem = static_cast<QGraphicsLineItem*>(axis.at(0));
106 lineItem->setLine(m_rect.left() , m_rect.top(), m_rect.left(), m_rect.bottom());
108 lineItem->setLine(m_rect.left() , m_rect.top(), m_rect.left(), m_rect.bottom());
@@ -148,8 +150,7 void ChartCategoriesAxisY::handleAxisUpdated()
148 if(m_categoriesAxis->categories()!=m_categories)
150 if(m_categoriesAxis->categories()!=m_categories)
149 {
151 {
150 m_categories=m_categoriesAxis->categories();
152 m_categories=m_categoriesAxis->categories();
151 if(ChartAxis::layout().count()==m_categories.size()+1) {
153 if(ChartAxis::layout().count()==m_categoriesAxis->d_ptr->count()+2) {
152
153 updateGeometry();
154 updateGeometry();
154 }
155 }
155 }
156 }
@@ -55,7 +55,6 Q_SLOTS
55 void handleAxisUpdated();
55 void handleAxisUpdated();
56 private:
56 private:
57 QStringList m_categories;
57 QStringList m_categories;
58 QVector<int> m_labelIndex;
59 QBarCategoriesAxis *m_categoriesAxis;
58 QBarCategoriesAxis *m_categoriesAxis;
60 };
59 };
61
60
@@ -23,8 +23,8
23 #include "chartcategoriesaxisx_p.h"
23 #include "chartcategoriesaxisx_p.h"
24 #include "chartcategoriesaxisy_p.h"
24 #include "chartcategoriesaxisy_p.h"
25 #include "domain_p.h"
25 #include "domain_p.h"
26 #include "chartdataset_p.h"
26 #include <qmath.h>
27 #include <qmath.h>
27 #include <QDebug>
28
28
29 QTCOMMERCIALCHART_BEGIN_NAMESPACE
29 QTCOMMERCIALCHART_BEGIN_NAMESPACE
30 /*!
30 /*!
@@ -124,6 +124,10 QBarCategoriesAxis::QBarCategoriesAxis(QObject *parent):
124 */
124 */
125 QBarCategoriesAxis::~QBarCategoriesAxis()
125 QBarCategoriesAxis::~QBarCategoriesAxis()
126 {
126 {
127 Q_D(QBarCategoriesAxis);
128 if(d->m_dataset){
129 d->m_dataset->removeAxis(this);
130 }
127 }
131 }
128
132
129 /*!
133 /*!
@@ -176,7 +180,10 void QBarCategoriesAxis::remove(const QString &category)
176 Q_D(QBarCategoriesAxis);
180 Q_D(QBarCategoriesAxis);
177 if (d->m_categories.contains(category)) {
181 if (d->m_categories.contains(category)) {
178 d->m_categories.removeAt(d->m_categories.indexOf(category));
182 d->m_categories.removeAt(d->m_categories.indexOf(category));
179 setRange(d->m_categories.first(),d->m_categories.last());
183 if(!d->m_categories.isEmpty())
184 setRange(d->m_categories.first(),d->m_categories.last());
185 else
186 setRange(QString::null,QString::null);
180 emit d->updated();
187 emit d->updated();
181 emit categoriesChanged();
188 emit categoriesChanged();
182 }
189 }
@@ -251,12 +258,7 QString QBarCategoriesAxis::at(int index) const
251 void QBarCategoriesAxis::setMin(const QString& min)
258 void QBarCategoriesAxis::setMin(const QString& min)
252 {
259 {
253 Q_D(QBarCategoriesAxis);
260 Q_D(QBarCategoriesAxis);
254 if (d->m_minCategory!=min && d->m_categories.contains(min)) {
261 setRange(min,d->m_maxCategory);
255 d->m_minCategory = min;
256 d->emitUpdated();
257 emit minChanged(min);
258 }
259
260 }
262 }
261
263
262 /*!
264 /*!
@@ -274,12 +276,7 QString QBarCategoriesAxis::min() const
274 void QBarCategoriesAxis::setMax(const QString& max)
276 void QBarCategoriesAxis::setMax(const QString& max)
275 {
277 {
276 Q_D(QBarCategoriesAxis);
278 Q_D(QBarCategoriesAxis);
277 if (d->m_maxCategory!=max && d->m_categories.contains(max)) {
279 setRange(d->m_minCategory,max);
278 d->m_maxCategory = max;
279 d->emitUpdated();
280 emit maxChanged(max);
281 }
282
283 }
280 }
284
281
285 /*!
282 /*!
@@ -296,8 +293,31 QString QBarCategoriesAxis::max() const
296 */
293 */
297 void QBarCategoriesAxis::setRange(const QString& minCategory, const QString& maxCategory)
294 void QBarCategoriesAxis::setRange(const QString& minCategory, const QString& maxCategory)
298 {
295 {
299 setMin(minCategory);
296 Q_D(QBarCategoriesAxis);
300 setMax(maxCategory);
297
298 if(d->m_categories.indexOf(d->m_maxCategory)<d->m_categories.indexOf(d->m_minCategory)) return;
299
300 bool changed = false;
301
302 if (!minCategory.isEmpty() && d->m_minCategory!=minCategory && d->m_categories.contains(minCategory)) {
303 d->m_minCategory = minCategory;
304 d->m_min = d->m_categories.indexOf(d->m_minCategory) - 0.5;
305 changed = true;
306 emit minChanged(minCategory);
307 }
308
309 if (!maxCategory.isEmpty() && d->m_maxCategory!=maxCategory && d->m_categories.contains(maxCategory)) {
310 d->m_maxCategory = maxCategory;
311 d->m_max = d->m_categories.indexOf(d->m_maxCategory) + 0.5;
312 changed = true;
313 emit maxChanged(maxCategory);
314 }
315
316 if (changed) {
317 d->m_count=d->m_max - d->m_min;
318 emit rangeChanged(d->m_minCategory,d->m_maxCategory);
319 d->emitUpdated();
320 }
301 }
321 }
302
322
303 /*!
323 /*!
@@ -313,7 +333,8 QAbstractAxis::AxisType QBarCategoriesAxis::type() const
313 QBarCategoriesAxisPrivate::QBarCategoriesAxisPrivate(QBarCategoriesAxis* q):
333 QBarCategoriesAxisPrivate::QBarCategoriesAxisPrivate(QBarCategoriesAxis* q):
314 QAbstractAxisPrivate(q),
334 QAbstractAxisPrivate(q),
315 m_min(0.0),
335 m_min(0.0),
316 m_max(0.0)
336 m_max(0.0),
337 m_count(0)
317 {
338 {
318
339
319 }
340 }
@@ -341,64 +362,43 void QBarCategoriesAxisPrivate::setRange(const QVariant &min, const QVariant &ma
341 q->setRange(value1,value2);
362 q->setRange(value1,value2);
342 }
363 }
343
364
344 qreal QBarCategoriesAxisPrivate::min()
345 {
346 //TODO:: cache it
347 return m_min;//m_categories.indexOf(m_minCategory) - 0.5;
348 }
349
350 qreal QBarCategoriesAxisPrivate::max()
351 {
352 //TODO:: cache it
353 return m_max;//m_categories.indexOf(m_maxCategory) + 0.5;
354 }
355
356 void QBarCategoriesAxisPrivate::handleDomainUpdated()
365 void QBarCategoriesAxisPrivate::handleDomainUpdated()
357 {
366 {
367 Q_Q(QBarCategoriesAxis);
358 Domain* domain = qobject_cast<Domain*>(sender());
368 Domain* domain = qobject_cast<Domain*>(sender());
359
369
360 if(m_orientation==Qt::Horizontal){
370 if(m_orientation==Qt::Horizontal) {
361 m_min = domain->minX();
371 m_min = domain->minX();
362 m_max = domain->maxX();
372 m_max = domain->maxX();
363 }else if(m_orientation==Qt::Vertical){
373 }
374 else if(m_orientation==Qt::Vertical) {
364 m_min = domain->minY();
375 m_min = domain->minY();
365 m_max = domain->maxY();
376 m_max = domain->maxY();
366 }
377 }
367
378
368 // Q_Q(QBarCategoriesAxis);
379 bool changed = false;
369
370 // TODO: causes crash in some situations. added to known issues
371 /*
372 int minIndex = qFloor(min);
373 int maxIndex = qFloor(max);
374
380
375 if (minIndex < 0) {
381 int min = m_min + 0.5;
376 minIndex = 0;
382 if(min>=0 && min<m_categories.count()) {
377 }
383 QString minCategory = m_categories.at(min);
378 if (maxIndex > m_categories.count()-1){
384 if(m_minCategory!=minCategory && !minCategory.isEmpty()) {
379 maxIndex = m_categories.count()-1;
385 m_minCategory=minCategory;
380 if (maxIndex<0) {
386 changed=true;
381 maxIndex = 0;
387 emit q->minChanged(minCategory);
382 }
388 }
383 }
389 }
384
390 int max = m_max - 0.5;
385 bool changed = false;
391 if(max>=0 && max<m_categories.count()) {
386 if (m_minCategory != m_categories.at(minIndex)) {
392 QString maxCategory = m_categories.at(max);
387 m_minCategory = m_categories.at(minIndex);
393 if(m_maxCategory!=maxCategory && !maxCategory.isEmpty()) {
388 emit q->minChanged(m_minCategory);
394 m_maxCategory=maxCategory;
389 changed = true;
395 emit q->maxChanged(maxCategory);
390 }
396 }
391
392 if (m_maxCategory != m_categories.at(maxIndex)) {
393 m_maxCategory = m_categories.at(maxIndex);
394 emit q->maxChanged(m_maxCategory);
395 changed = true;
396 }
397 }
397
398
398 if (changed) {
399 if (changed) {
399 emit q->rangeChanged(m_minCategory, m_maxCategory);
400 emit q->rangeChanged(m_minCategory,m_maxCategory);
400 }
401 }
401 */
402 }
402 }
403
403
404 ChartAxis* QBarCategoriesAxisPrivate::createGraphics(ChartPresenter* presenter)
404 ChartAxis* QBarCategoriesAxisPrivate::createGraphics(ChartPresenter* presenter)
@@ -411,13 +411,6 ChartAxis* QBarCategoriesAxisPrivate::createGraphics(ChartPresenter* presenter)
411 }
411 }
412 }
412 }
413
413
414 /*
415 void QBarCategoriesAxisPrivate::emitRange()
416 {
417 emit changed(m_min -0.5, m_max +0.5, qCeil(m_max + 0.5) -qCeil(m_min - 0.5) +1, false);
418 }
419 */
420
421 void QBarCategoriesAxisPrivate::intializeDomain(Domain* domain)
414 void QBarCategoriesAxisPrivate::intializeDomain(Domain* domain)
422 {
415 {
423 Q_UNUSED(domain);
416 Q_UNUSED(domain);
@@ -69,6 +69,8 Q_SIGNALS:
69 private:
69 private:
70 Q_DECLARE_PRIVATE(QBarCategoriesAxis)
70 Q_DECLARE_PRIVATE(QBarCategoriesAxis)
71 Q_DISABLE_COPY(QBarCategoriesAxis)
71 Q_DISABLE_COPY(QBarCategoriesAxis)
72 friend class ChartCategoriesAxisX;
73 friend class ChartCategoriesAxisY;
72 };
74 };
73
75
74 QTCOMMERCIALCHART_END_NAMESPACE
76 QTCOMMERCIALCHART_END_NAMESPACE
@@ -49,8 +49,9 public:
49 ChartAxis* createGraphics(ChartPresenter* presenter);
49 ChartAxis* createGraphics(ChartPresenter* presenter);
50 void intializeDomain(Domain* domain);
50 void intializeDomain(Domain* domain);
51 void handleDomainUpdated();
51 void handleDomainUpdated();
52 qreal min();
52 qreal min() { return m_min;};
53 qreal max();
53 qreal max() { return m_max;};
54 int count() const { return m_count; };
54
55
55 private:
56 private:
56 //range handling
57 //range handling
@@ -64,9 +65,10 private:
64 QString m_maxCategory;
65 QString m_maxCategory;
65 qreal m_min;
66 qreal m_min;
66 qreal m_max;
67 qreal m_max;
68 int m_count;
67
69
68 private:
70 private:
69 Q_DECLARE_PUBLIC(QBarCategoriesAxis)
71 Q_DECLARE_PUBLIC(QBarCategoriesAxis);
70 };
72 };
71
73
72 QTCOMMERCIALCHART_END_NAMESPACE
74 QTCOMMERCIALCHART_END_NAMESPACE
@@ -49,6 +49,7 class QDateTimeAxisPrivate : public QAbstractAxisPrivate
49 void handleDomainUpdated();
49 void handleDomainUpdated();
50 qreal min(){ return m_min.toMSecsSinceEpoch(); }
50 qreal min(){ return m_min.toMSecsSinceEpoch(); }
51 qreal max(){ return m_max.toMSecsSinceEpoch(); }
51 qreal max(){ return m_max.toMSecsSinceEpoch(); }
52 int count() const { /*TODO:*/ return 0;};
52
53
53 protected:
54 protected:
54 void setMin(const QVariant &min);
55 void setMin(const QVariant &min);
@@ -190,8 +190,10 int QIntervalsAxisPrivate::ticksCount() const
190 void QIntervalsAxisPrivate::handleAxisRangeChanged(qreal min, qreal max,int count)
190 void QIntervalsAxisPrivate::handleAxisRangeChanged(qreal min, qreal max,int count)
191 {
191 {
192 Q_UNUSED(count);
192 Q_UNUSED(count);
193 m_min = min;
193 Q_UNUSED(min);
194 m_max = max;
194 Q_UNUSED(max);
195 //m_min = min;
196 //m_max = max;
195 }
197 }
196
198
197 ChartAxis* QIntervalsAxisPrivate::createGraphics(ChartPresenter* presenter)
199 ChartAxis* QIntervalsAxisPrivate::createGraphics(ChartPresenter* presenter)
@@ -270,6 +270,7 d_ptr(&d)
270
270
271 QAbstractAxis::~QAbstractAxis()
271 QAbstractAxis::~QAbstractAxis()
272 {
272 {
273 if(d_ptr->m_dataset) qFatal("Still binded axis detected !");
273 }
274 }
274
275
275 /*!
276 /*!
@@ -608,6 +609,7 Qt::Orientation QAbstractAxis::orientation()
608 QAbstractAxisPrivate::QAbstractAxisPrivate(QAbstractAxis* q):
609 QAbstractAxisPrivate::QAbstractAxisPrivate(QAbstractAxis* q):
609 q_ptr(q),
610 q_ptr(q),
610 m_orientation(Qt::Orientation(0)),
611 m_orientation(Qt::Orientation(0)),
612 m_dataset(0),
611 m_visible(false),
613 m_visible(false),
612 m_arrowVisible(true),
614 m_arrowVisible(true),
613 m_gridLineVisible(true),
615 m_gridLineVisible(true),
@@ -37,6 +37,7 QTCOMMERCIALCHART_BEGIN_NAMESPACE
37 class ChartPresenter;
37 class ChartPresenter;
38 class ChartAxis;
38 class ChartAxis;
39 class Domain;
39 class Domain;
40 class ChartDataSet;
40
41
41 class QTCOMMERCIALCHART_AUTOTEST_EXPORT QAbstractAxisPrivate : public QObject
42 class QTCOMMERCIALCHART_AUTOTEST_EXPORT QAbstractAxisPrivate : public QObject
42 {
43 {
@@ -62,6 +63,8 public:
62 virtual void setMax(const QVariant &max) = 0;
63 virtual void setMax(const QVariant &max) = 0;
63 virtual qreal max() = 0;
64 virtual qreal max() = 0;
64
65
66 virtual int count() const = 0;
67
65 virtual void setRange(const QVariant &min, const QVariant &max) = 0;
68 virtual void setRange(const QVariant &min, const QVariant &max) = 0;
66
69
67 public Q_SLOTS:
70 public Q_SLOTS:
@@ -73,6 +76,7 Q_SIGNALS:
73 protected:
76 protected:
74 QAbstractAxis *q_ptr;
77 QAbstractAxis *q_ptr;
75 Qt::Orientation m_orientation;
78 Qt::Orientation m_orientation;
79 ChartDataSet *m_dataset;
76
80
77 private:
81 private:
78 bool m_visible;
82 bool m_visible;
@@ -98,6 +102,7 private:
98 bool m_dirty;
102 bool m_dirty;
99
103
100 friend class QAbstractAxis;
104 friend class QAbstractAxis;
105 friend class ChartDataSet;
101 };
106 };
102
107
103 QTCOMMERCIALCHART_END_NAMESPACE
108 QTCOMMERCIALCHART_END_NAMESPACE
@@ -23,8 +23,9
23 #include "chartvaluesaxisx_p.h"
23 #include "chartvaluesaxisx_p.h"
24 #include "chartvaluesaxisy_p.h"
24 #include "chartvaluesaxisy_p.h"
25 #include "domain_p.h"
25 #include "domain_p.h"
26 #include <cmath>
26 #include "chartdataset_p.h"
27 #include <QDebug>
27 #include <qmath.h>
28
28
29
29 QTCOMMERCIALCHART_BEGIN_NAMESPACE
30 QTCOMMERCIALCHART_BEGIN_NAMESPACE
30 /*!
31 /*!
@@ -139,7 +140,10 QValuesAxis::QValuesAxis(QValuesAxisPrivate &d,QObject *parent) : QAbstractAxis(
139 */
140 */
140 QValuesAxis::~QValuesAxis()
141 QValuesAxis::~QValuesAxis()
141 {
142 {
142
143 Q_D(QValuesAxis);
144 if(d->m_dataset) {
145 d->m_dataset->removeAxis(this);
146 }
143 }
147 }
144
148
145 void QValuesAxis::setMin(qreal min)
149 void QValuesAxis::setMin(qreal min)
@@ -171,6 +175,8 qreal QValuesAxis::max() const
171 */
175 */
172 void QValuesAxis::setRange(qreal min, qreal max)
176 void QValuesAxis::setRange(qreal min, qreal max)
173 {
177 {
178 if(max<min) return;
179
174 Q_D(QValuesAxis);
180 Q_D(QValuesAxis);
175 bool changed = false;
181 bool changed = false;
176
182
@@ -332,8 +338,8 void QValuesAxisPrivate::looseNiceNumbers(qreal &min, qreal &max, int &ticksCoun
332 {
338 {
333 qreal range = niceNumber(max-min,true); //range with ceiling
339 qreal range = niceNumber(max-min,true); //range with ceiling
334 qreal step = niceNumber(range/(ticksCount-1),false);
340 qreal step = niceNumber(range/(ticksCount-1),false);
335 min = floor(min/step);
341 min = qFloor(min/step);
336 max = ceil(max/step);
342 max = qCeil(max/step);
337 ticksCount = int(max-min) +1;
343 ticksCount = int(max-min) +1;
338 min*=step;
344 min*=step;
339 max*=step;
345 max*=step;
@@ -343,7 +349,7 void QValuesAxisPrivate::looseNiceNumbers(qreal &min, qreal &max, int &ticksCoun
343
349
344 qreal QValuesAxisPrivate::niceNumber(qreal x,bool ceiling) const
350 qreal QValuesAxisPrivate::niceNumber(qreal x,bool ceiling) const
345 {
351 {
346 qreal z = pow(10,floor(log10(x))); //find corresponding number of the form of 10^n than is smaller than x
352 qreal z = qPow(10,qFloor(log10(x))); //find corresponding number of the form of 10^n than is smaller than x
347 qreal q = x/z;//q<10 && q>=1;
353 qreal q = x/z;//q<10 && q>=1;
348
354
349 if(ceiling) {
355 if(ceiling) {
@@ -48,18 +48,18 public:
48 void handleDomainUpdated();
48 void handleDomainUpdated();
49 qreal min(){ return m_min; };
49 qreal min(){ return m_min; };
50 qreal max(){ return m_max; };
50 qreal max(){ return m_max; };
51 int count() const { return m_tickCount;}
51
52
52 protected:
53 protected:
53 void setMin(const QVariant &min);
54 void setMin(const QVariant &min);
54 void setMax(const QVariant &max);
55 void setMax(const QVariant &max);
55 void setRange(const QVariant &min, const QVariant &max);
56 void setRange(const QVariant &min, const QVariant &max);
56 int ticksCount() const;
57
57
58 private:
58 private:
59 void looseNiceNumbers(qreal &min, qreal &max, int &ticksCount) const;
59 void looseNiceNumbers(qreal &min, qreal &max, int &ticksCount) const;
60 qreal niceNumber(qreal x,bool ceiling) const;
60 qreal niceNumber(qreal x,bool ceiling) const;
61
61
62 protected:
62 private:
63 qreal m_min;
63 qreal m_min;
64 qreal m_max;
64 qreal m_max;
65 int m_tickCount;
65 int m_tickCount;
@@ -201,10 +201,7 QAbstractBarSeries::QAbstractBarSeries(QObject *parent) :
201 */
201 */
202 QAbstractBarSeries::~QAbstractBarSeries()
202 QAbstractBarSeries::~QAbstractBarSeries()
203 {
203 {
204 Q_D(QAbstractBarSeries);
204
205 if(d->m_dataset){
206 d->m_dataset->removeSeries(this);
207 }
208 }
205 }
209
206
210 /*!
207 /*!
@@ -73,6 +73,14 QAbstractSeries::SeriesType QBarSeries::type() const
73 return QAbstractSeries::SeriesTypeBar;
73 return QAbstractSeries::SeriesTypeBar;
74 }
74 }
75
75
76 QBarSeries::~QBarSeries() {
77
78 Q_D(QBarSeries);
79 if(d->m_dataset) {
80 d->m_dataset->removeSeries(this);
81 }
82
83 }
76 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
84 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
77
85
78 QBarSeriesPrivate::QBarSeriesPrivate(QBarSeries *q) : QAbstractBarSeriesPrivate(q)
86 QBarSeriesPrivate::QBarSeriesPrivate(QBarSeries *q) : QAbstractBarSeriesPrivate(q)
@@ -32,6 +32,7 class QTCOMMERCIALCHART_EXPORT QBarSeries : public QAbstractBarSeries
32 Q_OBJECT
32 Q_OBJECT
33 public:
33 public:
34 explicit QBarSeries(QObject *parent = 0);
34 explicit QBarSeries(QObject *parent = 0);
35 ~QBarSeries();
35 QAbstractSeries::SeriesType type() const;
36 QAbstractSeries::SeriesType type() const;
36
37
37 private:
38 private:
@@ -202,6 +202,7 QAbstractAxis* ChartDataSet::createAxis(QAbstractAxis::AxisType type,Qt::Orienta
202 void ChartDataSet::initializeAxis(QAbstractAxis* axis,QAbstractSeries* series)
202 void ChartDataSet::initializeAxis(QAbstractAxis* axis,QAbstractSeries* series)
203 {
203 {
204 Domain* domain = m_seriesDomainMap.value(series);
204 Domain* domain = m_seriesDomainMap.value(series);
205 axis->d_ptr->m_dataset = this;
205 axis->d_ptr->intializeDomain(domain);
206 axis->d_ptr->intializeDomain(domain);
206 series->d_ptr->initializeAxis(axis);
207 series->d_ptr->initializeAxis(axis);
207 if(axis->orientation()==Qt::Horizontal) {
208 if(axis->orientation()==Qt::Horizontal) {
@@ -227,6 +228,7 void ChartDataSet::removeAxes(QAbstractSeries* series)
227
228
228 if(x==-1) {
229 if(x==-1) {
229 emit axisRemoved(axisX);
230 emit axisRemoved(axisX);
231 axisX->d_ptr->m_dataset=0;
230 axisX->deleteLater();
232 axisX->deleteLater();
231 }
233 }
232 }
234 }
@@ -240,11 +242,38 void ChartDataSet::removeAxes(QAbstractSeries* series)
240
242
241 if(y==-1) {
243 if(y==-1) {
242 emit axisRemoved(axisY);
244 emit axisRemoved(axisY);
245 axisY->d_ptr->m_dataset=0;
243 axisY->deleteLater();
246 axisY->deleteLater();
244 }
247 }
245 }
248 }
246 }
249 }
247
250
251 void ChartDataSet::removeAxis(QAbstractAxis* axis)
252 {
253 if(!axis->d_ptr->m_dataset) {
254 qWarning()<<"UnBound axis found !";
255 return;
256 }
257
258 QMap<QAbstractSeries*, QAbstractAxis*> *seriesAxisMap;
259
260 if(axis->orientation()==Qt::Vertical) {
261 seriesAxisMap= &m_seriesAxisYMap;
262 }
263 else {
264 seriesAxisMap= &m_seriesAxisXMap;
265 }
266
267 QMapIterator<QAbstractSeries*, QAbstractAxis*> i(*seriesAxisMap);
268
269 while (i.hasNext()) {
270 i.next();
271 if(i.value()==axis) {
272 removeSeries(i.key());
273 }
274 }
275 }
276
248 void ChartDataSet::removeAllSeries()
277 void ChartDataSet::removeAllSeries()
249 {
278 {
250 QList<QAbstractSeries*> series = m_seriesDomainMap.keys();
279 QList<QAbstractSeries*> series = m_seriesDomainMap.keys();
@@ -398,6 +427,7 void ChartDataSet::setAxis(QAbstractSeries *series, QAbstractAxis *axis, Qt::Ori
398 if(oldAxis) {
427 if(oldAxis) {
399 if(axes.indexOf(oldAxis)==-1) {
428 if(axes.indexOf(oldAxis)==-1) {
400 emit axisRemoved(oldAxis);
429 emit axisRemoved(oldAxis);
430 oldAxis->d_ptr->m_dataset=0;
401 oldAxis->deleteLater();
431 oldAxis->deleteLater();
402 }
432 }
403 }
433 }
@@ -66,6 +66,7 public:
66 QList<QAbstractSeries*> series() const;
66 QList<QAbstractSeries*> series() const;
67 Domain* domain(QAbstractSeries *series) const;
67 Domain* domain(QAbstractSeries *series) const;
68
68
69 void removeAxis(QAbstractAxis* axis);
69 void createDefaultAxes();
70 void createDefaultAxes();
70
71
71 Q_SIGNALS:
72 Q_SIGNALS:
@@ -22,7 +22,8 SUBDIRS += \
22 qhorizontalpercentbarseries \
22 qhorizontalpercentbarseries \
23 qvaluesaxis \
23 qvaluesaxis \
24 qintervalsaxis \
24 qintervalsaxis \
25 qdatetimeaxis
25 qdatetimeaxis \
26 qbarcategoriesaxis
26
27
27 test_private:{
28 test_private:{
28 SUBDIRS += domain chartdataset
29 SUBDIRS += domain chartdataset
@@ -41,7 +41,6 void tst_QAbstractAxis::init(QAbstractAxis* axis, QAbstractSeries* series)
41
41
42 void tst_QAbstractAxis::cleanup()
42 void tst_QAbstractAxis::cleanup()
43 {
43 {
44
45 delete m_view;
44 delete m_view;
46 m_view = 0;
45 m_view = 0;
47 m_chart = 0;
46 m_chart = 0;
General Comments 0
You need to be logged in to leave comments. Login now