From 95eb00cb8ef86b75de96d4f1cc8b3a9ed353b494 2012-03-30 13:46:10 From: sauimone Date: 2012-03-30 13:46:10 Subject: [PATCH] values visibility handling changed in barchart --- diff --git a/src/barchart/barchartitem.cpp b/src/barchart/barchartitem.cpp index 7189b46..70644e8 100644 --- a/src/barchart/barchartitem.cpp +++ b/src/barchart/barchartitem.cpp @@ -41,7 +41,6 @@ BarChartItem::BarChartItem(QBarSeries *series, ChartPresenter *presenter) : { connect(series, SIGNAL(showToolTip(QPoint,QString)), this, SLOT(showToolTip(QPoint,QString))); connect(series, SIGNAL(updatedBars()), this, SLOT(handleLayoutChanged())); -//TODO: connect(series,SIGNAL("position or size has changed"), this, SLOT(handleLayoutChanged())); connect(series, SIGNAL(restructuredBar(int)), this, SLOT(handleModelChanged(int))); setZValue(ChartPresenter::BarSeriesZValue); dataChanged(); @@ -76,7 +75,7 @@ void BarChartItem::dataChanged() delete item; m_bars.clear(); - m_floatingValues.clear(); + m_values.clear(); m_layout.clear(); // Create new graphic items for bars @@ -100,8 +99,8 @@ void BarChartItem::dataChanged() QBarSet *set = m_series->barsetAt(s); BarValue *value = new BarValue(*set, this); childItems().append(value); - m_floatingValues.append(value); - connect(set, SIGNAL(toggleFloatingValues()), value, SLOT(toggleVisible())); + m_values.append(value); + connect(set,SIGNAL(valuesVisibleChanged(bool)),value,SLOT(valuesVisibleChanged(bool))); } } } @@ -152,7 +151,7 @@ QVector BarChartItem::calculateLayout() qreal yPos = height; for (int set=0; set < m_series->barsetCount(); set++) { qreal barHeight = m_series->valueAt(set, category) * scale; - BarValue* value = m_floatingValues.at(itemIndex); + BarValue* value = m_values.at(itemIndex); QBarSet* barSet = m_series->barsetAt(set); diff --git a/src/barchart/barchartitem_p.h b/src/barchart/barchartitem_p.h index d042ed8..8b9ed1c 100644 --- a/src/barchart/barchartitem_p.h +++ b/src/barchart/barchartitem_p.h @@ -84,7 +84,7 @@ protected: // Not owned. QBarSeries *m_series; QList m_bars; - QList m_floatingValues; + QList m_values; }; QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/barvalue.cpp b/src/barchart/barvalue.cpp index 91c3660..ea3c049 100644 --- a/src/barchart/barvalue.cpp +++ b/src/barchart/barvalue.cpp @@ -29,6 +29,7 @@ BarValue::BarValue(QBarSet &set, QGraphicsItem *parent) : QGraphicsObject(parent m_barSet(set), m_textItem(new QGraphicsSimpleTextItem(this)) { +// connect(&set,SIGNAL(valuesVisibleChanged(bool)),value,SLOT(valuesVisibleChanged(bool))); setVisible(false); } @@ -78,10 +79,9 @@ QRectF BarValue::boundingRect() const return m_textItem->boundingRect(); } -void BarValue::toggleVisible() +void BarValue::valuesVisibleChanged(bool visible) { - qDebug() << "toggle visible"; - setVisible(!isVisible()); + setVisible(visible); } #include "moc_barvalue_p.cpp" diff --git a/src/barchart/barvalue_p.h b/src/barchart/barvalue_p.h index b67c9fd..c61fcb1 100644 --- a/src/barchart/barvalue_p.h +++ b/src/barchart/barvalue_p.h @@ -54,7 +54,7 @@ public: QRectF boundingRect() const; public Q_SLOTS: - void toggleVisible(); + void valuesVisibleChanged(bool visible); private: diff --git a/src/barchart/percentbarchartitem.cpp b/src/barchart/percentbarchartitem.cpp index 141a813..8f6e7ec 100644 --- a/src/barchart/percentbarchartitem.cpp +++ b/src/barchart/percentbarchartitem.cpp @@ -71,7 +71,7 @@ QVector PercentBarChartItem::calculateLayout() qreal scale = (height / colSum); for (int set=0; set < m_series->barsetCount(); set++) { qreal barHeight = m_series->valueAt(set,category) * scale; - BarValue* value = m_floatingValues.at(itemIndex); + BarValue* value = m_values.at(itemIndex); QBarSet* barSet = m_series->barsetAt(set); diff --git a/src/barchart/qbarseries.cpp b/src/barchart/qbarseries.cpp index 03d9a10..3589873 100644 --- a/src/barchart/qbarseries.cpp +++ b/src/barchart/qbarseries.cpp @@ -391,6 +391,14 @@ QBarCategories QBarSeries::categories() const return categories; } +void QBarSeries::setValuesVisible(bool visible) +{ + foreach (QBarSet* s, barSets()) { + s->setValuesVisible(visible); + } +} + + #include "moc_qbarseries.cpp" QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/qbarseries.h b/src/barchart/qbarseries.h index 11a08d0..12d5cbe 100644 --- a/src/barchart/qbarseries.h +++ b/src/barchart/qbarseries.h @@ -51,6 +51,8 @@ public: QList barSets() const; QBarCategories categories() const; + void setValuesVisible(bool visible = true); + bool setModel(QAbstractItemModel *model); QAbstractItemModel *modelExt() { return m_model; } void setModelMapping(int categories, int bottomBoundry, int topBoundry, Qt::Orientation orientation = Qt::Vertical); diff --git a/src/barchart/qbarset.cpp b/src/barchart/qbarset.cpp index 12ecb90..96f8c04 100644 --- a/src/barchart/qbarset.cpp +++ b/src/barchart/qbarset.cpp @@ -199,6 +199,14 @@ QPen QBarSet::floatingValuePen() const } /*! + Sets the visibility of barset values to \a visible +*/ +void QBarSet::setValuesVisible(bool visible) +{ + emit valuesVisibleChanged(visible); +} + +/*! \internal \a pos */ void QBarSet::barHoverEnterEvent(QPoint pos) diff --git a/src/barchart/qbarset.h b/src/barchart/qbarset.h index ba5b9bf..96607f4 100644 --- a/src/barchart/qbarset.h +++ b/src/barchart/qbarset.h @@ -58,17 +58,18 @@ public: void setFloatingValuePen(const QPen &pen); QPen floatingValuePen() const; + void setValuesVisible(bool visible = true); + Q_SIGNALS: void clicked(QString category, Qt::MouseButtons button); // Clicked and hover signals exposed to user - void toggleFloatingValues(); - // TODO: Expose this to user or not? // TODO: TO PIMPL ---> void structureChanged(); void valueChanged(); void hoverEnter(QPoint pos); void hoverLeave(); void showToolTip(QPoint pos, QString tip); // Private signal + void valuesVisibleChanged(bool visible); // <--- TO PIMPL public Q_SLOTS: diff --git a/src/barchart/stackedbarchartitem.cpp b/src/barchart/stackedbarchartitem.cpp index 4c92ca1..d58b2d2 100644 --- a/src/barchart/stackedbarchartitem.cpp +++ b/src/barchart/stackedbarchartitem.cpp @@ -77,7 +77,7 @@ QVector StackedBarChartItem::calculateLayout() qreal yPos = height; for (int set=0; set < m_series->barsetCount(); set++) { qreal barHeight = m_series->valueAt(set, category) * scale; - BarValue* value = m_floatingValues.at(itemIndex); + BarValue* value = m_values.at(itemIndex); QBarSet* barSet = m_series->barsetAt(set);