From acd818d9735a6fa4e38016b16ba7efc880058714 Mon Sep 17 00:00:00 2001 From: Markus Mohrhard Date: Thu, 20 Aug 2015 00:13:19 +0200 Subject: update the color button when we select an object Change-Id: Ib45a02248819c35844ef83435c33ab1c82f5c4dc --- .../source/controller/sidebar/ChartAreaPanel.cxx | 14 +++++++++--- .../controller/sidebar/ChartColorWrapper.cxx | 25 ++++++++++++++++++++-- .../controller/sidebar/ChartColorWrapper.hxx | 12 ++++++++--- 3 files changed, 43 insertions(+), 8 deletions(-) diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.cxx b/chart2/source/controller/sidebar/ChartAreaPanel.cxx index dbf9a6837b6b..6377e64fb356 100644 --- a/chart2/source/controller/sidebar/ChartAreaPanel.cxx +++ b/chart2/source/controller/sidebar/ChartAreaPanel.cxx @@ -25,6 +25,13 @@ namespace chart { namespace sidebar { namespace { +SvxColorToolBoxControl* getColorToolBoxControl(sfx2::sidebar::SidebarToolBox* pToolBoxColor) +{ + css::uno::Reference xController = pToolBoxColor->GetFirstController(); + SvxColorToolBoxControl* pToolBoxColorControl = dynamic_cast(xController.get()); + return pToolBoxColorControl; +} + OUString getCID(css::uno::Reference xModel) { css::uno::Reference xController(xModel->getCurrentController()); @@ -240,7 +247,7 @@ ChartAreaPanel::ChartAreaPanel(vcl::Window* pParent, mxSelectionListener(new ChartSidebarSelectionListener(this)), mbUpdate(true), mbModelValid(true), - maFillColorWrapper(mxModel) + maFillColorWrapper(mxModel, getColorToolBoxControl(mpToolBoxColor.get())) { std::vector aAcceptedTypes { OBJECTTYPE_PAGE, OBJECTTYPE_DIAGRAM, OBJECTTYPE_DATA_SERIES, OBJECTTYPE_TITLE, OBJECTTYPE_LEGEND}; mxSelectionListener->setAcceptedTypes(aAcceptedTypes); @@ -273,8 +280,7 @@ void ChartAreaPanel::Initialize() if (xSelectionSupplier.is()) xSelectionSupplier->addSelectionChangeListener(mxSelectionListener.get()); - css::uno::Reference xController = mpToolBoxColor->GetFirstController(); - SvxColorToolBoxControl* pToolBoxColor = dynamic_cast(xController.get()); + SvxColorToolBoxControl* pToolBoxColor = getColorToolBoxControl(mpToolBoxColor.get()); pToolBoxColor->setColorSelectFunction(maFillColorWrapper); updateData(); @@ -427,6 +433,8 @@ void ChartAreaPanel::updateData() xPropSet->getPropertyValue("FillTransparenceGradientName") >>= aFillFloatTransparenceName; XFillFloatTransparenceItem aFillFloatTransparenceItem = getXTransparencyGradientForName(mxModel, aFillFloatTransparenceName); updateFillFloatTransparence(false, true, &aFillFloatTransparenceItem); + + maFillColorWrapper.updateData(); } void ChartAreaPanel::modelInvalid() diff --git a/chart2/source/controller/sidebar/ChartColorWrapper.cxx b/chart2/source/controller/sidebar/ChartColorWrapper.cxx index d8a8f870f28f..beeb85df3c72 100644 --- a/chart2/source/controller/sidebar/ChartColorWrapper.cxx +++ b/chart2/source/controller/sidebar/ChartColorWrapper.cxx @@ -11,6 +11,10 @@ #include "ChartController.hxx" +#include +#include +#include + namespace chart { namespace sidebar { namespace { @@ -56,13 +60,15 @@ css::uno::Reference getPropSet( } ChartColorWrapper::ChartColorWrapper( - css::uno::Reference xModel): + css::uno::Reference xModel, + SvxColorToolBoxControl* pControl): mxModel(xModel), + mpControl(pControl), maPropertyName("FillColor") { } -void ChartColorWrapper::operator()(const OUString& rCommand, const Color& rColor) +void ChartColorWrapper::operator()(const OUString& , const Color& rColor) { css::uno::Reference xPropSet = getPropSet(mxModel); assert(xPropSet.is()); @@ -75,6 +81,21 @@ void ChartColorWrapper::updateModel(css::uno::Reference xMod mxModel = xModel; } +void ChartColorWrapper::updateData() +{ + css::uno::Reference xPropSet = getPropSet(mxModel); + if (!xPropSet.is()) + return; + + css::uno::Any aAny = xPropSet->getPropertyValue(maPropertyName); + sal_uInt32 nColor = 0; + aAny >>= nColor; + Color aColor(nColor); + + SvxColorItem aItem(aColor, SID_ATTR_FILL_COLOR); + mpControl->StateChanged(SID_ATTR_FILL_COLOR, SfxItemState::SET, &aItem); +} + } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/chart2/source/controller/sidebar/ChartColorWrapper.hxx b/chart2/source/controller/sidebar/ChartColorWrapper.hxx index adbe9ef0d05f..b0f90710e138 100644 --- a/chart2/source/controller/sidebar/ChartColorWrapper.hxx +++ b/chart2/source/controller/sidebar/ChartColorWrapper.hxx @@ -13,6 +13,8 @@ #include #include +class SvxColorToolBoxControl; + namespace chart { namespace sidebar { class ChartColorWrapper @@ -20,17 +22,21 @@ class ChartColorWrapper private: public: - ChartColorWrapper(css::uno::Reference xModel); + ChartColorWrapper(css::uno::Reference xModel, + SvxColorToolBoxControl* pControl); void operator()(const OUString& rCommand, const Color& rColor); void updateModel(css::uno::Reference xModel); + + void updateData(); + private: - // not the chart frame - // you need to get the chart frame through getActiveFrame css::uno::Reference mxModel; + SvxColorToolBoxControl* mpControl; + OUString maPropertyName; }; -- cgit v1.2.3