diff options
Diffstat (limited to 'chart2/source/view/main/ChartView.cxx')
-rw-r--r-- | chart2/source/view/main/ChartView.cxx | 50 |
1 files changed, 19 insertions, 31 deletions
diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx index 2053ab09eaea..6dccabf2d74f 100644 --- a/chart2/source/view/main/ChartView.cxx +++ b/chart2/source/view/main/ChartView.cxx @@ -90,6 +90,8 @@ #include <com/sun/star/chart2/XTitled.hpp> #include <com/sun/star/chart2/RelativePosition.hpp> #include <com/sun/star/chart2/RelativeSize.hpp> +#include <com/sun/star/chart2/data/XPivotTableDataProvider.hpp> +#include <com/sun/star/chart2/data/PivotTableFieldEntry.hpp> #include <com/sun/star/drawing/FillStyle.hpp> #include <com/sun/star/drawing/GraphicExportFilter.hpp> #include <com/sun/star/drawing/LineStyle.hpp> @@ -114,6 +116,7 @@ #include <comphelper/classids.hxx> #include "servicenames_charttypes.hxx" + #include <rtl/strbuf.hxx> #include <rtl/ustring.hxx> @@ -2490,78 +2493,63 @@ void lcl_createButtons(const uno::Reference< drawing::XShapes>& xPageShapes, ChartModel& rModel, awt::Rectangle& rRemainingSpace) { - uno::Reference<beans::XPropertySet> xModelPage(rModel.getPageBackground()); - -// TODO: Get this from the PivotTable - std::vector<OUString> aPageFields { -// "Subdivision", "Subdivision2" - }; - std::vector<OUString> aDataFields { -// "Sum - Revenue", "Sum - Expenses" - }; - std::vector<OUString> aColumnFields { -// "Group Segment", "Group Segment 2" - }; + uno::Reference<chart2::data::XPivotTableDataProvider> xPivotTableDataProvider(rModel.getDataProvider(), uno::UNO_QUERY); + if (!xPivotTableDataProvider.is()) + return; + uno::Reference<beans::XPropertySet> xModelPage(rModel.getPageBackground()); awt::Size aSize(3000, 700); // size of the button long x = 0; - int nCIDIndex = 0; - if (!aPageFields.empty()) + if (xPivotTableDataProvider->getPageFields().hasElements()) { x = 0; - nCIDIndex = 0; - for (OUString const & aPageField : aPageFields) + for (css::chart2::data::PivotTableFieldEntry const & rPageFieldEntry : xPivotTableDataProvider->getPageFields()) { std::unique_ptr<VButton> pButton(new VButton); pButton->init(xPageShapes, xShapeFactory); awt::Point aNewPosition = awt::Point(rRemainingSpace.X + x + 100, rRemainingSpace.Y + 100); - pButton->setLabel(aPageField); - pButton->setCID("PageFieldButton." + OUString::number(nCIDIndex)); + pButton->setLabel(rPageFieldEntry.Name); + pButton->setCID("FieldButton.Page." + OUString::number(rPageFieldEntry.DimensionIndex)); pButton->createShapes(aNewPosition, aSize, xModelPage); x += aSize.Width + 100; - nCIDIndex += 1; } rRemainingSpace.Y += (aSize.Height + 100 + 100); rRemainingSpace.Height -= (aSize.Height + 100 + 100); } - if (!aDataFields.empty()) + if (xPivotTableDataProvider->getDataFields().hasElements()) { x = 200; - nCIDIndex = 0; - for (OUString const & aDataField : aDataFields) + for (css::chart2::data::PivotTableFieldEntry const & rDataFieldEntry : xPivotTableDataProvider->getDataFields()) { std::unique_ptr<VButton> pButton(new VButton); pButton->init(xPageShapes, xShapeFactory); awt::Point aNewPosition = awt::Point(rRemainingSpace.X + x + 100, rRemainingSpace.Y + 100); - pButton->setLabel(aDataField); - pButton->setCID("DataFieldButton." + OUString::number(nCIDIndex)); + pButton->setLabel(rDataFieldEntry.Name); + pButton->setCID("FieldButton.Data." + OUString::number(rDataFieldEntry.DimensionIndex)); pButton->createShapes(aNewPosition, aSize, xModelPage); x += aSize.Width + 100; - nCIDIndex += 1; } rRemainingSpace.Y += (aSize.Height + 100 + 100); rRemainingSpace.Height -= (aSize.Height + 100 + 100); } - if (!aColumnFields.empty()) + if (xPivotTableDataProvider->getRowFields().hasElements()) { x = 200; - nCIDIndex = 0; - for (OUString const & aColumnField : aColumnFields) + for (css::chart2::data::PivotTableFieldEntry const & rRowFieldEntry : xPivotTableDataProvider->getRowFields()) { std::unique_ptr<VButton> pButton(new VButton); pButton->init(xPageShapes, xShapeFactory); awt::Point aNewPosition = awt::Point(rRemainingSpace.X + x + 100, rRemainingSpace.Y + rRemainingSpace.Height - aSize.Height - 100); - pButton->setLabel(aColumnField); - pButton->setCID("ColumnFieldButton." + OUString::number(nCIDIndex)); + pButton->setLabel(rRowFieldEntry.Name); + pButton->setCID("FieldButton.Row." + OUString::number(rRowFieldEntry.DimensionIndex)); pButton->createShapes(aNewPosition, aSize, xModelPage); x += aSize.Width + 100; - nCIDIndex += 1; } rRemainingSpace.Height -= (aSize.Height + 100 + 100); } |