From 4922c7a0a7269285f0e7d669a7b53350f55e9ae0 Mon Sep 17 00:00:00 2001 From: Muhammet Kara Date: Thu, 7 Nov 2019 16:02:15 +0300 Subject: ChartTypePanel: Add handler for main chart type ListBox Change-Id: I3488dec747cfe62478e7924df5e2574ac291e4e3 Reviewed-on: https://gerrit.libreoffice.org/82216 Tested-by: Jenkins CollaboraOffice Reviewed-by: Muhammet Kara --- .../source/controller/sidebar/ChartTypePanel.cxx | 71 +++++++++++++++++++--- .../source/controller/sidebar/ChartTypePanel.hxx | 8 ++- 2 files changed, 69 insertions(+), 10 deletions(-) (limited to 'chart2') diff --git a/chart2/source/controller/sidebar/ChartTypePanel.cxx b/chart2/source/controller/sidebar/ChartTypePanel.cxx index 8edc16265baa..1499c5270507 100644 --- a/chart2/source/controller/sidebar/ChartTypePanel.cxx +++ b/chart2/source/controller/sidebar/ChartTypePanel.cxx @@ -602,14 +602,13 @@ ChartTypePanel::ChartTypePanel(vcl::Window* pParent, get(m_pMainTypeList, "cmb_chartType"); get(m_pSubTypeList, "subtype"); - //Chart Type related - m_pMainTypeList->SetSelectHdl(LINK(this, ChartTypePanel, SelectMainTypeHdl)); - m_pSubTypeList->SetSelectHdl(LINK(this, ChartTypePanel, SelectSubTypeHdl)); - Size aSize(m_pSubTypeList->LogicToPixel(Size(120, 40), MapMode(MapUnit::MapAppFont))); m_pSubTypeList->set_width_request(aSize.Width()); m_pSubTypeList->set_height_request(aSize.Height()); + m_pMainTypeList->SetSelectHdl(LINK(this, ChartTypePanel, SelectMainTypeHdl)); + m_pSubTypeList->SetSelectHdl(LINK(this, ChartTypePanel, SelectSubTypeHdl)); + m_pSubTypeList->SetStyle(m_pSubTypeList->GetStyle() | WB_ITEMBORDER | WB_DOUBLEBORDER | WB_NAMEFIELD | WB_FLATVALUESET | WB_3DLOOK); m_pSubTypeList->SetColCount(4); @@ -641,11 +640,14 @@ ChartTypePanel::ChartTypePanel(vcl::Window* pParent, m_aChartTypeDialogControllerList.push_back( o3tl::make_unique()); } + m_aChartTypeDialogControllerList.push_back(o3tl::make_unique()); + if (bEnableComplexChartTypes) { m_aChartTypeDialogControllerList.push_back(o3tl::make_unique()); } + m_aChartTypeDialogControllerList.push_back( o3tl::make_unique()); @@ -686,10 +688,7 @@ void ChartTypePanel::dispose() PanelLayout::dispose(); } -IMPL_LINK_NOARG(ChartTypePanel, SelectMainTypeHdl, ListBox&, void) -{ - //selectMainType(); -} +IMPL_LINK_NOARG(ChartTypePanel, SelectMainTypeHdl, ListBox&, void) { selectMainType(); } IMPL_LINK_NOARG(ChartTypePanel, SelectSubTypeHdl, ValueSet*, void) { @@ -866,7 +865,6 @@ void ChartTypePanel::showAllControls(ChartTypeDialogController& rTypeController) bShow = rTypeController.shouldShow_SortByXValuesResourceGroup(); m_pSortByXValuesResourceGroup->showControls(bShow); - // TODO: Extend ChartTypeDialogController::showExtraControls() rTypeController.showExtraControls(this); } @@ -874,6 +872,7 @@ void ChartTypePanel::fillAllControls(const ChartTypeParameter& rParameter, bool bAlsoResetSubTypeList) { m_nChangingCalls++; + if (m_pCurrentMainType && bAlsoResetSubTypeList) { m_pCurrentMainType->fillSubTypeList(*m_pSubTypeList, rParameter); @@ -942,6 +941,60 @@ void ChartTypePanel::commitToModel(const ChartTypeParameter& rParameter) m_aTimerTriggeredControllerLock.startTimer(); m_pCurrentMainType->commitToModel(rParameter, m_xChartModel); } + +void ChartTypePanel::selectMainType() +{ + ChartTypeParameter aParameter(getCurrentParamter()); + + if (m_pCurrentMainType) + { + m_pCurrentMainType->adjustParameterToSubType(aParameter); + m_pCurrentMainType->hideExtraControls(); + } + + m_pCurrentMainType = getSelectedMainType(); + if (m_pCurrentMainType) + { + showAllControls(*m_pCurrentMainType); + + m_pCurrentMainType->adjustParameterToMainType(aParameter); + commitToModel(aParameter); + //detect the new ThreeDLookScheme + aParameter.eThreeDLookScheme + = ThreeDHelper::detectScheme(ChartModelHelper::findDiagram(m_xChartModel)); + if (!aParameter.b3DLook && aParameter.eThreeDLookScheme != ThreeDLookScheme_Realistic) + aParameter.eThreeDLookScheme = ThreeDLookScheme_Realistic; + + uno::Reference xDiagram + = ChartModelHelper::findDiagram(m_xChartModel); + try + { + uno::Reference xPropSet(xDiagram, uno::UNO_QUERY_THROW); + xPropSet->getPropertyValue(CHART_UNONAME_SORT_BY_XVALUES) >>= aParameter.bSortByXValues; + } + catch (const uno::Exception&) + { + DBG_UNHANDLED_EXCEPTION("chart2"); + } + + fillAllControls(aParameter); + uno::Reference xTemplateProps(getCurrentTemplate(), uno::UNO_QUERY); + m_pCurrentMainType->fillExtraControls(aParameter, m_xChartModel, xTemplateProps); + } +} + +uno::Reference ChartTypePanel::getCurrentTemplate() const +{ + if (m_pCurrentMainType && m_xChartModel.is()) + { + ChartTypeParameter aParameter(getCurrentParamter()); + m_pCurrentMainType->adjustParameterToSubType(aParameter); + uno::Reference xTemplateManager( + m_xChartModel->getChartTypeManager(), uno::UNO_QUERY); + return m_pCurrentMainType->getCurrentTemplate(aParameter, xTemplateManager); + } + return nullptr; +} } } // end of namespace ::chart::sidebar diff --git a/chart2/source/controller/sidebar/ChartTypePanel.hxx b/chart2/source/controller/sidebar/ChartTypePanel.hxx index 007c6fd40f0d..02e9738cbd0f 100644 --- a/chart2/source/controller/sidebar/ChartTypePanel.hxx +++ b/chart2/source/controller/sidebar/ChartTypePanel.hxx @@ -25,6 +25,7 @@ //#include #include "ChartSidebarModifyListener.hxx" #include +#include #include #include @@ -61,7 +62,8 @@ class ChartTypePanel : public ResourceChangeListener, public PanelLayout, public ::sfx2::sidebar::IContextChangeReceiver, public sfx2::sidebar::SidebarModelUpdate, - public ChartSidebarModifyListenerParent + public ChartSidebarModifyListenerParent, + public ChartTypeTemplateProvider { public: static VclPtr Create(vcl::Window* pParent, @@ -94,6 +96,10 @@ private: virtual void stateChanged(ChangingResource* pResource) override; void commitToModel(const ChartTypeParameter& rParameter); + void selectMainType(); + + virtual css::uno::Reference + getCurrentTemplate() const override; DECL_LINK(SelectMainTypeHdl, ListBox&, void); DECL_LINK(SelectSubTypeHdl, ValueSet*, void); -- cgit v1.2.3