summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2015-07-21 15:03:48 +0200
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2015-07-26 00:24:39 +0200
commitab0c81c09798ae5d028a87dfcf249953f1b42f8e (patch)
tree433c8e0b690ace2259390e38adcf03c2d2cf4fc9 /chart2
parent3d32e9f81b263884ec0a3b262e71ae78fcb892b7 (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.cxx89
-rw-r--r--chart2/source/controller/sidebar/ChartAreaPanel.hxx16
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