[Libreoffice-commits] core.git: chart2/source sc/qa

Andreas Heinisch (via logerrit) logerrit at kemper.freedesktop.org
Wed May 19 07:32:02 UTC 2021


 chart2/source/controller/dialogs/ChartResourceGroups.cxx       |   33 +++++----
 chart2/source/controller/dialogs/ChartTypeDialogController.cxx |    4 -
 chart2/source/controller/dialogs/tp_3D_SceneAppearance.cxx     |   12 +--
 chart2/source/controller/dialogs/tp_ChartType.cxx              |   16 +++-
 chart2/source/controller/sidebar/ChartTypePanel.cxx            |   10 +-
 chart2/source/inc/ThreeDHelper.hxx                             |    2 
 chart2/source/model/main/ChartModel_Persistence.cxx            |    2 
 chart2/source/tools/ThreeDHelper.cxx                           |   24 +++---
 sc/qa/uitest/chart/tdf124295.py                                |   36 ++++++++++
 9 files changed, 97 insertions(+), 42 deletions(-)

New commits:
commit b238522ca121ca8f863fe4d3394ade088a65ad01
Author:     Andreas Heinisch <andreas.heinisch at yahoo.de>
AuthorDate: Sun May 16 11:02:32 2021 +0200
Commit:     Andreas Heinisch <andreas.heinisch at yahoo.de>
CommitDate: Wed May 19 09:31:24 2021 +0200

    tdf#124295 - Always select a 3D scheme in the chart wizard
    
    Change-Id: Ic0a39b4cb6f7af6fbdd99fc93677a0c2d966234d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115671
    Tested-by: Jenkins
    Reviewed-by: Andreas Heinisch <andreas.heinisch at yahoo.de>

diff --git a/chart2/source/controller/dialogs/ChartResourceGroups.cxx b/chart2/source/controller/dialogs/ChartResourceGroups.cxx
index 199606abef69..9ab5dff70f20 100644
--- a/chart2/source/controller/dialogs/ChartResourceGroups.cxx
+++ b/chart2/source/controller/dialogs/ChartResourceGroups.cxx
@@ -48,24 +48,31 @@ void Dim3DLookResourceGroup::fillControls(const ChartTypeParameter& rParameter)
     m_xCB_3DLook->set_active(rParameter.b3DLook);
     m_xLB_Scheme->set_sensitive(rParameter.b3DLook);
 
-    if (rParameter.eThreeDLookScheme == ThreeDLookScheme_Simple)
-        m_xLB_Scheme->set_active(POS_3DSCHEME_SIMPLE);
-    else if (rParameter.eThreeDLookScheme == ThreeDLookScheme_Realistic)
-        m_xLB_Scheme->set_active(POS_3DSCHEME_REALISTIC);
-    else
-        m_xLB_Scheme->set_active(-1);
+    // tdf#124295 - select always a 3D scheme
+    switch (rParameter.eThreeDLookScheme)
+    {
+        case ThreeDLookScheme::ThreeDLookScheme_Simple:
+            m_xLB_Scheme->set_active(POS_3DSCHEME_SIMPLE);
+            break;
+        case ThreeDLookScheme::ThreeDLookScheme_Realistic:
+        case ThreeDLookScheme::ThreeDLookScheme_Unknown:
+            m_xLB_Scheme->set_active(POS_3DSCHEME_REALISTIC);
+            break;
+    }
 }
 
 void Dim3DLookResourceGroup::fillParameter(ChartTypeParameter& rParameter)
 {
     rParameter.b3DLook = m_xCB_3DLook->get_active();
-    const int nPos = m_xLB_Scheme->get_active();
-    if (nPos == POS_3DSCHEME_SIMPLE)
-        rParameter.eThreeDLookScheme = ThreeDLookScheme_Simple;
-    else if (nPos == POS_3DSCHEME_REALISTIC)
-        rParameter.eThreeDLookScheme = ThreeDLookScheme_Realistic;
-    else
-        rParameter.eThreeDLookScheme = ThreeDLookScheme_Unknown;
+    // tdf#124295 - select always a 3D scheme
+    switch (m_xLB_Scheme->get_active())
+    {
+        case POS_3DSCHEME_SIMPLE:
+            rParameter.eThreeDLookScheme = ThreeDLookScheme::ThreeDLookScheme_Simple;
+            break;
+        default:
+            rParameter.eThreeDLookScheme = ThreeDLookScheme::ThreeDLookScheme_Realistic;
+    }
 }
 
 IMPL_LINK_NOARG(Dim3DLookResourceGroup, Dim3DLookCheckHdl, weld::ToggleButton&, void)
