diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2015-07-15 15:49:55 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2015-07-16 08:15:18 +0200 |
commit | c03d781e35a015035bf73ff64620f36f27672e87 (patch) | |
tree | d8732f075e0753aec2c99760d74247a6a6feb55f | |
parent | 49d2400f8d315e0cb102915ef0375c0c6b6d3459 (diff) |
sidebar needs to listen to chart modifications
Change-Id: I3dd0ae1c1c7fe14ee08571e96b1804d5d9972e2c
-rw-r--r-- | chart2/source/controller/sidebar/ChartElementsPanel.cxx | 53 | ||||
-rw-r--r-- | chart2/source/controller/sidebar/ChartElementsPanel.hxx | 9 |
2 files changed, 59 insertions, 3 deletions
diff --git a/chart2/source/controller/sidebar/ChartElementsPanel.cxx b/chart2/source/controller/sidebar/ChartElementsPanel.cxx index aeb0d8132db4..afb72f1c1435 100644 --- a/chart2/source/controller/sidebar/ChartElementsPanel.cxx +++ b/chart2/source/controller/sidebar/ChartElementsPanel.cxx @@ -55,6 +55,44 @@ enum class GridType HOR_MINOR }; +class ChartSidebarModifyListener : public cppu::WeakImplHelper1<css::util::XModifyListener> +{ +public: + + ChartSidebarModifyListener(ChartElementsPanel* pParent); + virtual ~ChartSidebarModifyListener(); + + virtual void SAL_CALL modified(const css::lang::EventObject& rEvent) + throw (::css::uno::RuntimeException, ::std::exception) SAL_OVERRIDE; + + virtual void SAL_CALL disposing(const css::lang::EventObject& rEvent) + throw (::css::uno::RuntimeException, ::std::exception) SAL_OVERRIDE; + +private: + ChartElementsPanel* mpParent; +}; + +ChartSidebarModifyListener::ChartSidebarModifyListener(ChartElementsPanel* pParent): + mpParent(pParent) +{ +} + +ChartSidebarModifyListener::~ChartSidebarModifyListener() +{ +} + +void ChartSidebarModifyListener::modified(const css::lang::EventObject& /*rEvent*/) + throw (::css::uno::RuntimeException, ::std::exception) +{ + mpParent->updateData(); +} + +void ChartSidebarModifyListener::disposing(const css::lang::EventObject& /*rEvent*/) + throw (::css::uno::RuntimeException, ::std::exception) +{ + mpParent->modelInvalid(); +} + ChartModel* getChartModel(css::uno::Reference<css::frame::XModel> xModel) { ChartModel* pModel = dynamic_cast<ChartModel*>(xModel.get()); @@ -121,7 +159,8 @@ ChartElementsPanel::ChartElementsPanel( mxFrame(rxFrame), maContext(), mpBindings(pBindings), - mxModel(pController->getModel()) + mxModel(pController->getModel()), + mxListener(new ChartSidebarModifyListener(this)) { get(mpCBTitle, "checkbutton_title"); get(mpCBSubtitle, "checkbutton_subtitle"); @@ -149,6 +188,9 @@ ChartElementsPanel::~ChartElementsPanel() void ChartElementsPanel::dispose() { + + css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); + xBroadcaster->removeModifyListener(mxListener); mpCBTitle.clear(); mpCBSubtitle.clear(); mpCBXAxis.clear(); @@ -172,11 +214,15 @@ void ChartElementsPanel::dispose() void ChartElementsPanel::Initialize() { + css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); + xBroadcaster->addModifyListener(mxListener); updateData(); } void ChartElementsPanel::updateData() { + SolarMutexGuard aGuard; + mpCBLegend->Check(isLegendVisible(mxModel)); mpCBTitle->Check(isTitleVisisble(mxModel, TitleHelper::MAIN_TITLE)); mpCBSubtitle->Check(isTitleVisisble(mxModel, TitleHelper::SUB_TITLE)); @@ -232,6 +278,11 @@ void ChartElementsPanel::NotifyItemUpdate( { } +void ChartElementsPanel::modelInvalid() +{ + +} + }} // end of namespace ::chart::sidebar /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/chart2/source/controller/sidebar/ChartElementsPanel.hxx b/chart2/source/controller/sidebar/ChartElementsPanel.hxx index 82a26656258c..297f1575a2a6 100644 --- a/chart2/source/controller/sidebar/ChartElementsPanel.hxx +++ b/chart2/source/controller/sidebar/ChartElementsPanel.hxx @@ -22,7 +22,8 @@ #include <sfx2/sidebar/ControllerItem.hxx> #include <sfx2/sidebar/IContextChangeReceiver.hxx> #include <svx/sidebar/PanelLayout.hxx> -#include <boost/scoped_ptr.hpp> + +#include <com/sun/star/util/XModifyListener.hpp> class FixedText; class ListBox; @@ -65,6 +66,10 @@ public: SfxBindings* pBindings, ChartController* pController); virtual ~ChartElementsPanel(); virtual void dispose() SAL_OVERRIDE; + + void updateData(); + void modelInvalid(); + private: //ui controls VclPtr<CheckBox> mpCBTitle; @@ -90,9 +95,9 @@ private: SfxBindings* mpBindings; css::uno::Reference<css::frame::XModel> mxModel; + css::uno::Reference<css::util::XModifyListener> mxListener; void Initialize(); - void updateData(); }; } } // end of namespace ::chart::sidebar |