chart2/source/controller/main/ChartController.cxx            |   19 ++++----
 chart2/source/controller/main/ChartController_Insert.cxx     |   23 ++++------
 chart2/source/controller/main/ChartController_Position.cxx   |    3 -
 chart2/source/controller/main/ChartController_Properties.cxx |    3 -
 chart2/source/controller/main/ChartController_Tools.cxx      |   24 ++++-------
 chart2/source/controller/main/ChartController_Window.cxx     |   12 ++---
 chart2/source/controller/main/ControllerCommandDispatch.cxx  |    9 +---
 chart2/source/controller/main/ElementSelector.cxx            |    2 
 chart2/source/controller/main/ShapeController.cxx            |    3 -
 chart2/source/model/main/ChartModel_Persistence.cxx          |   21 +++------
 chart2/source/tools/LegendHelper.cxx                         |    7 +--
 11 files changed, 52 insertions(+), 74 deletions(-)

New commits:
commit 2f2e1bb1f7a247923fc2e25bbfb227756a1f7f2a
Author:     Noel Grandin <noelgran...@gmail.com>
AuthorDate: Sat Jan 29 20:25:15 2022 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Sun Jan 30 07:10:21 2022 +0100

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

diff --git a/chart2/source/model/main/ChartModel_Persistence.cxx 
b/chart2/source/model/main/ChartModel_Persistence.cxx
index a9eb264292c3..b31c510b3e68 100644
--- a/chart2/source/model/main/ChartModel_Persistence.cxx
+++ b/chart2/source/model/main/ChartModel_Persistence.cxx
@@ -30,6 +30,7 @@
 #include <Diagram.hxx>
 #include <DiagramHelper.hxx>
 #include <BaseCoordinateSystem.hxx>
+#include <Legend.hxx>
 
 #include <com/sun/star/chart2/LegendPosition.hpp>
 #include <com/sun/star/container/XNameAccess.hpp>
@@ -413,20 +414,14 @@ void ChartModel::insertDefaultChart()
                     AxisHelper::setRTLAxisLayout( 
AxisHelper::getCoordinateSystemByIndex( xDiagram, 0 ) );
 
                 // create and attach legend
-                Reference< chart2::XLegend > xLegend(
-                    m_xContext->getServiceManager()->createInstanceWithContext(
-                        "com.sun.star.chart2.Legend", m_xContext ), 
uno::UNO_QUERY_THROW );
-                Reference< beans::XPropertySet > xLegendProperties( xLegend, 
uno::UNO_QUERY );
-                if( xLegendProperties.is() )
-                {
-                    xLegendProperties->setPropertyValue( "FillStyle", 
uno::Any( drawing::FillStyle_NONE ));
-                    xLegendProperties->setPropertyValue( "LineStyle", 
uno::Any( drawing::LineStyle_NONE ));
-                    xLegendProperties->setPropertyValue( "LineColor", 
uno::Any( static_cast< sal_Int32 >( 0xb3b3b3 ) ));  // gray30
-                    xLegendProperties->setPropertyValue( "FillColor", 
uno::Any( static_cast< sal_Int32 >( 0xe6e6e6 ) ) ); // gray10
+                rtl::Reference< Legend > xLegend = new Legend();
+                xLegend->setPropertyValue( "FillStyle", uno::Any( 
drawing::FillStyle_NONE ));
+                xLegend->setPropertyValue( "LineStyle", uno::Any( 
drawing::LineStyle_NONE ));
+                xLegend->setPropertyValue( "LineColor", uno::Any( static_cast< 
sal_Int32 >( 0xb3b3b3 ) ));  // gray30
+                xLegend->setPropertyValue( "FillColor", uno::Any( static_cast< 
sal_Int32 >( 0xe6e6e6 ) ) ); // gray10
 
-                    if( bIsRTL )
-                        xLegendProperties->setPropertyValue( "AnchorPosition", 
uno::Any( chart2::LegendPosition_LINE_START ));
-                }
+                if( bIsRTL )
+                    xLegend->setPropertyValue( "AnchorPosition", uno::Any( 
chart2::LegendPosition_LINE_START ));
                 if(xDiagram.is())
                     xDiagram->setLegend( xLegend );
 