diff --git a/chart2/source/controller/dialogs/ChartTypeDialogController.cxx b/chart2/source/controller/dialogs/ChartTypeDialogController.cxx
index 748df3e1b40e..b0fda08c72f6 100644
--- a/chart2/source/controller/dialogs/ChartTypeDialogController.cxx
+++ b/chart2/source/controller/dialogs/ChartTypeDialogController.cxx
@@ -53,7 +53,7 @@ ChartTypeParameter::ChartTypeParameter()
                     , nCurveResolution(20)
                     , nSplineOrder(3)
                     , nGeometry3D(DataPointGeometry3D::CUBOID)
-                    , eThreeDLookScheme(ThreeDLookScheme_Realistic)
+                    , eThreeDLookScheme(ThreeDLookScheme::ThreeDLookScheme_Realistic)
                     , bSortByXValues(false)
                     , mbRoundedEdge(false)
 {
@@ -73,7 +73,7 @@ ChartTypeParameter::ChartTypeParameter( sal_Int32 SubTypeIndex, bool HasXAxisWit
                     , nCurveResolution(20)
                     , nSplineOrder(3)
                     , nGeometry3D(DataPointGeometry3D::CUBOID)
-                    , eThreeDLookScheme(ThreeDLookScheme_Realistic)
+                    , eThreeDLookScheme(ThreeDLookScheme::ThreeDLookScheme_Realistic)
                     , bSortByXValues(false)
                     , mbRoundedEdge(false)
 {
diff --git a/chart2/source/controller/dialogs/tp_3D_SceneAppearance.cxx b/chart2/source/controller/dialogs/tp_3D_SceneAppearance.cxx
index c24cf6fab0d9..2ca07dd15676 100644
--- a/chart2/source/controller/dialogs/tp_3D_SceneAppearance.cxx
+++ b/chart2/source/controller/dialogs/tp_3D_SceneAppearance.cxx
@@ -44,7 +44,7 @@ struct lcl_ModelProperties
         : m_aShadeMode(drawing::ShadeMode_FLAT)
         , m_nRoundedEdges(-1)
         , m_nObjectLines(-1)
-        , m_eScheme(::chart::ThreeDLookScheme_Unknown)
+        , m_eScheme(::chart::ThreeDLookScheme::ThreeDLookScheme_Unknown)
     {}
 };
 
@@ -248,13 +248,13 @@ void ThreeD_SceneAppearance_TabPage::updateScheme()
         m_xLB_Scheme->remove(POS_3DSCHEME_CUSTOM);
     switch( aProps.m_eScheme )
     {
-        case ThreeDLookScheme_Simple:
+        case ThreeDLookScheme::ThreeDLookScheme_Simple:
             m_xLB_Scheme->set_active( POS_3DSCHEME_SIMPLE );
             break;
-        case ThreeDLookScheme_Realistic:
+        case ThreeDLookScheme::ThreeDLookScheme_Realistic:
             m_xLB_Scheme->set_active( POS_3DSCHEME_REALISTIC );
             break;
-        case ThreeDLookScheme_Unknown:
+        case ThreeDLookScheme::ThreeDLookScheme_Unknown:
             {
                 m_xLB_Scheme->insert_text(POS_3DSCHEME_CUSTOM, m_aCustom);
                 m_xLB_Scheme->set_active(POS_3DSCHEME_CUSTOM);
@@ -275,9 +275,9 @@ IMPL_LINK_NOARG(ThreeD_SceneAppearance_TabPage, SelectSchemeHdl, weld::ComboBox&
         uno::Reference< chart2::XDiagram > xDiagram( ::chart::ChartModelHelper::findDiagram( m_xChartModel ) );
 
         if( m_xLB_Scheme->get_active() == POS_3DSCHEME_REALISTIC )
-            ThreeDHelper::setScheme( xDiagram, ThreeDLookScheme_Realistic );
+            ThreeDHelper::setScheme( xDiagram, ThreeDLookScheme::ThreeDLookScheme_Realistic );
         else if( m_xLB_Scheme->get_active() == POS_3DSCHEME_SIMPLE )
-            ThreeDHelper::setScheme( xDiagram, ThreeDLookScheme_Simple );
+            ThreeDHelper::setScheme( xDiagram, ThreeDLookScheme::ThreeDLookScheme_Simple );
         else
         {
             OSL_FAIL( "Invalid Entry selected" );
diff --git a/chart2/source/controller/dialogs/tp_ChartType.cxx b/chart2/source/controller/dialogs/tp_ChartType.cxx
index e209f508e3cc..19084e9e5180 100644
--- a/chart2/source/controller/dialogs/tp_ChartType.cxx
+++ b/chart2/source/controller/dialogs/tp_ChartType.cxx
@@ -178,7 +178,11 @@ void ChartTypeTabPage::stateChanged()
 
     //detect the new ThreeDLookScheme
     uno::Reference<XDiagram> xDiagram = ChartModelHelper::findDiagram(m_xChartModel);
-    aParameter.eThreeDLookScheme = ThreeDHelper::detectScheme(xDiagram);
+    // tdf#124295 - select always a 3D scheme
+    if (ThreeDLookScheme aThreeDLookScheme = ThreeDHelper::detectScheme(xDiagram);
+        aThreeDLookScheme != ThreeDLookScheme::ThreeDLookScheme_Unknown)
+        aParameter.eThreeDLookScheme = aThreeDLookScheme;
+
     try
     {
         uno::Reference<beans::XPropertySet> xPropSet(xDiagram, uno::UNO_QUERY_THROW);
@@ -240,8 +244,9 @@ void ChartTypeTabPage::selectMainType()
     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;
+    if (!aParameter.b3DLook
+        && aParameter.eThreeDLookScheme != ThreeDLookScheme::ThreeDLookScheme_Realistic)
+        aParameter.eThreeDLookScheme = ThreeDLookScheme::ThreeDLookScheme_Realistic;
 
     uno::Reference<XDiagram> xDiagram = ChartModelHelper::findDiagram(m_xChartModel);
     try
@@ -320,8 +325,9 @@ void ChartTypeTabPage::initializePage()
 
             //set ThreeDLookScheme
             aParameter.eThreeDLookScheme = ThreeDHelper::detectScheme( xDiagram );
-            if(!aParameter.b3DLook && aParameter.eThreeDLookScheme!=ThreeDLookScheme_Realistic )
-                aParameter.eThreeDLookScheme=ThreeDLookScheme_Realistic;
+            if (!aParameter.b3DLook
+                && aParameter.eThreeDLookScheme != ThreeDLookScheme::ThreeDLookScheme_Realistic)
+                aParameter.eThreeDLookScheme = ThreeDLookScheme::ThreeDLookScheme_Realistic;
 
             try
             {
diff --git a/chart2/source/controller/sidebar/ChartTypePanel.cxx b/chart2/source/controller/sidebar/ChartTypePanel.cxx
index 66ffaa97c819..8ff15267760b 100644
--- a/chart2/source/controller/sidebar/ChartTypePanel.cxx
+++ b/chart2/source/controller/sidebar/ChartTypePanel.cxx
@@ -184,8 +184,9 @@ void ChartTypePanel::Initialize()
 
             //set ThreeDLookScheme
             aParameter.eThreeDLookScheme = ThreeDHelper::detectScheme(xDiagram);
-            if (!aParameter.b3DLook && aParameter.eThreeDLookScheme != ThreeDLookScheme_Realistic)
-                aParameter.eThreeDLookScheme = ThreeDLookScheme_Realistic;
+            if (!aParameter.b3DLook
+                && aParameter.eThreeDLookScheme != ThreeDLookScheme::ThreeDLookScheme_Realistic)
+                aParameter.eThreeDLookScheme = ThreeDLookScheme::ThreeDLookScheme_Realistic;
 
             try
             {
@@ -412,8 +413,9 @@ void ChartTypePanel::selectMainType()
     //detect the new ThreeDLookScheme
     aParameter.eThreeDLookScheme
         = ThreeDHelper::detectScheme(ChartModelHelper::findDiagram(m_xChartModel));
-    if (!aParameter.b3DLook && aParameter.eThreeDLookScheme != ThreeDLookScheme_Realistic)
-        aParameter.eThreeDLookScheme = ThreeDLookScheme_Realistic;
+    if (!aParameter.b3DLook
+        && aParameter.eThreeDLookScheme != ThreeDLookScheme::ThreeDLookScheme_Realistic)
+        aParameter.eThreeDLookScheme = ThreeDLookScheme::ThreeDLookScheme_Realistic;
 
     uno::Reference<css::chart2::XDiagram> xDiagram = ChartModelHelper::findDiagram(m_xChartModel);
     try
diff --git a/chart2/source/inc/ThreeDHelper.hxx b/chart2/source/inc/ThreeDHelper.hxx
index e3d600b37219..93b1c995f388 100644
--- a/chart2/source/inc/ThreeDHelper.hxx
+++ b/chart2/source/inc/ThreeDHelper.hxx
@@ -28,7 +28,7 @@ namespace com::sun::star::chart2 { class XDiagram; }
 namespace chart
 {
 
-enum ThreeDLookScheme
+enum class ThreeDLookScheme
 {
     ThreeDLookScheme_Simple,
     ThreeDLookScheme_Realistic,
diff --git a/chart2/source/model/main/ChartModel_Persistence.cxx b/chart2/source/model/main/ChartModel_Persistence.cxx
index b26cf6815d72..b0bf0d1050a4 100644
--- a/chart2/source/model/main/ChartModel_Persistence.cxx
+++ b/chart2/source/model/main/ChartModel_Persistence.cxx
@@ -434,7 +434,7 @@ void ChartModel::insertDefaultChart()
                 {
                     xDiagramProperties->setPropertyValue( "RightAngledAxes", uno::Any( true ));
                     xDiagramProperties->setPropertyValue( "D3DScenePerspective", uno::Any( drawing::ProjectionMode_PARALLEL ));
-                    ThreeDHelper::setScheme( xDiagram, ThreeDLookScheme_Realistic );
+                    ThreeDHelper::setScheme( xDiagram, ThreeDLookScheme::ThreeDLookScheme_Realistic );
                 }
 
                 //set some new 'defaults' for wall and floor
diff --git a/chart2/source/tools/ThreeDHelper.cxx b/chart2/source/tools/ThreeDHelper.cxx
index fe788397d40d..8c48d359c7b4 100644
--- a/chart2/source/tools/ThreeDHelper.cxx
+++ b/chart2/source/tools/ThreeDHelper.cxx
@@ -205,14 +205,14 @@ void lcl_setLightsForScheme( const uno::Reference< beans::XPropertySet >& xDiagr
 {
     if(!xDiagramProps.is())
         return;
-    if( rScheme == ThreeDLookScheme_Unknown)
+    if( rScheme == ThreeDLookScheme::ThreeDLookScheme_Unknown)
         return;
 
     xDiagramProps->setPropertyValue( UNO_NAME_3D_SCENE_LIGHTON_2, uno::Any( true ) );
 
     uno::Reference< chart2::XDiagram > xDiagram( xDiagramProps, uno::UNO_QUERY );
     uno::Reference< chart2::XChartType > xChartType( DiagramHelper::getChartTypeByIndex( xDiagram, 0 ) );
-    uno::Any aADirection( rScheme == ThreeDLookScheme_Simple
+    uno::Any aADirection( rScheme == ThreeDLookScheme::ThreeDLookScheme_Simple
         ? ChartTypeHelper::getDefaultSimpleLightDirection(xChartType)
         : ChartTypeHelper::getDefaultRealisticLightDirection(xChartType) );
 
@@ -232,10 +232,12 @@ void lcl_setLightsForScheme( const uno::Reference< beans::XPropertySet >& xDiagr
         }
     }
 
-    sal_Int32 nColor = ::chart::ChartTypeHelper::getDefaultDirectLightColor( rScheme==ThreeDLookScheme_Simple, xChartType );
+    sal_Int32 nColor = ::chart::ChartTypeHelper::getDefaultDirectLightColor(
+        rScheme == ThreeDLookScheme::ThreeDLookScheme_Simple, xChartType);
     xDiagramProps->setPropertyValue( UNO_NAME_3D_SCENE_LIGHTCOLOR_2, uno::Any( nColor ) );
 
-    sal_Int32 nAmbientColor = ::chart::ChartTypeHelper::getDefaultAmbientLightColor( rScheme==ThreeDLookScheme_Simple, xChartType );
+    sal_Int32 nAmbientColor = ::chart::ChartTypeHelper::getDefaultAmbientLightColor(
+        rScheme == ThreeDLookScheme::ThreeDLookScheme_Simple, xChartType);
     xDiagramProps->setPropertyValue( UNO_NAME_3D_SCENE_AMBIENTCOLOR, uno::Any( nAmbientColor ) );
 }
 
@@ -1152,7 +1154,7 @@ double ThreeDHelper::PerspectiveToCameraDistance( double fPerspective )
 
 ThreeDLookScheme ThreeDHelper::detectScheme( const uno::Reference< XDiagram >& xDiagram )
 {
-    ThreeDLookScheme aScheme = ThreeDLookScheme_Unknown;
+    ThreeDLookScheme aScheme = ThreeDLookScheme::ThreeDLookScheme_Unknown;
 
     sal_Int32 nRoundedEdges;
     sal_Int32 nObjectLines;
@@ -1174,12 +1176,12 @@ ThreeDLookScheme ThreeDHelper::detectScheme( const uno::Reference< XDiagram >& x
     if( lcl_isSimpleScheme( aShadeMode, nRoundedEdges, nObjectLines, xDiagram ) )
     {
         if( lcl_isSimpleLightScheme(xDiagramProps) )
-            aScheme = ThreeDLookScheme_Simple;
+            aScheme = ThreeDLookScheme::ThreeDLookScheme_Simple;
     }
     else if( lcl_isRealisticScheme( aShadeMode, nRoundedEdges, nObjectLines ) )
     {
         if( lcl_isRealisticLightScheme(xDiagramProps) )
-            aScheme = ThreeDLookScheme_Realistic;
+            aScheme = ThreeDLookScheme::ThreeDLookScheme_Realistic;
     }
 
     return aScheme;
@@ -1187,14 +1189,14 @@ ThreeDLookScheme ThreeDHelper::detectScheme( const uno::Reference< XDiagram >& x
 
 void ThreeDHelper::setScheme( const uno::Reference< XDiagram >& xDiagram, ThreeDLookScheme aScheme )
 {
-    if( aScheme == ThreeDLookScheme_Unknown )
+    if( aScheme == ThreeDLookScheme::ThreeDLookScheme_Unknown )
         return;
 
     drawing::ShadeMode aShadeMode;
     sal_Int32 nRoundedEdges;
     sal_Int32 nObjectLines;
 
-    if( aScheme == ThreeDLookScheme_Simple )
+    if( aScheme == ThreeDLookScheme::ThreeDLookScheme_Simple )
         lcl_setSimpleScheme(aShadeMode,nRoundedEdges,nObjectLines,xDiagram);
     else
         lcl_setRealisticScheme(aShadeMode,nRoundedEdges,nObjectLines);
@@ -1278,7 +1280,9 @@ void ThreeDHelper::setDefaultIllumination( const uno::Reference< beans::XPropert
         DBG_UNHANDLED_EXCEPTION("chart2");
     }
 
-    ThreeDLookScheme aScheme = (aShadeMode==drawing::ShadeMode_FLAT) ? ThreeDLookScheme_Simple : ThreeDLookScheme_Realistic;
+    ThreeDLookScheme aScheme = (aShadeMode == drawing::ShadeMode_FLAT)
+                                   ? ThreeDLookScheme::ThreeDLookScheme_Simple
+                                   : ThreeDLookScheme::ThreeDLookScheme_Realistic;
     lcl_setLightsForScheme( xSceneProperties, aScheme );
 }
 
diff --git a/sc/qa/uitest/chart/tdf124295.py b/sc/qa/uitest/chart/tdf124295.py
new file mode 100644
index 000000000000..a3fda3f03b46
--- /dev/null
+++ b/sc/qa/uitest/chart/tdf124295.py
@@ -0,0 +1,36 @@
+# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+from uitest.framework import UITestCase
+from uitest.uihelper.common import get_state_as_dict
+
+import time
+import unittest
+
+class tdf124295(UITestCase):
+
+    def test_tdf124295(self):
+        # Open spreadsheet and insert chart
+        self.ui_test.create_doc_in_start_center("calc")
+        self.ui_test.execute_dialog_through_command(".uno:InsertObjectChart")
+        xChartDlg = self.xUITest.getTopFocusWindow()
+
+        # Click 3D look check button
+        x3DCheckBtn = xChartDlg.getChild("3dlook")
+        x3DCheckBtn.executeAction("CLICK", tuple())
+
+        x3DSchemeLstBox = xChartDlg.getChild("3dscheme")
+        # Without the fix in place, this test would have failed with:
+        # AssertionError: 'Realistic' != ''
+        self.assertEqual("Realistic", get_state_as_dict(x3DSchemeLstBox)["SelectEntryText"])
+
+        xCancelBtn = xChartDlg.getChild("cancel")
+        self.ui_test.close_dialog_through_button(xCancelBtn)
+
+        self.ui_test.close_doc()
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:


More information about the Libreoffice-commits mailing list