diff options
Diffstat (limited to 'chart2/source/controller/sidebar/ChartTypePanel.cxx')
-rw-r--r-- | chart2/source/controller/sidebar/ChartTypePanel.cxx | 103 |
1 files changed, 48 insertions, 55 deletions
diff --git a/chart2/source/controller/sidebar/ChartTypePanel.cxx b/chart2/source/controller/sidebar/ChartTypePanel.cxx index 2fca2443807f..40423aa62ea1 100644 --- a/chart2/source/controller/sidebar/ChartTypePanel.cxx +++ b/chart2/source/controller/sidebar/ChartTypePanel.cxx @@ -21,18 +21,16 @@ #include <TimerTriggeredControllerLock.hxx> #include <ChartController.hxx> -#include <ChartModelHelper.hxx> +#include <ChartModel.hxx> #include <ChartResourceGroups.hxx> #include <ChartTypeDialogController.hxx> -#include <DiagramHelper.hxx> +#include <ChartTypeManager.hxx> +#include <ChartTypeTemplate.hxx> +#include <Diagram.hxx> #include <unonames.hxx> -#include <com/sun/star/chart2/XChartDocument.hpp> -#include <com/sun/star/chart2/XDiagram.hpp> -#include <com/sun/star/util/XModifyBroadcaster.hpp> - #include <svtools/valueset.hxx> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> using namespace css; using namespace css::uno; @@ -41,8 +39,6 @@ namespace chart::sidebar { ChartTypePanel::ChartTypePanel(weld::Widget* pParent, ::chart::ChartController* pController) : PanelLayout(pParent, "ChartTypePanel", "modules/schart/ui/sidebartype.ui") - , maContext() - , mxModel(pController->getModel()) , mxListener(new ChartSidebarModifyListener(this)) , mbModelValid(true) , m_pDim3DLookResourceGroup(new Dim3DLookResourceGroup(m_xBuilder.get())) @@ -51,7 +47,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(mxModel, css::uno::UNO_QUERY_THROW) + , m_xChartModel(pController->getChartModel()) , m_aChartTypeDialogControllerList(0) , m_pCurrentMainType(nullptr) , m_nChangingCalls(0) @@ -73,7 +69,8 @@ ChartTypePanel::ChartTypePanel(weld::Widget* pParent, ::chart::ChartController* m_xSubTypeList->SetLineCount(1); bool bEnableComplexChartTypes = true; - uno::Reference<beans::XPropertySet> xProps(m_xChartModel, uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xProps(static_cast<cppu::OWeakObject*>(m_xChartModel.get()), + uno::UNO_QUERY); if (xProps.is()) { try @@ -157,12 +154,12 @@ void ChartTypePanel::Initialize() { if (!m_xChartModel.is()) return; - uno::Reference<lang::XMultiServiceFactory> xTemplateManager( - m_xChartModel->getChartTypeManager(), uno::UNO_QUERY); - uno::Reference<css::chart2::XDiagram> xDiagram(ChartModelHelper::findDiagram(m_xChartModel)); - DiagramHelper::tTemplateWithServiceName aTemplate - = DiagramHelper::getTemplateForDiagram(xDiagram, xTemplateManager); - OUString aServiceName(aTemplate.second); + rtl::Reference<::chart::ChartTypeManager> xChartTypeManager = m_xChartModel->getTypeManager(); + rtl::Reference<Diagram> xDiagram = m_xChartModel->getFirstChartDiagram(); + Diagram::tTemplateWithServiceName aTemplate; + if (xDiagram) + aTemplate = xDiagram->getTemplate(xChartTypeManager); + OUString aServiceName(aTemplate.sServiceName); bool bFound = false; @@ -175,21 +172,22 @@ void ChartTypePanel::Initialize() m_xMainTypeList->set_active(nM); showAllControls(*elem); - uno::Reference<beans::XPropertySet> xTemplateProps(aTemplate.first, uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xTemplateProps( + static_cast<cppu::OWeakObject*>(aTemplate.xChartTypeTemplate.get()), + uno::UNO_QUERY); ChartTypeParameter aParameter = elem->getChartTypeParameterForService(aServiceName, xTemplateProps); m_pCurrentMainType = getSelectedMainType(); //set ThreeDLookScheme - aParameter.eThreeDLookScheme = ThreeDHelper::detectScheme(xDiagram); + aParameter.eThreeDLookScheme = xDiagram->detectScheme(); if (!aParameter.b3DLook && aParameter.eThreeDLookScheme != ThreeDLookScheme::ThreeDLookScheme_Realistic) aParameter.eThreeDLookScheme = ThreeDLookScheme::ThreeDLookScheme_Realistic; try { - uno::Reference<beans::XPropertySet> xPropSet(xDiagram, uno::UNO_QUERY_THROW); - xPropSet->getPropertyValue(CHART_UNONAME_SORT_BY_XVALUES) + xDiagram->getPropertyValue(CHART_UNONAME_SORT_BY_XVALUES) >>= aParameter.bSortByXValues; } catch (const uno::Exception&) @@ -221,15 +219,14 @@ void ChartTypePanel::updateData() // Chart Type related if (!m_xChartModel.is()) return; - uno::Reference<lang::XMultiServiceFactory> xTemplateManager( - m_xChartModel->getChartTypeManager(), uno::UNO_QUERY); - uno::Reference<frame::XModel> xModel(m_xChartModel); - uno::Reference<css::chart2::XDiagram> xDiagram(ChartModelHelper::findDiagram(xModel)); - DiagramHelper::tTemplateWithServiceName aTemplate - = DiagramHelper::getTemplateForDiagram(xDiagram, xTemplateManager); - OUString aServiceName(aTemplate.second); - - sal_uInt16 nM = 0; + rtl::Reference<::chart::ChartTypeManager> xChartTypeManager = m_xChartModel->getTypeManager(); + rtl::Reference<Diagram> xDiagram = m_xChartModel->getFirstChartDiagram(); + Diagram::tTemplateWithServiceName aTemplate; + if (xDiagram) + aTemplate = xDiagram->getTemplate(xChartTypeManager); + OUString aServiceName(aTemplate.sServiceName); + + //sal_uInt16 nM = 0; for (auto const& elem : m_aChartTypeDialogControllerList) { if (elem->isSubType(aServiceName)) @@ -238,7 +235,7 @@ void ChartTypePanel::updateData() //m_pMainTypeList->select_entry_region(nM, nM); break; } - ++nM; + //++nM; } } @@ -262,40 +259,38 @@ 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(const 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); } -uno::Reference<css::chart2::XChartTypeTemplate> ChartTypePanel::getCurrentTemplate() const +rtl::Reference<::chart::ChartTypeTemplate> ChartTypePanel::getCurrentTemplate() const { if (m_pCurrentMainType && m_xChartModel.is()) { ChartTypeParameter aParameter(getCurrentParameter()); m_pCurrentMainType->adjustParameterToSubType(aParameter); - uno::Reference<lang::XMultiServiceFactory> xTemplateManager( - m_xChartModel->getChartTypeManager(), uno::UNO_QUERY); - return m_pCurrentMainType->getCurrentTemplate(aParameter, xTemplateManager); + rtl::Reference<::chart::ChartTypeManager> xChartTypeManager + = m_xChartModel->getTypeManager(); + return m_pCurrentMainType->getCurrentTemplate(aParameter, xChartTypeManager); } return nullptr; } @@ -372,12 +367,11 @@ void ChartTypePanel::stateChanged() commitToModel(aParameter); //detect the new ThreeDLookScheme - uno::Reference<css::chart2::XDiagram> xDiagram = ChartModelHelper::findDiagram(m_xChartModel); - aParameter.eThreeDLookScheme = ThreeDHelper::detectScheme(xDiagram); + rtl::Reference<Diagram> xDiagram = m_xChartModel->getFirstChartDiagram(); + aParameter.eThreeDLookScheme = xDiagram->detectScheme(); try { - uno::Reference<beans::XPropertySet> xPropSet(xDiagram, uno::UNO_QUERY_THROW); - xPropSet->getPropertyValue(CHART_UNONAME_SORT_BY_XVALUES) >>= aParameter.bSortByXValues; + xDiagram->getPropertyValue(CHART_UNONAME_SORT_BY_XVALUES) >>= aParameter.bSortByXValues; } catch (const uno::Exception&) { @@ -417,17 +411,15 @@ void ChartTypePanel::selectMainType() m_pCurrentMainType->adjustParameterToMainType(aParameter); commitToModel(aParameter); //detect the new ThreeDLookScheme - aParameter.eThreeDLookScheme - = ThreeDHelper::detectScheme(ChartModelHelper::findDiagram(m_xChartModel)); + aParameter.eThreeDLookScheme = m_xChartModel->getFirstChartDiagram()->detectScheme(); if (!aParameter.b3DLook && aParameter.eThreeDLookScheme != ThreeDLookScheme::ThreeDLookScheme_Realistic) aParameter.eThreeDLookScheme = ThreeDLookScheme::ThreeDLookScheme_Realistic; - uno::Reference<css::chart2::XDiagram> xDiagram = ChartModelHelper::findDiagram(m_xChartModel); + rtl::Reference<Diagram> xDiagram = m_xChartModel->getFirstChartDiagram(); try { - uno::Reference<beans::XPropertySet> xPropSet(xDiagram, uno::UNO_QUERY_THROW); - xPropSet->getPropertyValue(CHART_UNONAME_SORT_BY_XVALUES) >>= aParameter.bSortByXValues; + xDiagram->getPropertyValue(CHART_UNONAME_SORT_BY_XVALUES) >>= aParameter.bSortByXValues; } catch (const uno::Exception&) { @@ -435,7 +427,8 @@ void ChartTypePanel::selectMainType() } fillAllControls(aParameter); - uno::Reference<beans::XPropertySet> xTemplateProps(getCurrentTemplate(), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xTemplateProps( + static_cast<cppu::OWeakObject*>(getCurrentTemplate().get()), uno::UNO_QUERY); m_pCurrentMainType->fillExtraControls(m_xChartModel, xTemplateProps); } } // end of namespace ::chart::sidebar |