diff --git a/chart2/source/tools/LegendHelper.cxx 
b/chart2/source/tools/LegendHelper.cxx
index dddcf67d0c08..5bb48f752fb1 100644
--- a/chart2/source/tools/LegendHelper.cxx
+++ b/chart2/source/tools/LegendHelper.cxx
@@ -65,11 +65,10 @@ rtl::Reference< Legend > LegendHelper::showLegend( 
ChartModel& rModel
 
 void LegendHelper::hideLegend( ChartModel& rModel )
 {
-    uno::Reference< chart2::XLegend > xLegend = LegendHelper::getLegend( 
rModel, nullptr );
-    uno::Reference< beans::XPropertySet > xProp( xLegend, uno::UNO_QUERY );
-    if( xProp.is())
+    rtl::Reference< Legend > xLegend = LegendHelper::getLegend( rModel, 
nullptr );
+    if( xLegend.is())
     {
-        xProp->setPropertyValue( "Show", uno::Any(false) );
+        xLegend->setPropertyValue( "Show", uno::Any(false) );
     }
 }
 
commit 56c3cc776a7b0a487a794029f68a30244d65857b
Author:     Noel Grandin <noelgran...@gmail.com>
AuthorDate: Sat Jan 29 20:22:07 2022 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Sun Jan 30 07:10:06 2022 +0100

    use more getChartModel in ChartController
    
    avoids some unnecessary dynamic_cast
    
    Change-Id: I7389fd793c295d52cb6eb1b946199a2887544512
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129154
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/chart2/source/controller/main/ChartController.cxx 
b/chart2/source/controller/main/ChartController.cxx
index 544064064573..c1f8d1c774e2 100644
--- a/chart2/source/controller/main/ChartController.cxx
+++ b/chart2/source/controller/main/ChartController.cxx
@@ -365,13 +365,13 @@ void SAL_CALL ChartController::attachFrame(
 
     mpSelectionChangeHandler->Connect();
 
-    uno::Reference<ui::XSidebar> xSidebar = getSidebarFromModel(getModel());
+    uno::Reference<ui::XSidebar> xSidebar = 
getSidebarFromModel(getChartModel());
     if (xSidebar.is())
     {
         auto pSidebar = 
dynamic_cast<sfx2::sidebar::SidebarController*>(xSidebar.get());
         assert(pSidebar);
         sfx2::sidebar::SidebarController::registerSidebarForFrame(pSidebar, 
this);
-        pSidebar->updateModel(getModel());
+        pSidebar->updateModel(getChartModel());
         css::lang::EventObject aEvent;
         mpSelectionChangeHandler->selectionChanged(aEvent);
     }
@@ -588,7 +588,7 @@ sal_Bool SAL_CALL ChartController::attachModel( const 
uno::Reference< frame::XMo
     // select chart area per default:
     // select( uno::Any( ObjectIdentifier::createClassifiedIdentifier( 
OBJECTTYPE_PAGE, OUString() ) ) );
 
-    uno::Reference< lang::XMultiServiceFactory > xFact( getModel(), 
uno::UNO_QUERY );
+    rtl::Reference< ChartModel > xFact = getChartModel();
     if( xFact.is())
     {
         m_xChartView = xFact->createInstance( CHART_VIEW_SERVICE_NAME );
@@ -606,8 +606,7 @@ sal_Bool SAL_CALL ChartController::attachModel( const 
uno::Reference< frame::XMo
             pChartWindow->Invalidate();
     }
 
-    uno::Reference< document::XUndoManagerSupplier > xSuppUndo( getModel(), 
uno::UNO_QUERY_THROW );
-    m_xUndoManager.set( xSuppUndo->getUndoManager(), uno::UNO_SET_THROW );
+    m_xUndoManager.set( getChartModel()->getUndoManager(), uno::UNO_SET_THROW 
);
 
     return true;
 }
