chart2/source/controller/sidebar/ChartTypePanel.cxx |   71 +++++++++++++++++---
 chart2/source/controller/sidebar/ChartTypePanel.hxx |    8 +-
 2 files changed, 69 insertions(+), 10 deletions(-)

New commits:
commit 4922c7a0a7269285f0e7d669a7b53350f55e9ae0
Author:     Muhammet Kara <muhammet.k...@collabora.com>
AuthorDate: Thu Nov 7 16:02:15 2019 +0300
Commit:     Muhammet Kara <muhammet.k...@collabora.com>
CommitDate: Thu Nov 7 15:12:24 2019 +0100

    ChartTypePanel: Add handler for main chart type ListBox
    
    Change-Id: I3488dec747cfe62478e7924df5e2574ac291e4e3
    Reviewed-on: https://gerrit.libreoffice.org/82216
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Muhammet Kara <muhammet.k...@collabora.com>

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<BubbleChartDialogController>());
     }
+
     
m_aChartTypeDialogControllerList.push_back(o3tl::make_unique<NetChartDialogController>());
+
     if (bEnableComplexChartTypes)
     {
         
m_aChartTypeDialogControllerList.push_back(o3tl::make_unique<StockChartDialogController>());
     }
+
     m_aChartTypeDialogControllerList.push_back(
         o3tl::make_unique<CombiColumnLineChartDialogController>());
 
@@ -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<css::chart2::XDiagram> xDiagram
+            = ChartModelHelper::findDiagram(m_xChartModel);
+        try
+        {
+            uno::Reference<beans::XPropertySet> 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<beans::XPropertySet> 
xTemplateProps(getCurrentTemplate(), uno::UNO_QUERY);
+        m_pCurrentMainType->fillExtraControls(aParameter, m_xChartModel, 
xTemplateProps);
+    }
+}
+
+uno::Reference<css::chart2::XChartTypeTemplate> 
ChartTypePanel::getCurrentTemplate() const
+{
+    if (m_pCurrentMainType && m_xChartModel.is())
+    {
+        ChartTypeParameter aParameter(getCurrentParamter());
+        m_pCurrentMainType->adjustParameterToSubType(aParameter);
+        uno::Reference<lang::XMultiServiceFactory> 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 <vcl/layout.hxx>
 #include "ChartSidebarModifyListener.hxx"
 #include <ChartTypeDialogController.hxx>
+#include <ChartTypeTemplateProvider.hxx>
 #include <TimerTriggeredControllerLock.hxx>
 #include <TitleHelper.hxx>
 
@@ -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<vcl::Window> 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<css::chart2::XChartTypeTemplate>
+    getCurrentTemplate() const override;
 
     DECL_LINK(SelectMainTypeHdl, ListBox&, void);
     DECL_LINK(SelectSubTypeHdl, ValueSet*, void);
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to