summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2015-07-15 15:49:55 +0200
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2015-07-16 08:15:18 +0200
commitc03d781e35a015035bf73ff64620f36f27672e87 (patch)
treed8732f075e0753aec2c99760d74247a6a6feb55f
parent49d2400f8d315e0cb102915ef0375c0c6b6d3459 (diff)
sidebar needs to listen to chart modifications
Change-Id: I3dd0ae1c1c7fe14ee08571e96b1804d5d9972e2c
-rw-r--r--chart2/source/controller/sidebar/ChartElementsPanel.cxx53
-rw-r--r--chart2/source/controller/sidebar/ChartElementsPanel.hxx9
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