@@ -704,7 +703,7 @@ void ChartController::impl_createDrawViewController()
         if( m_pDrawModelWrapper )
         {
             m_pDrawViewWrapper.reset( new 
DrawViewWrapper(m_pDrawModelWrapper->getSdrModel(),GetChartWindow()->GetOutDev())
 );
-            m_pDrawViewWrapper->attachParentReferenceDevice( getModel() );
+            m_pDrawViewWrapper->attachParentReferenceDevice( getChartModel() );
         }
     }
 }
@@ -731,7 +730,7 @@ void SAL_CALL ChartController::dispose()
 
     if (getModel().is())
     {
-        uno::Reference<ui::XSidebar> xSidebar = 
getSidebarFromModel(getModel());
+        uno::Reference<ui::XSidebar> xSidebar = 
getSidebarFromModel(getChartModel());
         if (sfx2::sidebar::SidebarController* pSidebar = 
dynamic_cast<sfx2::sidebar::SidebarController*>(xSidebar.get()))
         {
             
sfx2::sidebar::SidebarController::unregisterSidebarForFrame(pSidebar, this);
@@ -757,7 +756,7 @@ void SAL_CALL ChartController::dispose()
         if( m_aModel.is())
         {
             uno::Reference< view::XSelectionChangeListener > 
xSelectionChangeListener;
-            uno::Reference< chart2::data::XDataReceiver > xDataReceiver( 
getModel(), uno::UNO_QUERY );
+            rtl::Reference< ChartModel > xDataReceiver = getChartModel();
             if( xDataReceiver.is() )
                 xSelectionChangeListener.set( 
xDataReceiver->getRangeHighlighter(), uno::UNO_QUERY );
             if( xSelectionChangeListener.is() )
@@ -1125,7 +1124,7 @@ void SAL_CALL ChartController::dispatch(
         this->executeDispatch_SourceData();
     else if(aCommand == "Update" ) //Update Chart
     {
-        ChartViewHelper::setViewToDirtyState( getModel() );
+        ChartViewHelper::setViewToDirtyState( getChartModel() );
         SolarMutexGuard aGuard;
         auto pChartWindow(GetChartWindow());
         if( pChartWindow )
@@ -1463,7 +1462,7 @@ void ChartController::NotifyUndoActionHdl( 
std::unique_ptr<SdrUndoAction> pUndoA
 
     try
     {
-        const Reference< document::XUndoManagerSupplier > xSuppUndo( 
getModel(), uno::UNO_QUERY_THROW );
+        rtl::Reference< ChartModel > xSuppUndo = getChartModel();
         const Reference< document::XUndoManager > xUndoManager( 
xSuppUndo->getUndoManager(), uno::UNO_SET_THROW );
         const Reference< document::XUndoAction > xAction( new 
impl::ShapeUndoElement( std::move(pUndoAction) ) );
         xUndoManager->addUndoAction( xAction );
diff --git a/chart2/source/controller/main/ChartController_Insert.cxx 
b/chart2/source/controller/main/ChartController_Insert.cxx
index 0298b1bed9da..1928aec09b2a 100644
--- a/chart2/source/controller/main/ChartController_Insert.cxx
+++ b/chart2/source/controller/main/ChartController_Insert.cxx
@@ -197,8 +197,7 @@ void ChartController::executeDispatch_DeleteLegend()
             ActionDescriptionProvider::ActionType::Delete, SchResId( 
STR_OBJECT_LEGEND )),
         m_xUndoManager );
 
-    ChartModel& rModel = dynamic_cast<ChartModel&>(*getModel());
-    LegendHelper::hideLegend(rModel);
+    LegendHelper::hideLegend(*getChartModel());
     aUndoGuard.commit();
 }
 
@@ -209,8 +208,7 @@ void ChartController::executeDispatch_InsertLegend()
             ActionDescriptionProvider::ActionType::Insert, SchResId( 
STR_OBJECT_LEGEND )),
         m_xUndoManager );
 
-    ChartModel& rModel = dynamic_cast<ChartModel&>(*getModel());
-    LegendHelper::showLegend(rModel, m_xCC);
+    LegendHelper::showLegend(*getChartModel(), m_xCC);
     aUndoGuard.commit();
 }
 
@@ -272,7 +270,7 @@ void 
ChartController::executeDispatch_InsertMenu_DataLabels()
             getChartModel(),
             m_pDrawModelWrapper->GetItemPool(),
             m_pDrawModelWrapper->getSdrModel(),
-            uno::Reference< lang::XMultiServiceFactory >( getModel(), 
uno::UNO_QUERY ));
+            getChartModel() );
         SfxItemSet aItemSet = aItemConverter.CreateEmptyItemSet();
         aItemConverter.FillItemSet( aItemSet );
 
