chart2/source/controller/sidebar/ChartAreaPanel.cxx     |   28 ++++-----
 chart2/source/controller/sidebar/ChartAreaPanel.hxx     |    4 -
 chart2/source/controller/sidebar/ChartAxisPanel.cxx     |   34 +++++------
 chart2/source/controller/sidebar/ChartAxisPanel.hxx     |    4 -
 chart2/source/controller/sidebar/ChartColorWrapper.cxx  |   13 ++--
 chart2/source/controller/sidebar/ChartColorWrapper.hxx  |   15 ++--
 chart2/source/controller/sidebar/ChartElementsPanel.cxx |   27 ++++----
 chart2/source/controller/sidebar/ChartElementsPanel.hxx |    4 -
 chart2/source/controller/sidebar/ChartErrorBarPanel.cxx |   38 ++++++------
 chart2/source/controller/sidebar/ChartErrorBarPanel.hxx |    5 -
 chart2/source/controller/sidebar/ChartLinePanel.cxx     |   22 +++----
 chart2/source/controller/sidebar/ChartLinePanel.hxx     |    4 -
 chart2/source/controller/sidebar/ChartSeriesPanel.cxx   |   49 +++++++---------
 chart2/source/controller/sidebar/ChartSeriesPanel.hxx   |    4 -
 chart2/source/controller/sidebar/ChartTypePanel.cxx     |   42 +++++--------
 chart2/source/controller/sidebar/ChartTypePanel.hxx     |    3 
 16 files changed, 144 insertions(+), 152 deletions(-)

New commits:
commit 19e962d15c8febde84e56b10fd09fc22f824b814
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Thu Jan 20 16:04:37 2022 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Thu Jan 20 16:37:52 2022 +0100

    use more concrete types in chart2, ChartModel
    
    Change-Id: Ic3020221111fea9c1026a91c72f7a2d1d5da42dd
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128666
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.cxx 
b/chart2/source/controller/sidebar/ChartAreaPanel.cxx
index c12ece6699b5..f13f2390debc 100644
--- a/chart2/source/controller/sidebar/ChartAreaPanel.cxx
+++ b/chart2/source/controller/sidebar/ChartAreaPanel.cxx
@@ -14,6 +14,7 @@
 #include "ChartAreaPanel.hxx"
 
 #include <ChartController.hxx>
+#include <ChartModel.hxx>
 #include <ViewElementListProvider.hxx>
 #include <PropertyHelper.hxx>
 
@@ -41,7 +42,7 @@ SvxColorToolBoxControl* getColorToolBoxControl(const 
ToolbarUnoDispatcher& rColo
     return pToolBoxColorControl;
 }
 
-OUString getCID(const css::uno::Reference<css::frame::XModel>& xModel)
+OUString getCID(const rtl::Reference<::chart::ChartModel>& xModel)
 {
     css::uno::Reference<css::frame::XController> 
xController(xModel->getCurrentController());
     css::uno::Reference<css::view::XSelectionSupplier> 
xSelectionSupplier(xController, css::uno::UNO_QUERY);
@@ -72,7 +73,7 @@ OUString getCID(const 
css::uno::Reference<css::frame::XModel>& xModel)
 }
 
 css::uno::Reference<css::beans::XPropertySet> getPropSet(
-        const css::uno::Reference<css::frame::XModel>& xModel)
+        const rtl::Reference<::chart::ChartModel>& xModel)
 {
     OUString aCID = getCID(xModel);
     css::uno::Reference<css::beans::XPropertySet> xPropSet =
@@ -273,7 +274,7 @@ ChartAreaPanel::ChartAreaPanel(weld::Widget* pParent,
         const css::uno::Reference<css::frame::XFrame>& rxFrame,
         ChartController* pController):
     svx::sidebar::AreaPropertyPanelBase(pParent, rxFrame),
-    mxModel(pController->getModel()),
+    mxModel(pController->getChartModel()),
     mxListener(new ChartSidebarModifyListener(this)),
     mxSelectionListener(new ChartSidebarSelectionListener(this)),
     mbUpdate(true),
@@ -294,8 +295,7 @@ ChartAreaPanel::~ChartAreaPanel()
 
 void ChartAreaPanel::Initialize()
 {
-    css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, 
css::uno::UNO_QUERY_THROW);
-    xBroadcaster->addModifyListener(mxListener);
+    mxModel->addModifyListener(mxListener);
 
     css::uno::Reference<css::view::XSelectionSupplier> 
xSelectionSupplier(mxModel->getCurrentController(), css::uno::UNO_QUERY);
     if (xSelectionSupplier.is())
@@ -334,7 +334,7 @@ void ChartAreaPanel::setFillFloatTransparence(
     const OUString& aName = rItem.GetName();
     css::uno::Any aGradientVal;
     rItem.QueryValue(aGradientVal, MID_FILLGRADIENT);
-    OUString aNewName = 
PropertyHelper::addTransparencyGradientUniqueNameToTable(aGradientVal, 
css::uno::Reference<css::lang::XMultiServiceFactory>(mxModel, 
css::uno::UNO_QUERY_THROW), aName);
+    OUString aNewName = 
PropertyHelper::addTransparencyGradientUniqueNameToTable(aGradientVal, mxModel, 
aName);
     xPropSet->setPropertyValue("FillTransparenceGradientName", 
css::uno::Any(aNewName));
 }
 
@@ -374,7 +374,7 @@ void ChartAreaPanel::setFillStyleAndGradient(const 
XFillStyleItem* pStyleItem,
     const OUString& aName = rGradientItem.GetName();
     css::uno::Any aGradientVal;
     rGradientItem.QueryValue(aGradientVal, MID_FILLGRADIENT);
-    OUString aNewName = 
PropertyHelper::addGradientUniqueNameToTable(aGradientVal, 
css::uno::Reference<css::lang::XMultiServiceFactory>(mxModel, 
css::uno::UNO_QUERY_THROW), aName);
+    OUString aNewName = 
PropertyHelper::addGradientUniqueNameToTable(aGradientVal, mxModel, aName);
     xPropSet->setPropertyValue("FillGradientName", css::uno::Any(aNewName));
 }
 
@@ -405,7 +405,7 @@ void ChartAreaPanel::setFillStyleAndBitmap(const 
XFillStyleItem* pStyleItem,
     css::uno::Any aBitmap;
     rBitmapItem.QueryValue(aBitmap, MID_BITMAP);
     const OUString& aPreferredName = rBitmapItem.GetName();
-    aBitmap <<= PropertyHelper::addBitmapUniqueNameToTable(aBitmap, 
css::uno::Reference<css::lang::XMultiServiceFactory>(mxModel, 
css::uno::UNO_QUERY_THROW), aPreferredName);
+    aBitmap <<= PropertyHelper::addBitmapUniqueNameToTable(aBitmap, mxModel, 
aPreferredName);
     xPropSet->setPropertyValue("FillBitmapName", aBitmap);
 }
 
@@ -507,12 +507,11 @@ void ChartAreaPanel::selectionChanged(bool bCorrectType)
         updateData();
 }
 
