##// END OF EJS Templates
legend private implemantation modified.
sauimone -
r2081:b2efc1272dac
parent child
Show More
@@ -677,14 +677,14 bool QAbstractBarSeriesPrivate::append(QBarSet *set)
677 677 // Fail if set is already in list or set is null.
678 678 return false;
679 679 }
680
680 681 m_barSets.append(set);
681 682 QObject::connect(set->d_ptr.data(), SIGNAL(updatedLayout()), this, SIGNAL(updatedLayout()));
682 683 QObject::connect(set->d_ptr.data(), SIGNAL(updatedBars()), this, SIGNAL(updatedBars()));
683 684 QObject::connect(set->d_ptr.data(), SIGNAL(restructuredBars()), this, SIGNAL(restructuredBars()));
684 emit restructuredBars(); // this notifies barchartitem
685 if (m_dataset) {
686 m_dataset->updateSeries(q); // this notifies legend
687 }
685
686 emit restructuredBars(); // this notifies barchartitem
687 emit legendPropertiesUpdated(q); // this notifies legend
688 688 return true;
689 689 }
690 690
@@ -695,14 +695,14 bool QAbstractBarSeriesPrivate::remove(QBarSet *set)
695 695 // Fail if set is not in list
696 696 return false;
697 697 }
698
698 699 m_barSets.removeOne(set);
699 700 QObject::disconnect(set->d_ptr.data(), SIGNAL(updatedLayout()), this, SIGNAL(updatedLayout()));
700 701 QObject::disconnect(set->d_ptr.data(), SIGNAL(updatedBars()), this, SIGNAL(updatedBars()));
701 702 QObject::disconnect(set->d_ptr.data(), SIGNAL(restructuredBars()), this, SIGNAL(restructuredBars()));
703
702 704 emit restructuredBars(); // this notifies barchartitem
703 if (m_dataset) {
704 m_dataset->updateSeries(q); // this notifies legend
705 }
705 emit legendPropertiesUpdated(q);
706 706 return true;
707 707 }
708 708
@@ -726,10 +726,9 bool QAbstractBarSeriesPrivate::append(QList<QBarSet* > sets)
726 726 QObject::connect(set->d_ptr.data(), SIGNAL(updatedBars()), this, SIGNAL(updatedBars()));
727 727 QObject::connect(set->d_ptr.data(), SIGNAL(restructuredBars()), this, SIGNAL(restructuredBars()));
728 728 }
729
729 730 emit restructuredBars(); // this notifies barchartitem
730 if (m_dataset) {
731 m_dataset->updateSeries(q); // this notifies legend
732 }
731 emit legendPropertiesUpdated(q); // this notifies legend
733 732 return true;
734 733 }
735 734
@@ -758,9 +757,7 bool QAbstractBarSeriesPrivate::remove(QList<QBarSet* > sets)
758 757 }
759 758
760 759 emit restructuredBars(); // this notifies barchartitem
761 if (m_dataset) {
762 m_dataset->updateSeries(q); // this notifies legend
763 }
760 emit legendPropertiesUpdated(q);
764 761 return true;
765 762 }
766 763
@@ -771,14 +768,14 bool QAbstractBarSeriesPrivate::insert(int index, QBarSet *set)
771 768 // Fail if set is already in list or set is null.
772 769 return false;
773 770 }
771
774 772 m_barSets.insert(index, set);
775 773 QObject::connect(set->d_ptr.data(), SIGNAL(updatedLayout()), this, SIGNAL(updatedLayout()));
776 774 QObject::connect(set->d_ptr.data(), SIGNAL(updatedBars()), this, SIGNAL(updatedBars()));
777 775 QObject::connect(set->d_ptr.data(), SIGNAL(restructuredBars()), this, SIGNAL(restructuredBars()));
776
778 777 emit restructuredBars(); // this notifies barchartitem
779 if (m_dataset) {
780 m_dataset->updateSeries(q); // this notifies legend
781 }
778 emit legendPropertiesUpdated(q);
782 779 return true;
783 780 }
784 781
@@ -485,12 +485,12 QList<QAbstractSeries*> ChartDataSet::series() const
485 485 {
486 486 return m_seriesDomainMap.keys();
487 487 }
488
488 /*
489 489 void ChartDataSet::updateSeries(QAbstractSeries *series)
490 490 {
491 491 emit seriesUpdated(series);
492 492 }
493
493 */
494 494 #include "moc_chartdataset_p.cpp"
495 495
496 496 QTCOMMERCIALCHART_END_NAMESPACE
@@ -49,7 +49,7 public:
49 49 void addSeries(QAbstractSeries* series);
50 50 void removeSeries(QAbstractSeries* series);
51 51 void removeAllSeries();
52 void updateSeries(QAbstractSeries* series);
52 // void updateSeries(QAbstractSeries* series);
53 53
54 54 void zoomInDomain(const QRectF& rect, const QSizeF& size);
55 55 void zoomOutDomain(const QRectF& rect, const QSizeF& size);
@@ -72,7 +72,7 public:
72 72 Q_SIGNALS:
73 73 void seriesAdded(QAbstractSeries* series, Domain* domain);
74 74 void seriesRemoved(QAbstractSeries* series);
75 void seriesUpdated(QAbstractSeries* series);
75 // void seriesUpdated(QAbstractSeries* series);
76 76 void axisAdded(QAbstractAxis* axis,Domain* domain);
77 77 void axisRemoved(QAbstractAxis* axis);
78 78
@@ -174,7 +174,7 d_ptr(new QLegendPrivate(chart->d_ptr->m_presenter,chart,this))
174 174 setFlags(QGraphicsItem::ItemClipsChildrenToShape);
175 175 QObject::connect(chart->d_ptr->m_dataset,SIGNAL(seriesAdded(QAbstractSeries*,Domain*)),d_ptr.data(),SLOT(handleSeriesAdded(QAbstractSeries*,Domain*)));
176 176 QObject::connect(chart->d_ptr->m_dataset,SIGNAL(seriesRemoved(QAbstractSeries*)),d_ptr.data(),SLOT(handleSeriesRemoved(QAbstractSeries*)));
177 QObject::connect(chart->d_ptr->m_dataset,SIGNAL(seriesUpdated(QAbstractSeries*)),d_ptr.data(),SLOT(handleSeriesUpdated(QAbstractSeries*)));
177 // QObject::connect(chart->d_ptr->m_dataset,SIGNAL(seriesUpdated(QAbstractSeries*)),d_ptr.data(),SLOT(handleSeriesUpdated(QAbstractSeries*)));
178 178 setLayout(d_ptr->m_layout);
179 179 }
180 180
@@ -464,7 +464,7 void QLegendPrivate::handleSeriesAdded(QAbstractSeries *series, Domain *domain)
464 464
465 465 QList<LegendMarker*> markers = series->d_ptr->createLegendMarker(q_ptr);
466 466
467 foreach(LegendMarker* marker, markers) {
467 foreach (LegendMarker* marker, markers) {
468 468 marker->setFont(m_font);
469 469 marker->setLabelBrush(m_labelBrush);
470 470 marker->setVisible(series->isVisible());
@@ -473,12 +473,7 void QLegendPrivate::handleSeriesAdded(QAbstractSeries *series, Domain *domain)
473 473 }
474 474
475 475 QObject::connect(series, SIGNAL(visibleChanged()), this, SLOT(handleSeriesVisibleChanged()));
476
477 if(series->type() == QAbstractSeries::SeriesTypePie) {
478 QPieSeries *pieSeries = static_cast<QPieSeries *>(series);
479 QObject::connect(pieSeries, SIGNAL(added(QList<QPieSlice*>)), this, SLOT(handleUpdatePieSeries()));
480 QObject::connect(pieSeries, SIGNAL(removed(QList<QPieSlice*>)), this, SLOT(handleUpdatePieSeries()));
481 }
476 QObject::connect(series->d_ptr.data(), SIGNAL(legendPropertiesUpdated(QAbstractSeries*)), this, SLOT(handleLegendPropertiesUpdated(QAbstractSeries*)));
482 477
483 478 q_ptr->layout()->invalidate();
484 479 q_ptr->layout()->activate();
@@ -493,34 +488,12 void QLegendPrivate::handleSeriesRemoved(QAbstractSeries *series)
493 488 }
494 489 }
495 490
496 if(series->type() == QAbstractSeries::SeriesTypePie)
497 {
498 QPieSeries *pieSeries = static_cast<QPieSeries *>(series);
499 QObject::disconnect(pieSeries, SIGNAL(added(QList<QPieSlice*>)), this, SLOT(handleUpdatePieSeries()));
500 QObject::disconnect(pieSeries, SIGNAL(removed(QList<QPieSlice*>)), this, SLOT(handleUpdatePieSeries()));
501 }
491 QObject::disconnect(series, SIGNAL(visibleChanged()), this, SLOT(handleSeriesVisibleChanged()));
492 QObject::disconnect(series->d_ptr.data(), SIGNAL(legendPropertiesUpdated(QAbstractSeries*)), this, SLOT(handleLegendPropertiesUpdated(QAbstractSeries*)));
502 493
503 494 q_ptr->layout()->invalidate();
504 495 }
505 496
506 void QLegendPrivate::handleSeriesUpdated(QAbstractSeries *series)
507 {
508 // TODO: find out which markers are are added or removed. Update them
509 // TODO: better implementation
510 handleSeriesRemoved(series);
511 Domain domain;
512 handleSeriesAdded(series, &domain);
513 }
514
515 void QLegendPrivate::handleUpdatePieSeries()
516 {
517 //TODO: reimplement to be optimal
518 QPieSeries* series = qobject_cast<QPieSeries *> (sender());
519 Q_ASSERT(series);
520 handleSeriesRemoved(series);
521 handleSeriesAdded(series, 0);
522 }
523
524 497 void QLegendPrivate::handleSeriesVisibleChanged()
525 498 {
526 499 QAbstractSeries* series = qobject_cast<QAbstractSeries *> (sender());
@@ -534,6 +507,15 void QLegendPrivate::handleSeriesVisibleChanged()
534 507 q_ptr->layout()->invalidate();
535 508 }
536 509
510 void QLegendPrivate::handleLegendPropertiesUpdated(QAbstractSeries *series)
511 {
512 // Handle new or removed markers
513 // Handle changes of marker pen/brush/label. every property that legend is interested
514 handleSeriesRemoved(series);
515 Domain domain;
516 handleSeriesAdded(series, &domain);
517 }
518
537 519 #include "moc_qlegend.cpp"
538 520 #include "moc_qlegend_p.cpp"
539 521
@@ -58,9 +58,8 public:
58 58 public Q_SLOTS:
59 59 void handleSeriesAdded(QAbstractSeries *series, Domain *domain);
60 60 void handleSeriesRemoved(QAbstractSeries *series);
61 void handleSeriesUpdated(QAbstractSeries *series);
62 void handleUpdatePieSeries(); //TODO remove this function
63 61 void handleSeriesVisibleChanged();
62 void handleLegendPropertiesUpdated(QAbstractSeries *series);
64 63
65 64 private:
66 65 QLegend *q_ptr;
@@ -412,6 +412,13 bool QPieSeries::append(QList<QPieSlice*> slices)
412 412 connect(s, SIGNAL(valueChanged()), d, SLOT(sliceValueChanged()));
413 413 connect(s, SIGNAL(clicked()), d, SLOT(sliceClicked()));
414 414 connect(s, SIGNAL(hovered(bool)), d, SLOT(sliceHovered(bool)));
415
416 connect(s, SIGNAL(labelChanged()), d, SLOT(updateLegendProperties()));
417 connect(s, SIGNAL(penChanged()), d, SLOT(updateLegendProperties()));
418 connect(s, SIGNAL(brushChanged()), d, SLOT(updateLegendProperties()));
419 connect(s, SIGNAL(labelBrushChanged()), d, SLOT(updateLegendProperties()));
420 connect(s, SIGNAL(labelFontChanged()), d, SLOT(updateLegendProperties()));
421 connect(s, SIGNAL(labelFontChanged()), d, SLOT(updateLegendProperties()));
415 422 }
416 423
417 424 emit added(slices);
@@ -471,6 +478,13 bool QPieSeries::insert(int index, QPieSlice* slice)
471 478 connect(slice, SIGNAL(clicked()), d, SLOT(sliceClicked()));
472 479 connect(slice, SIGNAL(hovered(bool)), d, SLOT(sliceHovered(bool)));
473 480
481 connect(slice, SIGNAL(labelChanged()), d, SLOT(updateLegendProperties()));
482 connect(slice, SIGNAL(penChanged()), d, SLOT(updateLegendProperties()));
483 connect(slice, SIGNAL(brushChanged()), d, SLOT(updateLegendProperties()));
484 connect(slice, SIGNAL(labelBrushChanged()), d, SLOT(updateLegendProperties()));
485 connect(slice, SIGNAL(labelFontChanged()), d, SLOT(updateLegendProperties()));
486 connect(slice, SIGNAL(labelFontChanged()), d, SLOT(updateLegendProperties()));
487
474 488 emit added(QList<QPieSlice*>() << slice);
475 489 emit countChanged();
476 490
@@ -830,6 +844,13 void QPieSeriesPrivate::sliceHovered(bool state)
830 844 emit q->hovered(slice, state);
831 845 }
832 846
847 void QPieSeriesPrivate::updateLegendProperties()
848 {
849 // This slot listens to all properties of slices, which may interest legend and signals it.
850 Q_Q(QPieSeries);
851 emit legendPropertiesUpdated(q);
852 }
853
833 854 void QPieSeriesPrivate::scaleDomain(Domain& domain)
834 855 {
835 856 Q_UNUSED(domain);
@@ -67,6 +67,7 public Q_SLOTS:
67 67 void sliceValueChanged();
68 68 void sliceClicked();
69 69 void sliceHovered(bool state);
70 void updateLegendProperties();
70 71
71 72 private:
72 73 QList<QPieSlice*> m_slices;
@@ -55,6 +55,9 public:
55 55 virtual void initializeAxis(QAbstractAxis* axis) = 0;
56 56 virtual QAbstractAxis::AxisType defaultAxisType(Qt::Orientation) const = 0;
57 57
58 Q_SIGNALS:
59 void legendPropertiesUpdated(QAbstractSeries* series);
60
58 61 protected:
59 62 QAbstractSeries *q_ptr;
60 63 QChart *m_chart;
General Comments 0
You need to be logged in to leave comments. Login now