@@ -280,8 +278,7 @@ void 
ChartController::executeDispatch_InsertMenu_DataLabels()
         SolarMutexGuard aGuard;
 
         //get number formatter
-        uno::Reference< util::XNumberFormatsSupplier > xNumberFormatsSupplier( 
getModel(), uno::UNO_QUERY );
-        NumberFormatterWrapper aNumberFormatterWrapper( xNumberFormatsSupplier 
);
+        NumberFormatterWrapper aNumberFormatterWrapper( getChartModel() );
         SvNumberFormatter* pNumberFormatter = 
aNumberFormatterWrapper.getSvNumberFormatter();
 
         DataLabelsDialog aDlg(GetChartFrame(), aItemSet, pNumberFormatter);
@@ -378,7 +375,7 @@ void ChartController::executeDispatch_InsertTrendline()
     wrapper::RegressionCurveItemConverter aItemConverter(
         xProperties, xRegressionCurveContainer, 
m_pDrawModelWrapper->getSdrModel().GetItemPool(),
         m_pDrawModelWrapper->getSdrModel(),
-        uno::Reference< lang::XMultiServiceFactory >( getModel(), 
uno::UNO_QUERY ));
+        getChartModel() );
 
     // open dialog
     SfxItemSet aItemSet = aItemConverter.CreateEmptyItemSet();
@@ -393,8 +390,7 @@ void ChartController::executeDispatch_InsertTrendline()
     SchAttribTabDlg aDialog(
         GetChartFrame(), &aItemSet, &aDialogParameter,
         &aViewElementListProvider,
-        uno::Reference< util::XNumberFormatsSupplier >(
-                getModel(), uno::UNO_QUERY ) );
+        getChartModel() );
 
     // note: when a user pressed "OK" but didn't change any settings in the
     // dialog, the SfxTabDialog returns "Cancel"
@@ -434,9 +430,9 @@ void ChartController::executeDispatch_InsertErrorBars( bool 
bYError )
 
         // get an appropriate item converter
         wrapper::ErrorBarItemConverter aItemConverter(
-            getModel(), xErrorBarProp, 
m_pDrawModelWrapper->getSdrModel().GetItemPool(),
+            getChartModel(), xErrorBarProp, 
m_pDrawModelWrapper->getSdrModel().GetItemPool(),
             m_pDrawModelWrapper->getSdrModel(),
-            uno::Reference< lang::XMultiServiceFactory >( getModel(), 
uno::UNO_QUERY ));
+            getChartModel() );
 
         // open dialog
         SfxItemSet aItemSet = aItemConverter.CreateEmptyItemSet();