-void ChartAreaPanel::doUpdateModel(css::uno::Reference<css::frame::XModel> 
xModel)
+void ChartAreaPanel::doUpdateModel(rtl::Reference<::chart::ChartModel> xModel)
 {
     if (mbModelValid)
     {
-        css::uno::Reference<css::util::XModifyBroadcaster> 
xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW);
-        xBroadcaster->removeModifyListener(mxListener);
+        mxModel->removeModifyListener(mxListener);
 
         css::uno::Reference<css::view::XSelectionSupplier> 
oldSelectionSupplier(
             mxModel->getCurrentController(), css::uno::UNO_QUERY);
@@ -527,8 +526,7 @@ void 
ChartAreaPanel::doUpdateModel(css::uno::Reference<css::frame::XModel> xMode
     if (!mbModelValid)
         return;
 
-    css::uno::Reference<css::util::XModifyBroadcaster> 
xBroadcasterNew(mxModel, css::uno::UNO_QUERY_THROW);
-    xBroadcasterNew->addModifyListener(mxListener);
+    mxModel->addModifyListener(mxListener);
 
     css::uno::Reference<css::view::XSelectionSupplier> 
xSelectionSupplier(mxModel->getCurrentController(), css::uno::UNO_QUERY);
     if (xSelectionSupplier.is())
@@ -537,7 +535,9 @@ void 
ChartAreaPanel::doUpdateModel(css::uno::Reference<css::frame::XModel> xMode
 
 void ChartAreaPanel::updateModel( css::uno::Reference<css::frame::XModel> 
xModel)
 {
-    doUpdateModel(xModel);
+    ::chart::ChartModel* pModel = 
dynamic_cast<::chart::ChartModel*>(xModel.get());
+    assert(!xModel || pModel);
+    doUpdateModel(pModel);
 }
 
 
diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.hxx 
b/chart2/source/controller/sidebar/ChartAreaPanel.hxx
index 110132ca4356..132513412518 100644
--- a/chart2/source/controller/sidebar/ChartAreaPanel.hxx
+++ b/chart2/source/controller/sidebar/ChartAreaPanel.hxx
@@ -67,12 +67,12 @@ public:
 
 private:
 
-    css::uno::Reference<css::frame::XModel> mxModel;
+    rtl::Reference<::chart::ChartModel> mxModel;
     css::uno::Reference<css::util::XModifyListener> mxListener;
     rtl::Reference<ChartSidebarSelectionListener> mxSelectionListener;
 
     void Initialize();
-    void doUpdateModel(css::uno::Reference<css::frame::XModel> xModel);
+    void doUpdateModel(rtl::Reference<::chart::ChartModel> xModel);
 
     bool mbUpdate;
     bool mbModelValid;
diff --git a/chart2/source/controller/sidebar/ChartAxisPanel.cxx 
b/chart2/source/controller/sidebar/ChartAxisPanel.cxx
index c5e4d91c54e2..2b6bc5535b27 100644
--- a/chart2/source/controller/sidebar/ChartAxisPanel.cxx
+++ b/chart2/source/controller/sidebar/ChartAxisPanel.cxx
@@ -28,6 +28,7 @@
 
 #include "ChartAxisPanel.hxx"
 #include <ChartController.hxx>
+#include <ChartModel.hxx>
 
 using namespace css;
 using namespace css::uno;
@@ -36,7 +37,7 @@ namespace chart::sidebar {
 
 namespace {
 
-bool isLabelShown(const css::uno::Reference<css::frame::XModel>& xModel,
+bool isLabelShown(const rtl::Reference<::chart::ChartModel>& xModel,
         const OUString& rCID)
 {
     css::uno::Reference< css::beans::XPropertySet > xAxis(
@@ -54,7 +55,7 @@ bool isLabelShown(const 
css::uno::Reference<css::frame::XModel>& xModel,
     return bVisible;
 }
 
-void setLabelShown(const css::uno::Reference<css::frame::XModel>& xModel,
+void setLabelShown(const rtl::Reference<::chart::ChartModel>& xModel,
         const OUString& rCID, bool bVisible)
 {
     css::uno::Reference< css::beans::XPropertySet > xAxis(
@@ -79,7 +80,7 @@ AxisLabelPosMap const aLabelPosMap[] = {
     { 3, css::chart::ChartAxisLabelPosition_OUTSIDE_END }
 };
 
-sal_Int32 getLabelPosition(const css::uno::Reference<css::frame::XModel>& 
xModel,
+sal_Int32 getLabelPosition(const rtl::Reference<::chart::ChartModel>& xModel,
         const OUString& rCID)
 {
     css::uno::Reference< css::beans::XPropertySet > xAxis(
@@ -103,7 +104,7 @@ sal_Int32 getLabelPosition(const 
css::uno::Reference<css::frame::XModel>& xModel
     return 0;
 }
 
-void setLabelPosition(const css::uno::Reference<css::frame::XModel>& xModel,
+void setLabelPosition(const rtl::Reference<::chart::ChartModel>& xModel,
         const OUString& rCID, sal_Int32 nPos)
 {
     css::uno::Reference< css::beans::XPropertySet > xAxis(
@@ -122,7 +123,7 @@ void setLabelPosition(const 
css::uno::Reference<css::frame::XModel>& xModel,
     xAxis->setPropertyValue("LabelPosition", css::uno::Any(ePos));
 }
 
-bool isReverse(const css::uno::Reference<css::frame::XModel>& xModel,
+bool isReverse(const rtl::Reference<::chart::ChartModel>& xModel,
         const OUString& rCID)
 {
     css::uno::Reference< css::chart2::XAxis > xAxis =
@@ -136,7 +137,7 @@ bool isReverse(const 
css::uno::Reference<css::frame::XModel>& xModel,
     return aData.Orientation == css::chart2::AxisOrientation_REVERSE;
 }
 
-void setReverse(const css::uno::Reference<css::frame::XModel>& xModel,
+void setReverse(const rtl::Reference<::chart::ChartModel>& xModel,
         const OUString& rCID, bool bReverse)
 {
     css::uno::Reference< css::chart2::XAxis > xAxis =
@@ -174,7 +175,7 @@ OUString getCID(const 
css::uno::Reference<css::frame::XModel>& xModel)
     return aCID;
 }
 
-void setAxisRotation(const css::uno::Reference<css::frame::XModel>& xModel,
+void setAxisRotation(const rtl::Reference<::chart::ChartModel>& xModel,
         const OUString& rCID, double nVal)
 {
     css::uno::Reference< css::beans::XPropertySet > xAxis(
@@ -186,7 +187,7 @@ void setAxisRotation(const 
css::uno::Reference<css::frame::XModel>& xModel,
     xAxis->setPropertyValue("TextRotation", css::uno::Any(nVal));
 }
 
-double getAxisRotation(const css::uno::Reference<css::frame::XModel>& xModel,
+double getAxisRotation(const rtl::Reference<::chart::ChartModel>& xModel,
         const OUString& rCID)
 {
     css::uno::Reference< css::beans::XPropertySet > xAxis(
@@ -212,7 +213,7 @@ ChartAxisPanel::ChartAxisPanel(
     , mxLBLabelPos(m_xBuilder->weld_combo_box("comboboxtext_label_position"))
     , mxGridLabel(m_xBuilder->weld_widget("label_props"))
     , mxNFRotation(m_xBuilder->weld_metric_spin_button("spinbutton1", 
FieldUnit::DEGREE))
-    , mxModel(pController->getModel())
+    , mxModel(pController->getChartModel())
     , mxModifyListener(new ChartSidebarModifyListener(this))
     , mxSelectionListener(new ChartSidebarSelectionListener(this, 
OBJECTTYPE_AXIS))
     , mbModelValid(true)
@@ -235,8 +236,7 @@ ChartAxisPanel::~ChartAxisPanel()
 
 void ChartAxisPanel::Initialize()
 {
-    css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, 
css::uno::UNO_QUERY_THROW);
-    xBroadcaster->addModifyListener(mxModifyListener);
+    mxModel->addModifyListener(mxModifyListener);
 
     css::uno::Reference<css::view::XSelectionSupplier> 
xSelectionSupplier(mxModel->getCurrentController(), css::uno::UNO_QUERY);
     if (xSelectionSupplier.is())
@@ -306,12 +306,11 @@ void ChartAxisPanel::modelInvalid()
     mbModelValid = false;
 }
 
-void ChartAxisPanel::doUpdateModel(css::uno::Reference<css::frame::XModel> 
xModel)
+void ChartAxisPanel::doUpdateModel(rtl::Reference<::chart::ChartModel> xModel)
 {
     if (mbModelValid)
     {
-        css::uno::Reference<css::util::XModifyBroadcaster> 
xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW);
-        xBroadcaster->removeModifyListener(mxModifyListener);
+        mxModel->removeModifyListener(mxModifyListener);
 
         css::uno::Reference<css::view::XSelectionSupplier> 
oldSelectionSupplier(
             mxModel->getCurrentController(), css::uno::UNO_QUERY);
@@ -326,8 +325,7 @@ void 
ChartAxisPanel::doUpdateModel(css::uno::Reference<css::frame::XModel> xMode
     if (!mbModelValid)
         return;
 
-    css::uno::Reference<css::util::XModifyBroadcaster> 
xBroadcasterNew(mxModel, css::uno::UNO_QUERY_THROW);
-    xBroadcasterNew->addModifyListener(mxModifyListener);
+    mxModel->addModifyListener(mxModifyListener);
 
     css::uno::Reference<css::view::XSelectionSupplier> 
xSelectionSupplier(mxModel->getCurrentController(), css::uno::UNO_QUERY);
     if (xSelectionSupplier.is())
@@ -336,7 +334,9 @@ void 
ChartAxisPanel::doUpdateModel(css::uno::Reference<css::frame::XModel> xMode
 
 void ChartAxisPanel::updateModel(css::uno::Reference<css::frame::XModel> 
xModel)
 {
-    doUpdateModel(xModel);
+    ::chart::ChartModel* pModel = 
dynamic_cast<::chart::ChartModel*>(xModel.get());
+    assert(!xModel || pModel);
+    doUpdateModel(pModel);
 }
 
 void ChartAxisPanel::selectionChanged(bool bCorrectType)
diff --git a/chart2/source/controller/sidebar/ChartAxisPanel.hxx 
b/chart2/source/controller/sidebar/ChartAxisPanel.hxx
index 0185f4b9431f..32f3c0b3331e 100644
--- a/chart2/source/controller/sidebar/ChartAxisPanel.hxx
+++ b/chart2/source/controller/sidebar/ChartAxisPanel.hxx
@@ -74,14 +74,14 @@ private:
     std::unique_ptr<weld::Widget> mxGridLabel;
     std::unique_ptr<weld::MetricSpinButton> mxNFRotation;
 
-    css::uno::Reference<css::frame::XModel> mxModel;
+    rtl::Reference<::chart::ChartModel> mxModel;
     css::uno::Reference<css::util::XModifyListener> mxModifyListener;
     css::uno::Reference<css::view::XSelectionChangeListener> 
mxSelectionListener;
 
     bool mbModelValid;
 
     void Initialize();
-    void doUpdateModel(css::uno::Reference<css::frame::XModel> xModel);
+    void doUpdateModel(rtl::Reference<::chart::ChartModel> xModel);
 
     DECL_LINK(CheckBoxHdl, weld::Toggleable&, void);
     DECL_LINK(ListBoxHdl, weld::ComboBox&, void);
diff --git a/chart2/source/controller/sidebar/ChartColorWrapper.cxx 
b/chart2/source/controller/sidebar/ChartColorWrapper.cxx
index 08fbcdb1b6a9..ed94c0b0fa45 100644
--- a/chart2/source/controller/sidebar/ChartColorWrapper.cxx
+++ b/chart2/source/controller/sidebar/ChartColorWrapper.cxx
@@ -12,6 +12,7 @@
 #include <string_view>
 
 #include "ChartColorWrapper.hxx"
+#include <ChartModel.hxx>
 
 #include <ObjectIdentifier.hxx>
 #include <PropertyHelper.hxx>
@@ -53,7 +54,7 @@ OUString getCID(const 
css::uno::Reference<css::frame::XModel>& xModel)
 }
 
 css::uno::Reference<css::beans::XPropertySet> getPropSet(
-        const css::uno::Reference<css::frame::XModel>& xModel)
+        const rtl::Reference<::chart::ChartModel>& xModel)
 {
     OUString aCID = getCID(xModel);
     css::uno::Reference<css::beans::XPropertySet> xPropSet =
@@ -76,7 +77,7 @@ css::uno::Reference<css::beans::XPropertySet> getPropSet(
 }
 
 ChartColorWrapper::ChartColorWrapper(
-        css::uno::Reference<css::frame::XModel> const & xModel,
+        rtl::Reference<::chart::ChartModel> const & xModel,
         SvxColorToolBoxControl* pControl,
         const OUString& rName):
     mxModel(xModel),
@@ -98,7 +99,7 @@ void ChartColorWrapper::operator()([[maybe_unused]] const 
OUString& , const svx:
     xPropSet->setPropertyValue(maPropertyName, 
css::uno::makeAny(rColor.m_aColor));
 }
 
-void ChartColorWrapper::updateModel(const 
css::uno::Reference<css::frame::XModel>& xModel)
+void ChartColorWrapper::updateModel(const rtl::Reference<::chart::ChartModel>& 
xModel)
 {
     mxModel = xModel;
 }
@@ -133,14 +134,14 @@ void ChartColorWrapper::updateData()
 }
 
 ChartLineStyleWrapper::ChartLineStyleWrapper(
-        css::uno::Reference<css::frame::XModel> const & xModel,
+        rtl::Reference<::chart::ChartModel> const & xModel,
         SvxLineStyleToolBoxControl* pControl)
     : mxModel(xModel)
     , mpControl(pControl)
 {
 }
 
-void ChartLineStyleWrapper::updateModel(const 
css::uno::Reference<css::frame::XModel>& xModel)
+void ChartLineStyleWrapper::updateModel(const 
rtl::Reference<::chart::ChartModel>& xModel)
 {
     mxModel = xModel;
 }
@@ -218,7 +219,7 @@ bool ChartLineStyleWrapper::operator()(std::u16string_view 
rCommand, const css::
         css::uno::Any aAny;
         aDashItem.QueryValue(aAny, MID_LINEDASH);
         OUString aDashName = PropertyHelper::addLineDashUniqueNameToTable(aAny,
-                css::uno::Reference<css::lang::XMultiServiceFactory>(mxModel, 
css::uno::UNO_QUERY),
+                mxModel,
                 "");
         xPropSet->setPropertyValue("LineDash", aAny);
         xPropSet->setPropertyValue("LineDashName", css::uno::Any(aDashName));
diff --git a/chart2/source/controller/sidebar/ChartColorWrapper.hxx 
b/chart2/source/controller/sidebar/ChartColorWrapper.hxx
index 694c5a9f7786..861f1e1628ea 100644
--- a/chart2/source/controller/sidebar/ChartColorWrapper.hxx
+++ b/chart2/source/controller/sidebar/ChartColorWrapper.hxx
@@ -11,9 +11,10 @@
 
 #include <com/sun/star/uno/Reference.hxx>
 #include <svx/Palette.hxx>
+#include <rtl/ref.hxx>
 
 namespace com::sun::star::frame { class XModel; }
-
+namespace chart { class ChartModel; }
 class SvxColorToolBoxControl;
 class SvxLineStyleToolBoxControl;
 
@@ -22,20 +23,20 @@ namespace chart::sidebar {
 class ChartColorWrapper
 {
 public:
-    ChartColorWrapper(css::uno::Reference<css::frame::XModel> const & xModel,
+    ChartColorWrapper(rtl::Reference<::chart::ChartModel> const & xModel,
             SvxColorToolBoxControl* pControl,
             const OUString& rPropertyName);
 
     void operator()(const OUString& rCommand, const svx::NamedThemedColor& 
rColor);
         // ColorSelectFunction signature
 
-    void updateModel(const css::uno::Reference<css::frame::XModel>& xModel);
+    void updateModel(const rtl::Reference<::chart::ChartModel>& xModel);
 
     void updateData();
 
 private:
 
-    css::uno::Reference<css::frame::XModel> mxModel;
+    rtl::Reference<::chart::ChartModel> mxModel;
 
     SvxColorToolBoxControl* mpControl;
 
@@ -45,18 +46,18 @@ private:
 class ChartLineStyleWrapper
 {
 public:
-    ChartLineStyleWrapper(css::uno::Reference<css::frame::XModel> const & 
xModel,
+    ChartLineStyleWrapper(rtl::Reference<::chart::ChartModel> const & xModel,
             SvxLineStyleToolBoxControl* pControl);
 
     bool operator()(std::u16string_view rCommand, const css::uno::Any& rValue);
 
-    void updateModel(const css::uno::Reference<css::frame::XModel>& xModel);
+    void updateModel(const rtl::Reference<::chart::ChartModel>& xModel);
 
     void updateData();
 
 private:
 
-    css::uno::Reference<css::frame::XModel> mxModel;
+    rtl::Reference<::chart::ChartModel> mxModel;
 
     SvxLineStyleToolBoxControl* mpControl;
 };
diff --git a/chart2/source/controller/sidebar/ChartElementsPanel.cxx 
b/chart2/source/controller/sidebar/ChartElementsPanel.cxx
index 75d291d0cdc4..bae915ab2bb2 100644
--- a/chart2/source/controller/sidebar/ChartElementsPanel.cxx
+++ b/chart2/source/controller/sidebar/ChartElementsPanel.cxx
@@ -144,7 +144,7 @@ void setLegendOverlay(const 
css::uno::Reference<css::frame::XModel>& xModel, boo
     xLegendProp->setPropertyValue("Overlay", css::uno::Any(bOverlay));
 }
 
-bool isTitleVisible(const css::uno::Reference<css::frame::XModel>& xModel, 
TitleHelper::eTitleType eTitle)
+bool isTitleVisible(const rtl::Reference<::chart::ChartModel>& xModel, 
TitleHelper::eTitleType eTitle)
 {
     css::uno::Reference<css::uno::XInterface> xTitle = 
TitleHelper::getTitle(eTitle, xModel);
     if (!xTitle.is())
@@ -156,7 +156,7 @@ bool isTitleVisible(const 
css::uno::Reference<css::frame::XModel>& xModel, Title
     return bVisible;
 }
 
-bool isGridVisible(const css::uno::Reference<css::frame::XModel>& xModel, 
GridType eType)
+bool isGridVisible(const rtl::Reference<::chart::ChartModel>& xModel, GridType 
eType)
 {
     rtl::Reference< Diagram > xDiagram(ChartModelHelper::findDiagram(xModel));
     if(xDiagram.is())
@@ -173,7 +173,7 @@ bool isGridVisible(const 
css::uno::Reference<css::frame::XModel>& xModel, GridTy
     return false;
 }
 
-void setGridVisible(const css::uno::Reference<css::frame::XModel>& xModel, 
GridType eType, bool bVisible)
+void setGridVisible(const rtl::Reference<::chart::ChartModel>& xModel, 
GridType eType, bool bVisible)
 {
     rtl::Reference< Diagram > xDiagram(ChartModelHelper::findDiagram(xModel));
     if(!xDiagram.is())
@@ -193,7 +193,7 @@ void setGridVisible(const 
css::uno::Reference<css::frame::XModel>& xModel, GridT
         AxisHelper::hideGrid(nDimensionIndex, nCooSysIndex, bMajor, xDiagram);
 }
 
-bool isAxisVisible(const css::uno::Reference<css::frame::XModel>& xModel, 
AxisType eType)
+bool isAxisVisible(const rtl::Reference<::chart::ChartModel>& xModel, AxisType 
eType)
 {
     rtl::Reference< Diagram > xDiagram(ChartModelHelper::findDiagram(xModel));
     if(xDiagram.is())
@@ -212,7 +212,7 @@ bool isAxisVisible(const 
css::uno::Reference<css::frame::XModel>& xModel, AxisTy
     return false;
 }
 
-void setAxisVisible(const css::uno::Reference<css::frame::XModel>& xModel, 
AxisType eType, bool bVisible)
+void setAxisVisible(const rtl::Reference<::chart::ChartModel>& xModel, 
AxisType eType, bool bVisible)
 {
     rtl::Reference< Diagram > xDiagram(ChartModelHelper::findDiagram(xModel));
     if(!xDiagram.is())
@@ -327,7 +327,7 @@ ChartElementsPanel::ChartElementsPanel(
     , mxLBGrid(m_xBuilder->weld_label("label_gri"))
     , mxLBLegendPosition(m_xBuilder->weld_combo_box("comboboxtext_legend"))
     , mxBoxLegend(m_xBuilder->weld_widget("box_legend"))
-    , mxModel(pController->getModel())
+    , mxModel(pController->getChartModel())
     , mxListener(new ChartSidebarModifyListener(this))
     , mbModelValid(true)
 {
@@ -374,8 +374,7 @@ ChartElementsPanel::~ChartElementsPanel()
 
 void ChartElementsPanel::Initialize()
 {
-    css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, 
css::uno::UNO_QUERY_THROW);
-    xBroadcaster->addModifyListener(mxListener);
+    mxModel->addModifyListener(mxListener);
     updateData();
 
     Link<weld::Toggleable&,void> aLink = LINK(this, ChartElementsPanel, 
CheckBoxHdl);
@@ -563,12 +562,11 @@ void ChartElementsPanel::modelInvalid()
     mbModelValid = false;
 }
 
-void ChartElementsPanel::doUpdateModel(css::uno::Reference<css::frame::XModel> 
xModel)
+void ChartElementsPanel::doUpdateModel(rtl::Reference<::chart::ChartModel> 
xModel)
 {
     if (mbModelValid)
     {
-        css::uno::Reference<css::util::XModifyBroadcaster> 
xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW);
-        xBroadcaster->removeModifyListener(mxListener);
+        mxModel->removeModifyListener(mxListener);
     }
 
     mxModel = xModel;
@@ -577,13 +575,14 @@ void 
ChartElementsPanel::doUpdateModel(css::uno::Reference<css::frame::XModel> x
     if (!mbModelValid)
         return;
 
-    css::uno::Reference<css::util::XModifyBroadcaster> 
xBroadcasterNew(mxModel, css::uno::UNO_QUERY_THROW);
-    xBroadcasterNew->addModifyListener(mxListener);
+    mxModel->addModifyListener(mxListener);
 }
 
 void ChartElementsPanel::updateModel(css::uno::Reference<css::frame::XModel> 
xModel)
 {
-    doUpdateModel(xModel);
+    ::chart::ChartModel* pModel = 
dynamic_cast<::chart::ChartModel*>(xModel.get());
+    assert(!xModel || pModel);
+    doUpdateModel(pModel);
 }
 
 IMPL_LINK(ChartElementsPanel, CheckBoxHdl, weld::Toggleable&, rCheckBox, void)
diff --git a/chart2/source/controller/sidebar/ChartElementsPanel.hxx 
b/chart2/source/controller/sidebar/ChartElementsPanel.hxx
index ff8516e3e4c8..07c7ee19c3db 100644
--- a/chart2/source/controller/sidebar/ChartElementsPanel.hxx
+++ b/chart2/source/controller/sidebar/ChartElementsPanel.hxx
@@ -93,7 +93,7 @@ private:
 
     vcl::EnumContext maContext;
 
-    css::uno::Reference<css::frame::XModel> mxModel;
+    rtl::Reference<::chart::ChartModel> mxModel;
     css::uno::Reference<css::util::XModifyListener> mxListener;
 
     bool mbModelValid;
@@ -102,7 +102,7 @@ private:
     OUString maTextSubTitle;
 
     void Initialize();
-    void doUpdateModel(css::uno::Reference<css::frame::XModel> xModel);
+    void doUpdateModel(rtl::Reference<::chart::ChartModel> xModel);
 
     void setTitleVisible(TitleHelper::eTitleType eTitle, bool bVisible);
 
diff --git a/chart2/source/controller/sidebar/ChartErrorBarPanel.cxx 
b/chart2/source/controller/sidebar/ChartErrorBarPanel.cxx
index 0cb228bc1222..0db870b8bcc5 100644
--- a/chart2/source/controller/sidebar/ChartErrorBarPanel.cxx
+++ b/chart2/source/controller/sidebar/ChartErrorBarPanel.cxx
@@ -23,6 +23,7 @@
 
 #include "ChartErrorBarPanel.hxx"
 #include <ChartController.hxx>
+#include <ChartModel.hxx>
 #include <vcl/svapp.hxx>
 #include <sal/log.hxx>
 
@@ -41,12 +42,12 @@ enum class ErrorBarDirection
 };
 
 css::uno::Reference<css::beans::XPropertySet> getErrorBarPropSet(
-        const css::uno::Reference<css::frame::XModel>& xModel, const OUString& 
rCID)
+        const rtl::Reference<::chart::ChartModel>& xModel, const OUString& 
rCID)
 {
     return ObjectIdentifier::getObjectPropertySet(rCID, xModel);
 }
 
-bool showPositiveError(const css::uno::Reference<css::frame::XModel>& xModel,
+bool showPositiveError(const rtl::Reference<::chart::ChartModel>& xModel,
         const OUString& rCID)
 {
     css::uno::Reference<css::beans::XPropertySet> xPropSet =
@@ -65,7 +66,7 @@ bool showPositiveError(const 
css::uno::Reference<css::frame::XModel>& xModel,
     return bShow;
 }
 
-bool showNegativeError(const css::uno::Reference<css::frame::XModel>& xModel,
+bool showNegativeError(const rtl::Reference<::chart::ChartModel>& xModel,
         const OUString& rCID)
 {
     css::uno::Reference<css::beans::XPropertySet> xPropSet =
@@ -84,7 +85,7 @@ bool showNegativeError(const 
css::uno::Reference<css::frame::XModel>& xModel,
     return bShow;
 }
 
-void setShowPositiveError(const css::uno::Reference<css::frame::XModel>& 
xModel,
+void setShowPositiveError(const rtl::Reference<::chart::ChartModel>& xModel,
         const OUString& rCID, bool bShow)
 {
     css::uno::Reference<css::beans::XPropertySet> xPropSet =
@@ -96,7 +97,7 @@ void setShowPositiveError(const 
css::uno::Reference<css::frame::XModel>& xModel,
     xPropSet->setPropertyValue("ShowPositiveError", css::uno::Any(bShow));
 }
 
-void setShowNegativeError(const css::uno::Reference<css::frame::XModel>& 
xModel,
+void setShowNegativeError(const rtl::Reference<::chart::ChartModel>& xModel,
         const OUString& rCID, bool bShow)
 {
     css::uno::Reference<css::beans::XPropertySet> xPropSet =
@@ -124,7 +125,7 @@ ErrorBarTypeMap const aErrorBarType[] = {
     { 6, css::chart::ErrorBarStyle::ERROR_MARGIN },
 };
 
-sal_Int32 getTypePos(const css::uno::Reference<css::frame::XModel>& xModel,
+sal_Int32 getTypePos(const rtl::Reference<::chart::ChartModel>& xModel,
         const OUString& rCID)
 {
     css::uno::Reference<css::beans::XPropertySet> xPropSet =
@@ -150,7 +151,7 @@ sal_Int32 getTypePos(const 
css::uno::Reference<css::frame::XModel>& xModel,
     return 0;
 }
 
-void setTypePos(const css::uno::Reference<css::frame::XModel>& xModel,
+void setTypePos(const rtl::Reference<::chart::ChartModel>& xModel,
         const OUString& rCID, sal_Int32 nPos)
 {
     css::uno::Reference<css::beans::XPropertySet> xPropSet =
@@ -169,7 +170,7 @@ void setTypePos(const 
css::uno::Reference<css::frame::XModel>& xModel,
     xPropSet->setPropertyValue("ErrorBarStyle", css::uno::Any(nApi));
 }
 
-double getValue(const css::uno::Reference<css::frame::XModel>& xModel,
+double getValue(const rtl::Reference<::chart::ChartModel>& xModel,
         const OUString& rCID, ErrorBarDirection eDir)
 {
     css::uno::Reference<css::beans::XPropertySet> xPropSet =
@@ -193,7 +194,7 @@ double getValue(const 
css::uno::Reference<css::frame::XModel>& xModel,
     return nVal;
 }
 
-void setValue(const css::uno::Reference<css::frame::XModel>& xModel,
+void setValue(const rtl::Reference<::chart::ChartModel>& xModel,
         const OUString& rCID, double nVal, ErrorBarDirection eDir)
 {
     css::uno::Reference<css::beans::XPropertySet> xPropSet =
@@ -209,7 +210,7 @@ void setValue(const 
css::uno::Reference<css::frame::XModel>& xModel,
     xPropSet->setPropertyValue(aName, css::uno::Any(nVal));
 }
 
-OUString getCID(const css::uno::Reference<css::frame::XModel>& xModel)
+OUString getCID(const rtl::Reference<::chart::ChartModel>& xModel)
 {
     css::uno::Reference<css::frame::XController> 
xController(xModel->getCurrentController());
     css::uno::Reference<css::view::XSelectionSupplier> 
xSelectionSupplier(xController, css::uno::UNO_QUERY);
@@ -242,7 +243,7 @@ ChartErrorBarPanel::ChartErrorBarPanel(weld::Widget* 
pParent, ChartController* p
     , mxLBType(m_xBuilder->weld_combo_box("comboboxtext_type"))
     , mxMFPos(m_xBuilder->weld_spin_button("spinbutton_pos"))
     , mxMFNeg(m_xBuilder->weld_spin_button("spinbutton_neg"))
-    , mxModel(pController->getModel())
+    , mxModel(pController->getChartModel())
     , mxListener(new ChartSidebarModifyListener(this))
     , mbModelValid(true)
 {
@@ -265,8 +266,7 @@ ChartErrorBarPanel::~ChartErrorBarPanel()
 
 void ChartErrorBarPanel::Initialize()
 {
-    css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, 
css::uno::UNO_QUERY_THROW);
-    xBroadcaster->addModifyListener(mxListener);
+    mxModel->addModifyListener(mxListener);
     mxRBNeg->set_active(false);
     mxRBPos->set_active(false);
     mxRBPosAndNeg->set_active(false);
@@ -370,12 +370,11 @@ void ChartErrorBarPanel::modelInvalid()
     mbModelValid = false;
 }
 
-void ChartErrorBarPanel::doUpdateModel(css::uno::Reference<css::frame::XModel> 
xModel)
+void ChartErrorBarPanel::doUpdateModel(rtl::Reference<::chart::ChartModel> 
xModel)
 {
     if (mbModelValid)
     {
-        css::uno::Reference<css::util::XModifyBroadcaster> 
xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW);
-        xBroadcaster->removeModifyListener(mxListener);
+        mxModel->removeModifyListener(mxListener);
     }
 
     mxModel = xModel;
@@ -384,13 +383,14 @@ void 
ChartErrorBarPanel::doUpdateModel(css::uno::Reference<css::frame::XModel> x
     if (!mbModelValid)
         return;
 
-    css::uno::Reference<css::util::XModifyBroadcaster> 
xBroadcasterNew(mxModel, css::uno::UNO_QUERY_THROW);
-    xBroadcasterNew->addModifyListener(mxListener);
+    mxModel->addModifyListener(mxListener);
 }
 
 void ChartErrorBarPanel::updateModel(css::uno::Reference<css::frame::XModel> 
xModel)
 {
-    doUpdateModel(xModel);
+    ::chart::ChartModel* pModel = 
dynamic_cast<::chart::ChartModel*>(xModel.get());
+    assert(!xModel || pModel);
+    doUpdateModel(pModel);
 }
 
 IMPL_LINK_NOARG(ChartErrorBarPanel, RadioBtnHdl, weld::Toggleable&, void)
diff --git a/chart2/source/controller/sidebar/ChartErrorBarPanel.hxx 
b/chart2/source/controller/sidebar/ChartErrorBarPanel.hxx
index c1bb6b4f8b94..1613006b7ea5 100644
--- a/chart2/source/controller/sidebar/ChartErrorBarPanel.hxx
+++ b/chart2/source/controller/sidebar/ChartErrorBarPanel.hxx
@@ -21,6 +21,7 @@ namespace com::sun::star::util { class XModifyListener; }
 namespace chart {
 
 class ChartController;
+class ChartModel;
 
 namespace sidebar {
 
@@ -72,13 +73,13 @@ private:
     std::unique_ptr<weld::SpinButton> mxMFPos;
     std::unique_ptr<weld::SpinButton> mxMFNeg;
 
-    css::uno::Reference<css::frame::XModel> mxModel;
+    rtl::Reference<::chart::ChartModel> mxModel;
     css::uno::Reference<css::util::XModifyListener> mxListener;
 
     bool mbModelValid;
 
     void Initialize();
-    void doUpdateModel(css::uno::Reference<css::frame::XModel> xModel);
+    void doUpdateModel(rtl::Reference<::chart::ChartModel> xModel);
 
     DECL_LINK(RadioBtnHdl, weld::Toggleable&, void);
     DECL_LINK(ListBoxHdl, weld::ComboBox&, void);
diff --git a/chart2/source/controller/sidebar/ChartLinePanel.cxx 
b/chart2/source/controller/sidebar/ChartLinePanel.cxx
index f50581a3e04f..94658d26ed2d 100644
--- a/chart2/source/controller/sidebar/ChartLinePanel.cxx
+++ b/chart2/source/controller/sidebar/ChartLinePanel.cxx
@@ -10,6 +10,7 @@
 #include "ChartLinePanel.hxx"
 
 #include <ChartController.hxx>
+#include <ChartModel.hxx>
 
 #include <svx/xlnwtit.hxx>
 #include <svx/xlinjoit.hxx>
@@ -46,7 +47,7 @@ SvxColorToolBoxControl* getColorToolBoxControl(const 
ToolbarUnoDispatcher& rTool
     return pToolBoxColorControl;
 }
 
-OUString getCID(const css::uno::Reference<css::frame::XModel>& xModel)
+OUString getCID(const rtl::Reference<::chart::ChartModel>& xModel)
 {
     css::uno::Reference<css::frame::XController> 
xController(xModel->getCurrentController());
     css::uno::Reference<css::view::XSelectionSupplier> 
xSelectionSupplier(xController, css::uno::UNO_QUERY);
@@ -67,7 +68,7 @@ OUString getCID(const 
css::uno::Reference<css::frame::XModel>& xModel)
 }
 
 css::uno::Reference<css::beans::XPropertySet> getPropSet(
-        const css::uno::Reference<css::frame::XModel>& xModel)
+        const rtl::Reference<::chart::ChartModel>& xModel)
 {
     OUString aCID = getCID(xModel);
     css::uno::Reference<css::beans::XPropertySet> xPropSet =
@@ -124,7 +125,7 @@ ChartLinePanel::ChartLinePanel(weld::Widget* pParent,
         const css::uno::Reference<css::frame::XFrame>& rxFrame,
         ChartController* pController):
     svx::sidebar::LinePropertyPanelBase(pParent, rxFrame),
-    mxModel(pController->getModel()),
+    mxModel(pController->getChartModel()),
     mxListener(new ChartSidebarModifyListener(this)),
     mxSelectionListener(new ChartSidebarSelectionListener(this)),
     mbUpdate(true),
@@ -148,8 +149,7 @@ ChartLinePanel::~ChartLinePanel()
 
 void ChartLinePanel::Initialize()
 {
-    css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, 
css::uno::UNO_QUERY_THROW);
-    xBroadcaster->addModifyListener(mxListener);
+    mxModel->addModifyListener(mxListener);
 
     css::uno::Reference<css::view::XSelectionSupplier> 
xSelectionSupplier(mxModel->getCurrentController(), css::uno::UNO_QUERY);
     if (xSelectionSupplier.is())
@@ -200,12 +200,11 @@ void ChartLinePanel::selectionChanged(bool bCorrectType)
         updateData();
 }
 
-void ChartLinePanel::doUpdateModel(css::uno::Reference<css::frame::XModel> 
xModel)
+void ChartLinePanel::doUpdateModel(rtl::Reference<::chart::ChartModel> xModel)
 {
     if (mbModelValid)
     {
-        css::uno::Reference<css::util::XModifyBroadcaster> 
xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW);
-        xBroadcaster->removeModifyListener(mxListener);
+        mxModel->removeModifyListener(mxListener);
 
         css::uno::Reference<css::view::XSelectionSupplier> 
oldSelectionSupplier(
             mxModel->getCurrentController(), css::uno::UNO_QUERY);
@@ -223,8 +222,7 @@ void 
ChartLinePanel::doUpdateModel(css::uno::Reference<css::frame::XModel> xMode
     maLineStyleWrapper.updateModel(mxModel);
     maLineColorWrapper.updateModel(mxModel);
 
-    css::uno::Reference<css::util::XModifyBroadcaster> 
xBroadcasterNew(mxModel, css::uno::UNO_QUERY_THROW);
-    xBroadcasterNew->addModifyListener(mxListener);
+    mxModel->addModifyListener(mxListener);
 
     css::uno::Reference<css::view::XSelectionSupplier> 
xSelectionSupplier(mxModel->getCurrentController(), css::uno::UNO_QUERY);
     if (xSelectionSupplier.is())
@@ -233,7 +231,9 @@ void 
ChartLinePanel::doUpdateModel(css::uno::Reference<css::frame::XModel> xMode
 
 void ChartLinePanel::updateModel(css::uno::Reference<css::frame::XModel> 
xModel)
 {
-    doUpdateModel(xModel);
+    ::chart::ChartModel* pModel = 
dynamic_cast<::chart::ChartModel*>(xModel.get());
+    assert(!xModel || pModel);
+    doUpdateModel(pModel);
 }
 
 void ChartLinePanel::setLineJoint(const XLineJointItem* pItem)
diff --git a/chart2/source/controller/sidebar/ChartLinePanel.hxx 
b/chart2/source/controller/sidebar/ChartLinePanel.hxx
index c1348c7ac481..10bfd5a4cf0d 100644
--- a/chart2/source/controller/sidebar/ChartLinePanel.hxx
+++ b/chart2/source/controller/sidebar/ChartLinePanel.hxx
@@ -69,12 +69,12 @@ protected:
 
 private:
 
-    css::uno::Reference<css::frame::XModel> mxModel;
+    rtl::Reference<::chart::ChartModel> mxModel;
     css::uno::Reference<css::util::XModifyListener> mxListener;
     rtl::Reference<ChartSidebarSelectionListener> mxSelectionListener;
 
     void Initialize();
-    void doUpdateModel(css::uno::Reference<css::frame::XModel> xModel);
+    void doUpdateModel(rtl::Reference<::chart::ChartModel> xModel);
 
     bool mbUpdate;
     bool mbModelValid;
diff --git a/chart2/source/controller/sidebar/ChartSeriesPanel.cxx 
b/chart2/source/controller/sidebar/ChartSeriesPanel.cxx
index 4e48afa4ac41..a6fa9ea40fcb 100644
--- a/chart2/source/controller/sidebar/ChartSeriesPanel.cxx
+++ b/chart2/source/controller/sidebar/ChartSeriesPanel.cxx
@@ -32,7 +32,7 @@
 
 #include "ChartSeriesPanel.hxx"
 #include <ChartController.hxx>
-
+#include <ChartModel.hxx>
 #include <DataSeriesHelper.hxx>
 #include <DiagramHelper.hxx>
 #include <RegressionCurveHelper.hxx>
@@ -47,7 +47,7 @@ namespace chart::sidebar {
 
 namespace {
 
-bool isDataLabelVisible(const css::uno::Reference<css::frame::XModel>& xModel, 
const OUString& rCID)
+bool isDataLabelVisible(const rtl::Reference<::chart::ChartModel>& xModel, 
const OUString& rCID)
 {
     css::uno::Reference< css::chart2::XDataSeries > xSeries =
         ObjectIdentifier::getDataSeriesForCID(rCID, xModel);
@@ -58,7 +58,7 @@ bool isDataLabelVisible(const 
css::uno::Reference<css::frame::XModel>& xModel, c
     return DataSeriesHelper::hasDataLabelsAtSeries(xSeries);
 }
 
-void setDataLabelVisible(const css::uno::Reference<css::frame::XModel>& 
xModel, const OUString& rCID, bool bVisible)
+void setDataLabelVisible(const rtl::Reference<::chart::ChartModel>& xModel, 
const OUString& rCID, bool bVisible)
 {
     css::uno::Reference< css::chart2::XDataSeries > xSeries =
         ObjectIdentifier::getDataSeriesForCID(rCID, xModel);
@@ -87,7 +87,7 @@ LabelPlacementMap const aLabelPlacementMap[] = {
     { 5, css::chart::DataLabelPlacement::NEAR_ORIGIN }
 };
 
-sal_Int32 getDataLabelPlacement(const css::uno::Reference<css::frame::XModel>& 
xModel,
+sal_Int32 getDataLabelPlacement(const rtl::Reference<::chart::ChartModel>& 
xModel,
         const OUString& rCID)
 {
     css::uno::Reference< css::beans::XPropertySet > xSeries(
@@ -112,7 +112,7 @@ sal_Int32 getDataLabelPlacement(const 
css::uno::Reference<css::frame::XModel>& x
     return 0;
 }
 
-void setDataLabelPlacement(const css::uno::Reference<css::frame::XModel>& 
xModel,
+void setDataLabelPlacement(const rtl::Reference<::chart::ChartModel>& xModel,
         const OUString& rCID, sal_Int32 nPos)
 {
     css::uno::Reference< css::beans::XPropertySet > xSeries(
@@ -134,7 +134,7 @@ void setDataLabelPlacement(const 
css::uno::Reference<css::frame::XModel>& xModel
     xSeries->setPropertyValue("LabelPlacement", css::uno::Any(nApi));
 }
 
-bool isTrendlineVisible(const css::uno::Reference<css::frame::XModel>& xModel,
+bool isTrendlineVisible(const rtl::Reference<::chart::ChartModel>& xModel,
         const OUString& rCID)
 {
     css::uno::Reference< css::chart2::XRegressionCurveContainer > 
xRegressionCurveContainer(
@@ -146,7 +146,7 @@ bool isTrendlineVisible(const 
css::uno::Reference<css::frame::XModel>& xModel,
     return xRegressionCurveContainer->getRegressionCurves().hasElements();
 }
 
-void setTrendlineVisible(const css::uno::Reference<css::frame::XModel>&
+void setTrendlineVisible(const rtl::Reference<::chart::ChartModel>&
         xModel, const OUString& rCID, bool bVisible)
 {
     css::uno::Reference< css::chart2::XRegressionCurveContainer > 
xRegressionCurveContainer(
@@ -167,7 +167,7 @@ void setTrendlineVisible(const 
css::uno::Reference<css::frame::XModel>&
 
 }
 
-bool isErrorBarVisible(const css::uno::Reference<css::frame::XModel>& xModel,
+bool isErrorBarVisible(const rtl::Reference<::chart::ChartModel>& xModel,
                        const OUString& rCID, bool bYError)
 {
     css::uno::Reference< css::chart2::XDataSeries > xSeries =
@@ -179,7 +179,7 @@ bool isErrorBarVisible(const 
css::uno::Reference<css::frame::XModel>& xModel,
     return StatisticsHelper::hasErrorBars(xSeries, bYError);
 }
 
-void setErrorBarVisible(const css::uno::Reference<css::frame::XModel>&
+void setErrorBarVisible(const rtl::Reference<::chart::ChartModel>&
         xModel, const OUString& rCID, bool bYError, bool bVisible)
 {
     css::uno::Reference< css::chart2::XDataSeries > xSeries =
@@ -200,7 +200,7 @@ void setErrorBarVisible(const 
css::uno::Reference<css::frame::XModel>&
     }
 }
 
-bool isPrimaryAxis(const css::uno::Reference<css::frame::XModel>&
+bool isPrimaryAxis(const rtl::Reference<::chart::ChartModel>&
         xModel, const OUString& rCID)
 {
     css::uno::Reference< css::chart2::XDataSeries > xSeries =
@@ -212,7 +212,7 @@ bool isPrimaryAxis(const 
css::uno::Reference<css::frame::XModel>&
     return DataSeriesHelper::getAttachedAxisIndex(xSeries) == 0;
 }
 
-void setAttachedAxisType(const css::uno::Reference<css::frame::XModel>&
+void setAttachedAxisType(const rtl::Reference<::chart::ChartModel>&
         xModel, const OUString& rCID, bool bPrimary)
 {
     const uno::Reference<chart2::XDataSeries>& xDataSeries = 
ObjectIdentifier::getDataSeriesForCID(rCID, xModel);
@@ -220,16 +220,14 @@ void setAttachedAxisType(const 
css::uno::Reference<css::frame::XModel>&
     if (!xDataSeries.is())
         return;
 
-    uno::Reference<chart2::XChartDocument> xChartDoc(xModel, 
css::uno::UNO_QUERY);
-    uno::Reference<chart2::XDiagram> xDiagram = xChartDoc->getFirstDiagram();
+    uno::Reference<chart2::XDiagram> xDiagram = xModel->getFirstDiagram();
     DiagramHelper::attachSeriesToAxis(bPrimary, xDataSeries, xDiagram, 
comphelper::getProcessComponentContext());
 }
 
 css::uno::Reference<css::chart2::XChartType> getChartType(
-        const css::uno::Reference<css::frame::XModel>& xModel)
+        const rtl::Reference<::chart::ChartModel>& xModel)
 {
-    css::uno::Reference<css::chart2::XChartDocument> xChartDoc (xModel, 
css::uno::UNO_QUERY);
-    css::uno::Reference<css::chart2::XDiagram> xDiagram = 
xChartDoc->getFirstDiagram();
+    css::uno::Reference<css::chart2::XDiagram> xDiagram = 
xModel->getFirstDiagram();
     css::uno::Reference< css::chart2::XCoordinateSystemContainer > 
xCooSysContainer( xDiagram, UNO_QUERY_THROW );
     css::uno::Sequence< css::uno::Reference< css::chart2::XCoordinateSystem > 
> xCooSysSequence( xCooSysContainer->getCoordinateSystems());
     css::uno::Reference< css::chart2::XChartTypeContainer > 
xChartTypeContainer( xCooSysSequence[0], UNO_QUERY_THROW );
@@ -237,7 +235,7 @@ css::uno::Reference<css::chart2::XChartType> getChartType(
     return xChartTypeSequence[0];
 }
 
-OUString getSeriesLabel(const css::uno::Reference<css::frame::XModel>& xModel, 
const OUString& rCID)
+OUString getSeriesLabel(const rtl::Reference<::chart::ChartModel>& xModel, 
const OUString& rCID)
 {
     css::uno::Reference< css::chart2::XDataSeries > xSeries =
         ObjectIdentifier::getDataSeriesForCID(rCID, xModel);
@@ -293,7 +291,7 @@ ChartSeriesPanel::ChartSeriesPanel(
     , mxLBLabelPlacement(m_xBuilder->weld_combo_box("comboboxtext_label"))
     , mxFTSeriesName(m_xBuilder->weld_label("label_series_name"))
     , mxFTSeriesTemplate(m_xBuilder->weld_label("label_series_tmpl"))
-    , mxModel(pController->getModel())
+    , mxModel(pController->getChartModel())
     , mxListener(new ChartSidebarModifyListener(this))
     , mxSelectionListener(new ChartSidebarSelectionListener(this, 
OBJECTTYPE_DATA_SERIES))
     , mbModelValid(true)
@@ -322,8 +320,7 @@ ChartSeriesPanel::~ChartSeriesPanel()
 
 void ChartSeriesPanel::Initialize()
 {
-    css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, 
css::uno::UNO_QUERY_THROW);
-    xBroadcaster->addModifyListener(mxListener);
+    mxModel->addModifyListener(mxListener);
     css::uno::Reference<css::view::XSelectionSupplier> 
xSelectionSupplier(mxModel->getCurrentController(), css::uno::UNO_QUERY);
     if (xSelectionSupplier.is())
         xSelectionSupplier->addSelectionChangeListener(mxSelectionListener);
@@ -408,12 +405,11 @@ void ChartSeriesPanel::modelInvalid()
     mbModelValid = false;
 }
 
-void ChartSeriesPanel::doUpdateModel(css::uno::Reference<css::frame::XModel> 
xModel)
+void ChartSeriesPanel::doUpdateModel(rtl::Reference<::chart::ChartModel> 
xModel)
 {
     if (mbModelValid)
     {
-        css::uno::Reference<css::util::XModifyBroadcaster> 
xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW);
-        xBroadcaster->removeModifyListener(mxListener);
+        mxModel->removeModifyListener(mxListener);
     }
 
     css::uno::Reference<css::view::XSelectionSupplier> oldSelectionSupplier(
@@ -428,8 +424,7 @@ void 
ChartSeriesPanel::doUpdateModel(css::uno::Reference<css::frame::XModel> xMo
     if (!mbModelValid)
         return;
 
-    css::uno::Reference<css::util::XModifyBroadcaster> 
xBroadcasterNew(mxModel, css::uno::UNO_QUERY_THROW);
-    xBroadcasterNew->addModifyListener(mxListener);
+    mxModel->addModifyListener(mxListener);
 
     css::uno::Reference<css::view::XSelectionSupplier> 
xSelectionSupplier(mxModel->getCurrentController(), css::uno::UNO_QUERY);
     if (xSelectionSupplier.is())
@@ -438,7 +433,9 @@ void 
ChartSeriesPanel::doUpdateModel(css::uno::Reference<css::frame::XModel> xMo
 
 void ChartSeriesPanel::updateModel(css::uno::Reference<css::frame::XModel> 
xModel)
 {
-    doUpdateModel(xModel);
+    ::chart::ChartModel* pModel = 
dynamic_cast<::chart::ChartModel*>(xModel.get());
+    assert(!xModel || pModel);
+    doUpdateModel(pModel);
 }
 
 void ChartSeriesPanel::selectionChanged(bool bCorrectType)
diff --git a/chart2/source/controller/sidebar/ChartSeriesPanel.hxx 
b/chart2/source/controller/sidebar/ChartSeriesPanel.hxx
index 3c573d91464c..b457667ec257 100644
--- a/chart2/source/controller/sidebar/ChartSeriesPanel.hxx
+++ b/chart2/source/controller/sidebar/ChartSeriesPanel.hxx
@@ -91,14 +91,14 @@ private:
     std::unique_ptr<weld::Label> mxFTSeriesName;
     std::unique_ptr<weld::Label> mxFTSeriesTemplate;
 
-    css::uno::Reference<css::frame::XModel> mxModel;
+    rtl::Reference<::chart::ChartModel> mxModel;
     css::uno::Reference<css::util::XModifyListener> mxListener;
     css::uno::Reference<css::view::XSelectionChangeListener> 
mxSelectionListener;
 
     bool mbModelValid;
 
     void Initialize();
-    void doUpdateModel(css::uno::Reference<css::frame::XModel> xModel);
+    void doUpdateModel(rtl::Reference<::chart::ChartModel> xModel);
 
     DECL_LINK(CheckBoxHdl, weld::Toggleable&, void);
     DECL_LINK(RadioBtnHdl, weld::Toggleable&, void);
diff --git a/chart2/source/controller/sidebar/ChartTypePanel.cxx 
b/chart2/source/controller/sidebar/ChartTypePanel.cxx
index 18d5c4110e45..d1d73fb3bd10 100644
--- a/chart2/source/controller/sidebar/ChartTypePanel.cxx
+++ b/chart2/source/controller/sidebar/ChartTypePanel.cxx
@@ -45,7 +45,6 @@ namespace chart::sidebar
 {
 ChartTypePanel::ChartTypePanel(weld::Widget* pParent, 
::chart::ChartController* pController)
     : PanelLayout(pParent, "ChartTypePanel", 
"modules/schart/ui/sidebartype.ui")
-    , mxModel(pController->getModel())
     , mxListener(new ChartSidebarModifyListener(this))
     , mbModelValid(true)
     , m_pDim3DLookResourceGroup(new Dim3DLookResourceGroup(m_xBuilder.get()))
@@ -54,7 +53,7 @@ ChartTypePanel::ChartTypePanel(weld::Widget* pParent, 
::chart::ChartController*
           new SplineResourceGroup(m_xBuilder.get(), 
pController->GetChartFrame()))
     , m_pGeometryResourceGroup(new GeometryResourceGroup(m_xBuilder.get()))
     , m_pSortByXValuesResourceGroup(new 
SortByXValuesResourceGroup(m_xBuilder.get()))
-    , m_xChartModel(dynamic_cast<ChartModel*>(mxModel.get()))
+    , m_xChartModel(pController->getChartModel())
     , m_aChartTypeDialogControllerList(0)
     , m_pCurrentMainType(nullptr)
     , m_nChangingCalls(0)
@@ -161,11 +160,10 @@ void ChartTypePanel::Initialize()
 {
     if (!m_xChartModel.is())
         return;
-    rtl::Reference<::chart::ChartTypeManager> xTemplateManager
-        = 
dynamic_cast<::chart::ChartTypeManager*>(m_xChartModel->getChartTypeManager().get());
-    rtl::Reference<Diagram> 
xDiagram(ChartModelHelper::findDiagram(m_xChartModel));
+    rtl::Reference<::chart::ChartTypeManager> xChartTypeManager = 
m_xChartModel->getTypeManager();
+    rtl::Reference<Diagram> xDiagram = 
ChartModelHelper::findDiagram(m_xChartModel);
     DiagramHelper::tTemplateWithServiceName aTemplate
-        = DiagramHelper::getTemplateForDiagram(xDiagram, xTemplateManager);
+        = DiagramHelper::getTemplateForDiagram(xDiagram, xChartTypeManager);
     OUString aServiceName(aTemplate.sServiceName);
 
     bool bFound = false;
@@ -226,12 +224,10 @@ void ChartTypePanel::updateData()
     // Chart Type related
     if (!m_xChartModel.is())
         return;
-    rtl::Reference<::chart::ChartTypeManager> xTemplateManager
-        = 
dynamic_cast<::chart::ChartTypeManager*>(m_xChartModel->getChartTypeManager().get());
-    uno::Reference<frame::XModel> xModel(m_xChartModel);
-    rtl::Reference<Diagram> xDiagram(ChartModelHelper::findDiagram(xModel));
+    rtl::Reference<::chart::ChartTypeManager> xChartTypeManager = 
m_xChartModel->getTypeManager();
+    rtl::Reference<Diagram> xDiagram = 
ChartModelHelper::findDiagram(m_xChartModel);
     DiagramHelper::tTemplateWithServiceName aTemplate
-        = DiagramHelper::getTemplateForDiagram(xDiagram, xTemplateManager);
+        = DiagramHelper::getTemplateForDiagram(xDiagram, xChartTypeManager);
     OUString aServiceName(aTemplate.sServiceName);
 
     sal_uInt16 nM = 0;
@@ -267,29 +263,27 @@ void ChartTypePanel::HandleContextChange(const 
vcl::EnumContext& rContext)
 
 void ChartTypePanel::modelInvalid() { mbModelValid = false; }
 
-void ChartTypePanel::doUpdateModel(css::uno::Reference<css::frame::XModel> 
xModel)
+void ChartTypePanel::doUpdateModel(rtl::Reference<::chart::ChartModel> xModel)
 {
     if (mbModelValid)
     {
-        css::uno::Reference<css::util::XModifyBroadcaster> 
xBroadcaster(mxModel,
-                                                                        
css::uno::UNO_QUERY_THROW);
-        xBroadcaster->removeModifyListener(mxListener);
+        m_xChartModel->removeModifyListener(mxListener);
     }
 
-    mxModel = xModel;
-    mbModelValid = mxModel.is();
+    m_xChartModel = xModel;
+    mbModelValid = m_xChartModel.is();
 
     if (!mbModelValid)
         return;
 
-    css::uno::Reference<css::util::XModifyBroadcaster> xBroadcasterNew(mxModel,
-                                                                       
css::uno::UNO_QUERY_THROW);
-    xBroadcasterNew->addModifyListener(mxListener);
+    m_xChartModel->addModifyListener(mxListener);
 }
 
 void ChartTypePanel::updateModel(css::uno::Reference<css::frame::XModel> 
xModel)
 {
-    doUpdateModel(xModel);
+    ::chart::ChartModel* pModel = 
dynamic_cast<::chart::ChartModel*>(xModel.get());
+    assert(!xModel || pModel);
+    doUpdateModel(pModel);
 }
 
 rtl::Reference<::chart::ChartTypeTemplate> 
ChartTypePanel::getCurrentTemplate() const
@@ -298,9 +292,9 @@ rtl::Reference<::chart::ChartTypeTemplate> 
ChartTypePanel::getCurrentTemplate()
     {
         ChartTypeParameter aParameter(getCurrentParameter());
         m_pCurrentMainType->adjustParameterToSubType(aParameter);
-        rtl::Reference<ChartTypeManager> xTemplateManager
-            = 
dynamic_cast<ChartTypeManager*>(m_xChartModel->getChartTypeManager().get());
-        return m_pCurrentMainType->getCurrentTemplate(aParameter, 
xTemplateManager);
+        rtl::Reference<::chart::ChartTypeManager> xChartTypeManager
+            = m_xChartModel->getTypeManager();
+        return m_pCurrentMainType->getCurrentTemplate(aParameter, 
xChartTypeManager);
     }
     return nullptr;
 }
diff --git a/chart2/source/controller/sidebar/ChartTypePanel.hxx 
b/chart2/source/controller/sidebar/ChartTypePanel.hxx
index f3062fb2f50f..5555eba2f464 100644
--- a/chart2/source/controller/sidebar/ChartTypePanel.hxx
+++ b/chart2/source/controller/sidebar/ChartTypePanel.hxx
@@ -89,13 +89,12 @@ private:
 
     vcl::EnumContext maContext;
 
-    css::uno::Reference<css::frame::XModel> mxModel;
     css::uno::Reference<css::util::XModifyListener> mxListener;
 
     bool mbModelValid;
 
     void Initialize();
-    void doUpdateModel(css::uno::Reference<css::frame::XModel> xModel);
+    void doUpdateModel(rtl::Reference<::chart::ChartModel> xModel);
 
     std::unique_ptr<Dim3DLookResourceGroup> m_pDim3DLookResourceGroup;
     std::unique_ptr<StackingResourceGroup> m_pStackingResourceGroup;

Reply via email to