diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2015-07-21 15:03:48 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2015-07-26 00:24:39 +0200 |
commit | ab0c81c09798ae5d028a87dfcf249953f1b42f8e (patch) | |
tree | 433c8e0b690ace2259390e38adcf03c2d2cf4fc9 /chart2 | |
parent | 3d32e9f81b263884ec0a3b262e71ae78fcb892b7 (diff) |
handle some of the property changes correctly in area panel
Change-Id: I107245f52504c6dc059554346e00402534cf6243
Diffstat (limited to 'chart2')
-rw-r--r-- | chart2/source/controller/sidebar/ChartAreaPanel.cxx | 89 | ||||
-rw-r--r-- | chart2/source/controller/sidebar/ChartAreaPanel.hxx | 16 |
2 files changed, 90 insertions, 15 deletions
diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.cxx b/chart2/source/controller/sidebar/ChartAreaPanel.cxx index a4241c9b8cf0..3319bf5d6f6d 100644 --- a/chart2/source/controller/sidebar/ChartAreaPanel.cxx +++ b/chart2/source/controller/sidebar/ChartAreaPanel.cxx @@ -13,6 +13,32 @@ namespace chart { namespace sidebar { +namespace { + +OUString getCID(css::uno::Reference<css::frame::XModel> xModel) +{ + css::uno::Reference<css::frame::XController> xController(xModel->getCurrentController()); + css::uno::Reference<css::view::XSelectionSupplier> xSelectionSupplier(xController, css::uno::UNO_QUERY); + if (!xSelectionSupplier.is()) + return OUString(); + + css::uno::Any aAny = xSelectionSupplier->getSelection(); + assert(aAny.hasValue()); + OUString aCID; + aAny >>= aCID; + + return aCID; +} + +css::uno::Reference<css::beans::XPropertySet> getPropSet( + css::uno::Reference<css::frame::XModel> xModel) +{ + OUString aCID = getCID(xModel); + return ObjectIdentifier::getObjectPropertySet(aCID, xModel); +} + +} + VclPtr<vcl::Window> ChartAreaPanel::Create( vcl::Window* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, @@ -29,8 +55,10 @@ VclPtr<vcl::Window> ChartAreaPanel::Create( ChartAreaPanel::ChartAreaPanel(vcl::Window* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, - ChartController* /*pController*/): - svx::sidebar::AreaPropertyPanelBase(pParent, rxFrame) + ChartController* pController): + svx::sidebar::AreaPropertyPanelBase(pParent, rxFrame), + mxModel(pController->getModel()), + mxListener(new ChartSidebarModifyListener(this)) { } @@ -39,43 +67,76 @@ ChartAreaPanel::~ChartAreaPanel() disposeOnce(); } -void ChartAreaPanel::setFillTransparence(const XFillTransparenceItem& /*rItem*/) +void ChartAreaPanel::dispose() { + css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); + xBroadcaster->removeModifyListener(mxListener); +} +void ChartAreaPanel::Initialize() +{ + css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); + xBroadcaster->addModifyListener(mxListener); } -void ChartAreaPanel::setFillFloatTransparence(const XFillFloatTransparenceItem& /*rItem*/) +void ChartAreaPanel::setFillTransparence(const XFillTransparenceItem& /*rItem*/) { } -void ChartAreaPanel::setFillStyle(const XFillStyleItem& /*rItem*/) +void ChartAreaPanel::setFillFloatTransparence(const XFillFloatTransparenceItem& /*rItem*/) { } -void ChartAreaPanel::setFillStyleAndColor(const XFillStyleItem* /*pStyleItem*/, - const XFillColorItem& /*rColorItem*/) +void ChartAreaPanel::setFillStyle(const XFillStyleItem& rItem) { - + css::uno::Reference<css::beans::XPropertySet> xPropSet = getPropSet(mxModel); + xPropSet->setPropertyValue("FillStyle", css::uno::makeAny(rItem.GetValue())); } -void ChartAreaPanel::setFillStyleAndGradient(const XFillStyleItem* /*pStyleItem*/, - const XFillGradientItem& /*rGradientItem*/) +void ChartAreaPanel::setFillStyleAndColor(const XFillStyleItem* pStyleItem, + const XFillColorItem& rColorItem) { + css::uno::Reference<css::beans::XPropertySet> xPropSet = getPropSet(mxModel); + if (pStyleItem) + xPropSet->setPropertyValue("FillStyle", css::uno::makeAny(pStyleItem->GetValue())); + xPropSet->setPropertyValue("Color", css::uno::makeAny(rColorItem.GetValue())); +} +void ChartAreaPanel::setFillStyleAndGradient(const XFillStyleItem* pStyleItem, + const XFillGradientItem& rGradientItem) +{ + css::uno::Reference<css::beans::XPropertySet> xPropSet = getPropSet(mxModel); + if (pStyleItem) + xPropSet->setPropertyValue("FillStyle", css::uno::makeAny(pStyleItem->GetValue())); + xPropSet->setPropertyValue("GradientName", css::uno::makeAny(rGradientItem.GetValue())); } -void ChartAreaPanel::setFillStyleAndHatch(const XFillStyleItem* /*pStyleItem*/, - const XFillHatchItem& /*rHatchItem*/) +void ChartAreaPanel::setFillStyleAndHatch(const XFillStyleItem* pStyleItem, + const XFillHatchItem& rHatchItem) { + css::uno::Reference<css::beans::XPropertySet> xPropSet = getPropSet(mxModel); + if (pStyleItem) + xPropSet->setPropertyValue("FillStyle", css::uno::makeAny(pStyleItem->GetValue())); + xPropSet->setPropertyValue("HatchName", css::uno::makeAny(rHatchItem.GetValue())); +} +void ChartAreaPanel::setFillStyleAndBitmap(const XFillStyleItem* pStyleItem, + const XFillBitmapItem& rBitmapItem) +{ + css::uno::Reference<css::beans::XPropertySet> xPropSet = getPropSet(mxModel); + if (pStyleItem) + xPropSet->setPropertyValue("FillStyle", css::uno::makeAny(pStyleItem->GetValue())); + xPropSet->setPropertyValue("FillBitmapName", css::uno::makeAny(rBitmapItem.GetValue())); } -void ChartAreaPanel::setFillStyleAndBitmap(const XFillStyleItem* /*pStyleItem*/, - const XFillBitmapItem& /*rBitmapItem*/) +void ChartAreaPanel::updateData() { +} +void ChartAreaPanel::modelInvalid() +{ } diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.hxx b/chart2/source/controller/sidebar/ChartAreaPanel.hxx index 4f4ac8b246bd..f5b45aed7e6e 100644 --- a/chart2/source/controller/sidebar/ChartAreaPanel.hxx +++ b/chart2/source/controller/sidebar/ChartAreaPanel.hxx @@ -27,6 +27,8 @@ #include <svx/sidebar/AreaPropertyPanelBase.hxx> +#include "ChartSidebarModifyListener.hxx" + class XFillFloatTransparenceItem; class XFillTransparenceItem; class XFillStyleItem; @@ -41,7 +43,8 @@ class ChartController; namespace sidebar { -class ChartAreaPanel : public svx::sidebar::AreaPropertyPanelBase +class ChartAreaPanel : public svx::sidebar::AreaPropertyPanelBase, + public ChartSidebarModifyListenerParent { public: static VclPtr<vcl::Window> Create( @@ -65,8 +68,19 @@ public: virtual void setFillStyleAndHatch(const XFillStyleItem* pStyleItem, const XFillHatchItem& rHatchItem); virtual void setFillStyleAndBitmap(const XFillStyleItem* pStyleItem, const XFillBitmapItem& rBitmapItem); + virtual void updateData() SAL_OVERRIDE; + + virtual void modelInvalid() SAL_OVERRIDE; + + virtual void dispose() SAL_OVERRIDE; + private: + css::uno::Reference<css::frame::XModel> mxModel; + css::uno::Reference<css::util::XModifyListener> mxListener; + + void Initialize(); + }; } } // end of namespace svx::sidebar |