@@ -451,8 +447,7 @@ void ChartController::executeDispatch_InsertErrorBars( bool 
bYError )
         SchAttribTabDlg aDlg(
                 GetChartFrame(), &aItemSet, &aDialogParameter,
                 &aViewElementListProvider,
-                uno::Reference< util::XNumberFormatsSupplier >(
-                        getModel(), uno::UNO_QUERY ) );
+                getChartModel() );
         aDlg.SetAxisMinorStepWidthForErrorBarDecimals(
             InsertErrorBarsDialog::getAxisMinorStepWidthForErrorBarDecimals( 
getChartModel(),
                                                                              
m_xChartView, m_aSelection.getSelectedCID()));
diff --git a/chart2/source/controller/main/ChartController_Position.cxx 
b/chart2/source/controller/main/ChartController_Position.cxx
index 3482196b1616..fe746c29e8ff 100644
--- a/chart2/source/controller/main/ChartController_Position.cxx
+++ b/chart2/source/controller/main/ChartController_Position.cxx
@@ -184,8 +184,7 @@ void ChartController::executeDispatch_PositionAndSize(const 
::css::uno::Sequence
             bool bChanged = false;
             if ( eObjectType == OBJECTTYPE_LEGEND )
             {
-                ChartModel& rModel = dynamic_cast<ChartModel&>(*getModel());
-                bChanged = 
DiagramHelper::switchDiagramPositioningToExcludingPositioning(rModel, false , 
true);
+                bChanged = 
DiagramHelper::switchDiagramPositioningToExcludingPositioning(*getChartModel(), 
false , true);
             }
 
             bool bMoved = PositionAndSizeHelper::moveObject( 
m_aSelection.getSelectedCID(), getChartModel()
diff --git a/chart2/source/controller/main/ChartController_Properties.cxx 
b/chart2/source/controller/main/ChartController_Properties.cxx
index b66a248c7fe4..95c21c1ac80c 100644
--- a/chart2/source/controller/main/ChartController_Properties.cxx
+++ b/chart2/source/controller/main/ChartController_Properties.cxx
@@ -755,8 +755,7 @@ bool 
ChartController::executeDlg_ObjectProperties_withoutUndoGuard(
         SchAttribTabDlg aDlg(
                 GetChartFrame(), &aItemSet, &aDialogParameter,
                 &aViewElementListProvider,
-                uno::Reference< util::XNumberFormatsSupplier >(
-                        getModel(), uno::UNO_QUERY ) );
+                getChartModel() );
 
         if(aDialogParameter.HasSymbolProperties())
         {
diff --git a/chart2/source/controller/main/ChartController_Tools.cxx 
b/chart2/source/controller/main/ChartController_Tools.cxx
index c44e9c32f62f..bf8caa1b20bb 100644
--- a/chart2/source/controller/main/ChartController_Tools.cxx
+++ b/chart2/source/controller/main/ChartController_Tools.cxx
@@ -345,9 +345,9 @@ void ChartController::impl_PasteGraphic(
     DBG_TESTSOLARMUTEX();
     // note: the XPropertySet of the model is the old API. Also the property
     // "AdditionalShapes" that is used there.
-    uno::Reference< beans::XPropertySet > xModelProp( getModel(), 
uno::UNO_QUERY );
+    rtl::Reference< ChartModel > xModel = getChartModel();
     DrawModelWrapper * pDrawModelWrapper( GetDrawModelWrapper());
-    if( ! (xGraphic.is() && xModelProp.is()))
+    if( ! (xGraphic.is() && xModel.is()))
         return;
     rtl::Reference<SvxGraphicObject> xGraphicShape = new 
SvxGraphicObject(nullptr);
     xGraphicShape->setShapeKind(SdrObjKind::Graphic);
@@ -357,11 +357,7 @@ void ChartController::impl_PasteGraphic(
     {
         xPage->add( xGraphicShape );
         //need to change the model state manually
-        {
-            uno::Reference< util::XModifiable > xModifiable( getModel(), 
uno::UNO_QUERY );
-            if( xModifiable.is() )
-                xModifiable->setModified( true );
-        }
+        xModel->setModified( true );
         //select new shape
         m_aSelection.setSelection( xGraphicShape );
         m_aSelection.applySelection( m_pDrawViewWrapper.get() );
@@ -422,7 +418,7 @@ void ChartController::impl_PasteShapes( SdrModel* pModel )
         }
     }
 
-    Reference< util::XModifiable > xModifiable( getModel(), uno::UNO_QUERY );
+    rtl::Reference< ChartModel > xModifiable = getChartModel();
     if ( xModifiable.is() )
     {
         xModifiable->setModified( true );
@@ -593,7 +589,7 @@ bool ChartController::executeDispatch_Delete()
             return false;
 
         //remove chart object
-        uno::Reference< chart2::XChartDocument > xChartDoc( getModel(), 
uno::UNO_QUERY );
+        rtl::Reference< ChartModel > xChartDoc = getChartModel();
         if( !xChartDoc.is() )
             return false;
 
@@ -821,11 +817,10 @@ bool ChartController::executeDispatch_Delete()
 
 void ChartController::executeDispatch_ToggleLegend()
 {
-    Reference< frame::XModel > xModel( getModel() );
+    rtl::Reference< ChartModel > xModel = getChartModel();
     UndoGuard aUndoGuard(
         SchResId( STR_ACTION_TOGGLE_LEGEND ), m_xUndoManager );
-    ChartModel& rModel = dynamic_cast<ChartModel&>(*xModel);
-    rtl::Reference< Legend > xLegendProp = LegendHelper::getLegend(rModel);
+    rtl::Reference< Legend > xLegendProp = LegendHelper::getLegend(*xModel);
     bool bChanged = false;
     if( xLegendProp.is())
     {
@@ -845,7 +840,7 @@ void ChartController::executeDispatch_ToggleLegend()
     }
     else
     {
-        xLegendProp = LegendHelper::getLegend(rModel, m_xCC, true);
+        xLegendProp = LegendHelper::getLegend(*xModel, m_xCC, true);
         if( xLegendProp.is())
             bChanged = true;
     }
@@ -1101,8 +1096,7 @@ void 
ChartController::impl_switchDiagramPositioningToExcludingPositioning()
         ActionDescriptionProvider::ActionType::PosSize,
         ObjectNameProvider::getName( OBJECTTYPE_DIAGRAM)),
         m_xUndoManager );
-    ChartModel& rModel = dynamic_cast<ChartModel&>(*m_aModel->getModel());
-    if (DiagramHelper::switchDiagramPositioningToExcludingPositioning(rModel, 
true, true))
+    if 
(DiagramHelper::switchDiagramPositioningToExcludingPositioning(*getChartModel(),
 true, true))
         aUndoGuard.commit();
 }
 
diff --git a/chart2/source/controller/main/ChartController_Window.cxx 
b/chart2/source/controller/main/ChartController_Window.cxx
index c63a01b337fc..e69adac2b741 100644
--- a/chart2/source/controller/main/ChartController_Window.cxx
+++ b/chart2/source/controller/main/ChartController_Window.cxx
@@ -464,7 +464,7 @@ void ChartController::execute_Paint(vcl::RenderContext& 
rRenderContext, const to
 {
     try
     {
-        uno::Reference<frame::XModel> xModel(getModel());
+        rtl::Reference<ChartModel> xModel(getChartModel());
         //OSL_ENSURE( xModel.is(), "ChartController::execute_Paint: have no 
model to paint");
         if (!xModel.is())
             return;
@@ -867,14 +867,12 @@ void ChartController::execute_MouseButtonUp( const 
MouseEvent& rMEvt )
                             m_xUndoManager );
 
                         bool bChanged = false;
-                        css::uno::Reference< css::frame::XModel > xModel = 
getModel();
-                        ChartModel* pModel = 
dynamic_cast<ChartModel*>(xModel.get());
-                        assert(pModel);
+                        rtl::Reference< ChartModel > xModel = getChartModel();
                         if ( eObjectType == OBJECTTYPE_LEGEND )
-                            bChanged = 
DiagramHelper::switchDiagramPositioningToExcludingPositioning( *pModel, false , 
true );
+                            bChanged = 
DiagramHelper::switchDiagramPositioningToExcludingPositioning( *xModel, false , 
true );
 
                         bool bMoved = PositionAndSizeHelper::moveObject( 
m_aSelection.getSelectedCID()
-                                        , getChartModel()
+                                        , xModel
                                         , 
awt::Rectangle(aObjectRect.Left(),aObjectRect.Top(),aObjectRect.getWidth(),aObjectRect.getHeight())
                                         , 
awt::Rectangle(aOldObjectRect.Left(), aOldObjectRect.Top(), 0, 0)
                                         , 
awt::Rectangle(aPageRect.Left(),aPageRect.Top(),aPageRect.getWidth(),aPageRect.getHeight())
 );
@@ -1570,7 +1568,7 @@ bool ChartController::execute_KeyInput( const KeyEvent& 
rKEvt )
     // dumping the shape
     if( !bReturn && bCtrl && nCode == KEY_F12)
     {
-        uno::Reference< qa::XDumper > xChartModel( getModel(), uno::UNO_QUERY 
);
+        rtl::Reference< ChartModel > xChartModel = getChartModel();
         if(xChartModel.is())
         {
             OUString aDump = xChartModel->dump();
diff --git a/chart2/source/controller/main/ControllerCommandDispatch.cxx 
b/chart2/source/controller/main/ControllerCommandDispatch.cxx
index e1e2c946cf0f..dd4e5022586a 100644
--- a/chart2/source/controller/main/ControllerCommandDispatch.cxx
+++ b/chart2/source/controller/main/ControllerCommandDispatch.cxx
@@ -548,12 +548,11 @@ void 
ControllerCommandDispatch::updateCommandAvailability()
             }
         }
 
-        Reference< chart2::XChartDocument > 
xChartDoc(m_xChartController->getModel(), uno::UNO_QUERY);
-        OSL_ENSURE(xChartDoc.is(), "Invalid XChartDocument");
-        if ( xChartDoc.is() )
+        rtl::Reference< ChartModel > xChartModel = 
m_xChartController->getChartModel();
+        OSL_ENSURE(xChartModel.is(), "Invalid XChartDocument");
+        if ( xChartModel.is() )
         {
-            ChartModel& rModel = dynamic_cast<ChartModel&>(*xChartDoc);
-            css::uno::Reference< com::sun::star::chart2::XDataProviderAccess > 
xCreatorDoc(rModel.getParent(), uno::UNO_QUERY);
+            css::uno::Reference< com::sun::star::chart2::XDataProviderAccess > 
xCreatorDoc(xChartModel->getParent(), uno::UNO_QUERY);
             bCanCreateDataProvider = xCreatorDoc.is();
         }
     }
diff --git a/chart2/source/controller/main/ElementSelector.cxx 
b/chart2/source/controller/main/ElementSelector.cxx
index b4488295ebd9..7f7f3cff3aa6 100644
--- a/chart2/source/controller/main/ElementSelector.cxx
+++ b/chart2/source/controller/main/ElementSelector.cxx
@@ -120,7 +120,7 @@ void SelectorListBox::UpdateChartElementsListAndSelection()
             bAddSelectionToList = true;
 
         Reference< uno::XInterface > xChartView;
-        Reference< lang::XMultiServiceFactory > xFact( 
xChartController->getModel(), uno::UNO_QUERY );
+        rtl::Reference< ChartModel > xFact = xChartController->getChartModel();
         if( xFact.is() )
             xChartView = xFact->createInstance( CHART_VIEW_SERVICE_NAME );
         ExplicitValueProvider* pExplicitValueProvider = nullptr; 
//ExplicitValueProvider::getExplicitValueProvider(xChartView); this creates all 
visible data points, that's too much
diff --git a/chart2/source/controller/main/ShapeController.cxx 
b/chart2/source/controller/main/ShapeController.cxx
index acdcb78ce045..9a00d7b8ad22 100644
--- a/chart2/source/controller/main/ShapeController.cxx
+++ b/chart2/source/controller/main/ShapeController.cxx
@@ -23,6 +23,7 @@
 #include <ViewElementListProvider.hxx>
 #include <dlg_ShapeFont.hxx>
 #include <dlg_ShapeParagraph.hxx>
+#include <ChartModel.hxx>
 #include <chartview/DrawModelWrapper.hxx>
 #include <com/sun/star/drawing/XShapes.hpp>
 #include <com/sun/star/frame/CommandGroup.hpp>
@@ -78,7 +79,7 @@ FeatureState ShapeController::getState( const OUString& 
rCommand )
     bool bWritable = false;
     if ( m_pChartController )
     {
-        Reference< frame::XStorable > xStorable( 
m_pChartController->getModel(), uno::UNO_QUERY );
+        rtl::Reference< ChartModel > xStorable = 
m_pChartController->getChartModel();
         if ( xStorable.is() )
         {
             bWritable = !xStorable->isReadonly();

Reply via email to