include/svx/float3d.hxx         |   13 
 svx/source/engine3d/float3d.cxx |  605 ++++++++--------------------------------
 2 files changed, 133 insertions(+), 485 deletions(-)

New commits:
commit 1522ee82ca908cd45fb0d8f933c0acbad830e195
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Thu Jul 17 10:12:11 2025 +0200
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Fri Jul 18 07:07:03 2025 +0200

    svx Svx3DWin: Deduplicate code for updating toggle buttons
    
    Extract a helper method instead of duplicating the
    same logic 4 times.
    
    Change-Id: I8934b5c68977154b9d6791de53805c35a165ec0e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187998
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/include/svx/float3d.hxx b/include/svx/float3d.hxx
index ae07a45d62ca..a539a87ddc01 100644
--- a/include/svx/float3d.hxx
+++ b/include/svx/float3d.hxx
@@ -257,6 +257,8 @@ private:
                      ColorListBox& rColorListBox, TypedWhichId<SfxBoolItem> 
nWhichLightOn,
                      LightButton& rLightButton,
                      TypedWhichId<SvxB3DVectorItem> nWhichLightDirection);
+    void UpdateToggleButton(const SfxItemSet& rAttrs, 
TypedWhichId<SfxBoolItem> nWhich,
+                            weld::ToggleButton& rButton);
 };
 
 /*************************************************************************
diff --git a/svx/source/engine3d/float3d.cxx b/svx/source/engine3d/float3d.cxx
index c836edbd892d..dbfbe30ca431 100644
--- a/svx/source/engine3d/float3d.cxx
+++ b/svx/source/engine3d/float3d.cxx
@@ -510,6 +510,31 @@ void Svx3DWin::UpdateLight(const SfxItemSet& rAttrs, 
TypedWhichId<SvxColorItem>
     }
 }
 
+void Svx3DWin::UpdateToggleButton(const SfxItemSet& rAttrs, 
TypedWhichId<SfxBoolItem> nWhich,
+                                  weld::ToggleButton& rButton)
+{
+    SfxItemState eState = rAttrs.GetItemState(nWhich);
+    if (eState != SfxItemState::INVALID)
+    {
+        bool bValue = rAttrs.Get(nWhich).GetValue();
+        if (bValue != rButton.get_active())
+        {
+            rButton.set_active(bValue);
+            bUpdate = true;
+        }
+        else if (rButton.get_state() == TRISTATE_INDET)
+            rButton.set_active(bValue);
+    }
+    else
+    {
+        if (rButton.get_state() != TRISTATE_INDET)
+        {
+            rButton.set_state(TRISTATE_INDET);
+            bUpdate = true;
+        }
+    }
+}
+
 void Svx3DWin::Update( SfxItemSet const & rAttrs )
 {
     // remember 2d attributes
@@ -704,26 +729,7 @@ void Svx3DWin::Update( SfxItemSet const & rAttrs )
     }
 
     // Double walled / Double sided
-    eState = rAttrs.GetItemState(SDRATTR_3DOBJ_DOUBLE_SIDED);
-    if( eState != SfxItemState::INVALID )
-    {
-        bool bValue = rAttrs.Get(SDRATTR_3DOBJ_DOUBLE_SIDED).GetValue();
-        if( bValue != m_xBtnDoubleSided->get_active() )
-        {
-            m_xBtnDoubleSided->set_active( bValue );
-            bUpdate = true;
-        }
-        else if( m_xBtnDoubleSided->get_state() == TRISTATE_INDET )
-            m_xBtnDoubleSided->set_active( bValue );
-    }
-    else
-    {
-        if( m_xBtnDoubleSided->get_state() != TRISTATE_INDET )
-        {
-            m_xBtnDoubleSided->set_state( TRISTATE_INDET );
-            bUpdate = true;
-        }
-    }
+    UpdateToggleButton(rAttrs, SDRATTR_3DOBJ_DOUBLE_SIDED, *m_xBtnDoubleSided);
 
     // Edge rounding
     if( m_xMtrPercentDiagonal->get_sensitive() )
@@ -828,48 +834,10 @@ void Svx3DWin::Update( SfxItemSet const & rAttrs )
     }
 
     // Normal inverted
-    eState = rAttrs.GetItemState(SDRATTR_3DOBJ_NORMALS_INVERT);
-    if( eState != SfxItemState::INVALID )
-    {
-        bool bValue = rAttrs.Get(SDRATTR_3DOBJ_NORMALS_INVERT).GetValue();
-        if( bValue != m_xBtnNormalsInvert->get_active() )
-        {
-            m_xBtnNormalsInvert->set_active( bValue );
-            bUpdate = true;
-        }
-        else if( m_xBtnNormalsInvert->get_state() == TRISTATE_INDET )
-            m_xBtnNormalsInvert->set_active( bValue );
-    }
-    else
-    {
-        if( m_xBtnNormalsInvert->get_state() != TRISTATE_INDET )
-        {
-            m_xBtnNormalsInvert->set_state( TRISTATE_INDET );
-            bUpdate = true;
-        }
-    }
+    UpdateToggleButton(rAttrs, SDRATTR_3DOBJ_NORMALS_INVERT, 
*m_xBtnNormalsInvert);
 
     // 2-sided lighting
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_TWO_SIDED_LIGHTING);
-    if( eState != SfxItemState::INVALID )
-    {
-        bool bValue = 
rAttrs.Get(SDRATTR_3DSCENE_TWO_SIDED_LIGHTING).GetValue();
-        if( bValue != m_xBtnTwoSidedLighting->get_active() )
-        {
-            m_xBtnTwoSidedLighting->set_active( bValue );
-            bUpdate = true;
-        }
-        else if( m_xBtnTwoSidedLighting->get_state() == TRISTATE_INDET )
-            m_xBtnTwoSidedLighting->set_active( bValue );
-    }
-    else
-    {
-        if( m_xBtnTwoSidedLighting->get_state() != TRISTATE_INDET )
-        {
-            m_xBtnTwoSidedLighting->set_state( TRISTATE_INDET );
-            bUpdate = true;
-        }
-    }
+    UpdateToggleButton(rAttrs, SDRATTR_3DSCENE_TWO_SIDED_LIGHTING, 
*m_xBtnTwoSidedLighting);
 
     // Representation
     // Shademode
@@ -1146,26 +1114,7 @@ void Svx3DWin::Update( SfxItemSet const & rAttrs )
         }
 
         // Filter
-        eState = rAttrs.GetItemState(SDRATTR_3DOBJ_TEXTURE_FILTER);
-        if( eState != SfxItemState::INVALID )
-        {
-            bool bValue = rAttrs.Get(SDRATTR_3DOBJ_TEXTURE_FILTER).GetValue();
-            if( bValue != m_xBtnTexFilter->get_active() )
-            {
-                m_xBtnTexFilter->set_active( bValue );
-                bUpdate = true;
-            }
-            if( m_xBtnTexFilter->get_state() == TRISTATE_INDET )
-                m_xBtnTexFilter->set_active( bValue );
-        }
-        else
-        {
-            if( m_xBtnTexFilter->get_state() != TRISTATE_INDET )
-            {
-                m_xBtnTexFilter->set_state( TRISTATE_INDET );
-                bUpdate = true;
-            }
-        }
+        UpdateToggleButton(rAttrs, SDRATTR_3DOBJ_TEXTURE_FILTER, 
*m_xBtnTexFilter);
     }
 
 
commit 5ac616a8c20f222a4f9b937aad87716bba07ee0c
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Thu Jul 17 09:14:48 2025 +0200
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Fri Jul 18 07:06:57 2025 +0200

    svx Svx3DWin: Pass ColorListBox by ref
    
    Also drop drop raw pointer vars.
    
    Change-Id: I9fdb7fcc82c1397f78405c54ad013dd92687c458
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187997
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>
    Tested-by: Jenkins

diff --git a/include/svx/float3d.hxx b/include/svx/float3d.hxx
index fc1d38d64f50..ae07a45d62ca 100644
--- a/include/svx/float3d.hxx
+++ b/include/svx/float3d.hxx
@@ -230,7 +230,7 @@ private:
     SVX_DLLPRIVATE void         Construct();
     SVX_DLLPRIVATE void         Reset();
 
-    SVX_DLLPRIVATE static void  LBSelectColor( ColorListBox* pLb, const Color& 
rColor );
+    SVX_DLLPRIVATE static void LBSelectColor(ColorListBox& rLb, const Color& 
rColor);
     SVX_DLLPRIVATE sal_uInt16   GetLightSource( const LightButton* pBtn ) 
const;
     SVX_DLLPRIVATE ColorListBox* GetCLbByButton( const LightButton* pBtn = 
nullptr );
     SVX_DLLPRIVATE LightButton* GetLbByButton( const weld::Button* pBtn );
diff --git a/svx/source/engine3d/float3d.cxx b/svx/source/engine3d/float3d.cxx
index c7a928ab7c2e..c836edbd892d 100644
--- a/svx/source/engine3d/float3d.cxx
+++ b/svx/source/engine3d/float3d.cxx
@@ -469,7 +469,7 @@ void Svx3DWin::UpdateLight(const SfxItemSet& rAttrs, 
TypedWhichId<SvxColorItem>
         Color aColor = rAttrs.Get(nWhichLightColor).GetValue();
         if (aColor != rColorListBox.GetSelectEntryColor())
         {
-            LBSelectColor(&rColorListBox, aColor);
+            LBSelectColor(rColorListBox, aColor);
             bUpdate = true;
         }
     }
@@ -1017,10 +1017,9 @@ void Svx3DWin::Update( SfxItemSet const & rAttrs )
     if( eState != SfxItemState::INVALID )
     {
         aColor = rAttrs.Get(SDRATTR_3DSCENE_AMBIENTCOLOR).GetValue();
-        ColorListBox* pLb = m_xLbAmbientlight.get();
-        if( aColor != pLb->GetSelectEntryColor() )
+        if (aColor != m_xLbAmbientlight->GetSelectEntryColor())
         {
-            LBSelectColor( pLb, aColor );
+            LBSelectColor(*m_xLbAmbientlight, aColor);
             bUpdate = true;
         }
     }
@@ -1178,10 +1177,9 @@ void Svx3DWin::Update( SfxItemSet const & rAttrs )
     if( eState != SfxItemState::INVALID )
     {
         aColor = rAttrs.Get(XATTR_FILLCOLOR).GetColorValue();
-        ColorListBox* pLb = m_xLbMatColor.get();
-        if( aColor != pLb->GetSelectEntryColor() )
+        if (aColor != m_xLbMatColor->GetSelectEntryColor())
         {
-            LBSelectColor( pLb, aColor );
+            LBSelectColor(*m_xLbMatColor, aColor);
             bUpdate = true;
         }
     }
@@ -1199,10 +1197,9 @@ void Svx3DWin::Update( SfxItemSet const & rAttrs )
     if( eState != SfxItemState::INVALID )
     {
         aColor = rAttrs.Get(SDRATTR_3DOBJ_MAT_EMISSION).GetValue();
-        ColorListBox* pLb = m_xLbMatEmission.get();
-        if( aColor != pLb->GetSelectEntryColor() )
+        if (aColor != m_xLbMatEmission->GetSelectEntryColor())
         {
-            LBSelectColor( pLb, aColor );
+            LBSelectColor(*m_xLbMatEmission, aColor);
             bUpdate = true;
         }
     }
@@ -1220,10 +1217,9 @@ void Svx3DWin::Update( SfxItemSet const & rAttrs )
     if( eState != SfxItemState::INVALID )
     {
         aColor = rAttrs.Get(SDRATTR_3DOBJ_MAT_SPECULAR).GetValue();
-        ColorListBox* pLb = m_xLbMatSpecular.get();
-        if( aColor != pLb->GetSelectEntryColor() )
+        if (aColor != m_xLbMatSpecular->GetSelectEntryColor())
         {
-            LBSelectColor( pLb, aColor );
+            LBSelectColor(*m_xLbMatSpecular, aColor);
             bUpdate = true;
         }
     }
@@ -2204,7 +2200,7 @@ IMPL_LINK( Svx3DWin, ClickColorHdl, weld::Button&, rBtn, 
void)
     if (aColorDlg.Execute() == RET_OK)
     {
         aColor = aColorDlg.GetColor();
-        LBSelectColor(pLb, aColor);
+        LBSelectColor(*pLb, aColor);
         SelectColorHdl(*pLb);
     }
 }
@@ -2268,9 +2264,9 @@ IMPL_LINK( Svx3DWin, SelectHdl, weld::ComboBox&, 
rListBox, void )
             }
             break;
         }
-        LBSelectColor( m_xLbMatColor.get(), aColObj );
-        LBSelectColor( m_xLbMatEmission.get(), aColEmis );
-        LBSelectColor( m_xLbMatSpecular.get(), aColSpec );
+        LBSelectColor(*m_xLbMatColor, aColObj);
+        LBSelectColor(*m_xLbMatEmission, aColEmis);
+        LBSelectColor(*m_xLbMatSpecular, aColSpec);
         m_xMtrMatSpecularIntensity->set_value(nSpecIntens, FieldUnit::PERCENT);
 
         bUpdatePreview = true;
@@ -2434,10 +2430,10 @@ namespace
 }
 
 // Method to ensure that the LB is also associated with a color
-void Svx3DWin::LBSelectColor( ColorListBox* pLb, const Color& rColor )
+void Svx3DWin::LBSelectColor(ColorListBox& rLb, const Color& rColor)
 {
-    pLb->SetNoSelection();
-    pLb->SelectEntry({rColor, lcl_makeColorName(rColor)});
+    rLb.SetNoSelection();
+    rLb.SelectEntry({ rColor, lcl_makeColorName(rColor) });
 }
 
 void Svx3DWin::UpdatePreview()
commit 8f0047d543c917c6de63641e3a3d64d3ffa3029d
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Thu Jul 17 08:41:19 2025 +0200
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Fri Jul 18 07:06:50 2025 +0200

    svx Svx3DWin: Deduplicate code for updating light controls
    
    Deduplicate the code for handling the 8 colors by extracting
    a helper method that can be used for all of them, instead
    of having the same logic implemented 8 times.
    
    Change-Id: I5f66f17a370465f1bc55a9a6699d0c06c2e4c2c5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187996
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/include/svx/float3d.hxx b/include/svx/float3d.hxx
index aa918ffe2f05..fc1d38d64f50 100644
--- a/include/svx/float3d.hxx
+++ b/include/svx/float3d.hxx
@@ -21,9 +21,12 @@
 #define INCLUDED_SVX_FLOAT3D_HXX
 
 #include <memory>
+#include <editeng/colritem.hxx>
 #include <sfx2/ctrlitem.hxx>
 #include <sfx2/dockwin.hxx>
 #include <vcl/weld.hxx>
+#include <svl/eitem.hxx>
+#include <svx/e3ditem.hxx>
 #include <svx/svxdllapi.h>
 
 #include <svx/dlgctl3d.hxx>
@@ -248,6 +251,12 @@ public:
 
     void UpdatePreview(); // upward (private)
     void DocumentReload();
+
+private:
+    void UpdateLight(const SfxItemSet& rAttrs, TypedWhichId<SvxColorItem> 
nWhichLightColor,
+                     ColorListBox& rColorListBox, TypedWhichId<SfxBoolItem> 
nWhichLightOn,
+                     LightButton& rLightButton,
+                     TypedWhichId<SvxB3DVectorItem> nWhichLightDirection);
 };
 
 /*************************************************************************
diff --git a/svx/source/engine3d/float3d.cxx b/svx/source/engine3d/float3d.cxx
index ee21c5474bd5..c7a928ab7c2e 100644
--- a/svx/source/engine3d/float3d.cxx
+++ b/svx/source/engine3d/float3d.cxx
@@ -22,7 +22,6 @@
 #include <sfx2/dispatch.hxx>
 #include <sfx2/module.hxx>
 #include <sfx2/viewfrm.hxx>
-#include <svl/eitem.hxx>
 #include <svl/intitem.hxx>
 #include <svl/itempool.hxx>
 #include <svx/colorbox.hxx>
@@ -42,9 +41,7 @@
 #include <svx/svxids.hrc>
 #include <svx/strings.hrc>
 
-#include <editeng/colritem.hxx>
 #include <osl/diagnose.h>
-#include <svx/e3ditem.hxx>
 #include <svl/whiter.hxx>
 #include <svtools/unitconv.hxx>
 
@@ -460,6 +457,59 @@ void Svx3DWin::Reset()
     m_xCtlLightPreview->CheckSelection();
 }
 
+void Svx3DWin::UpdateLight(const SfxItemSet& rAttrs, 
TypedWhichId<SvxColorItem> nWhichLightColor,
+                           ColorListBox& rColorListBox, 
TypedWhichId<SfxBoolItem> nWhichLightOn,
+                           LightButton& rLightButton,
+                           TypedWhichId<SvxB3DVectorItem> nWhichLightDirection)
+{
+    // Color
+    SfxItemState eState = rAttrs.GetItemState(nWhichLightColor);
+    if (eState != SfxItemState::INVALID)
+    {
+        Color aColor = rAttrs.Get(nWhichLightColor).GetValue();
+        if (aColor != rColorListBox.GetSelectEntryColor())
+        {
+            LBSelectColor(&rColorListBox, aColor);
+            bUpdate = true;
+        }
+    }
+    else
+    {
+        if (!rColorListBox.IsNoSelection())
+        {
+            rColorListBox.SetNoSelection();
+            bUpdate = true;
+        }
+    }
+    // on/off
+    eState = rAttrs.GetItemState(nWhichLightOn);
+    if (eState != SfxItemState::INVALID)
+    {
+        bool bOn = rAttrs.Get(nWhichLightOn).GetValue();
+        if (bOn != rLightButton.isLightOn())
+        {
+            rLightButton.switchLightOn(bOn);
+            bUpdate = true;
+        }
+        if (rLightButton.get_state() == TRISTATE_INDET)
+            rLightButton.set_active(rLightButton.get_active());
+    }
+    else
+    {
+        if (rLightButton.get_state() != TRISTATE_INDET)
+        {
+            rLightButton.set_state(TRISTATE_INDET);
+            bUpdate = true;
+        }
+    }
+    // direction
+    eState = rAttrs.GetItemState(nWhichLightDirection);
+    if (eState != SfxItemState::INVALID)
+    {
+        bUpdate = true;
+    }
+}
+
 void Svx3DWin::Update( SfxItemSet const & rAttrs )
 {
     // remember 2d attributes
@@ -936,389 +986,31 @@ void Svx3DWin::Update( SfxItemSet const & rAttrs )
 
 // Lighting
     Color aColor;
-    // Light 1 (Color)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTCOLOR_1);
-    if( eState != SfxItemState::INVALID )
-    {
-        aColor = rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_1).GetValue();
-        ColorListBox* pLb = m_xLbLight1.get();
-        if( aColor != pLb->GetSelectEntryColor() )
-        {
-            LBSelectColor( pLb, aColor );
-            bUpdate = true;
-        }
-    }
-    else
-    {
-        if (!m_xLbLight1->IsNoSelection())
-        {
-            m_xLbLight1->SetNoSelection();
-            bUpdate = true;
-        }
-    }
-    // Light 1 (on/off)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTON_1);
-    if( eState != SfxItemState::INVALID )
-    {
-        bool bOn = rAttrs.Get(SDRATTR_3DSCENE_LIGHTON_1).GetValue();
-        if (bOn != m_xBtnLight1->isLightOn())
-        {
-            m_xBtnLight1->switchLightOn(bOn);
-            bUpdate = true;
-        }
-        if( m_xBtnLight1->get_state() == TRISTATE_INDET )
-            m_xBtnLight1->set_active( m_xBtnLight1->get_active() );
-    }
-    else
-    {
-        if( m_xBtnLight1->get_state() != TRISTATE_INDET )
-        {
-            m_xBtnLight1->set_state( TRISTATE_INDET );
-            bUpdate = true;
-        }
-    }
-    // Light 1 (direction)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTDIRECTION_1);
-    if( eState != SfxItemState::INVALID )
-    {
-        bUpdate = true;
-    }
-
-    //Light 2 (color)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTCOLOR_2);
-    if( eState != SfxItemState::INVALID )
-    {
-        aColor = rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_2).GetValue();
-        ColorListBox* pLb = m_xLbLight2.get();
-        if( aColor != pLb->GetSelectEntryColor() )
-        {
-            LBSelectColor( pLb, aColor );
-            bUpdate = true;
-        }
-    }
-    else
-    {
-        if (!m_xLbLight2->IsNoSelection())
-        {
-            m_xLbLight2->SetNoSelection();
-            bUpdate = true;
-        }
-    }
-    // Light 2 (on/off)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTON_2);
-    if( eState != SfxItemState::INVALID )
-    {
-        bool bOn = rAttrs.Get(SDRATTR_3DSCENE_LIGHTON_2).GetValue();
-        if (bOn != m_xBtnLight2->isLightOn())
-        {
-            m_xBtnLight2->switchLightOn(bOn);
-            bUpdate = true;
-        }
-        if( m_xBtnLight2->get_state() == TRISTATE_INDET )
-            m_xBtnLight2->set_active( m_xBtnLight2->get_active() );
-    }
-    else
-    {
-        if( m_xBtnLight2->get_state() != TRISTATE_INDET )
-        {
-            m_xBtnLight2->set_state( TRISTATE_INDET );
-            bUpdate = true;
-        }
-    }
-    //Light 2 (Direction)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTDIRECTION_2);
-    if( eState != SfxItemState::INVALID )
-    {
-        bUpdate = true;
-    }
-
-    //Light 3 (color)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTCOLOR_3);
-    if( eState != SfxItemState::INVALID )
-    {
-        aColor = rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_3).GetValue();
-        ColorListBox* pLb = m_xLbLight3.get();
-        if( aColor != pLb->GetSelectEntryColor() )
-        {
-            LBSelectColor( pLb, aColor );
-            bUpdate = true;
-        }
-    }
-    else
-    {
-        if (!m_xLbLight3->IsNoSelection())
-        {
-            m_xLbLight3->SetNoSelection();
-            bUpdate = true;
-        }
-    }
-    // Light 3 (on/off)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTON_3);
-    if( eState != SfxItemState::INVALID )
-    {
-        bool bOn = rAttrs.Get(SDRATTR_3DSCENE_LIGHTON_3).GetValue();
-        if (bOn != m_xBtnLight3->isLightOn())
-        {
-            m_xBtnLight3->switchLightOn(bOn);
-            bUpdate = true;
-        }
-        if( m_xBtnLight3->get_state() == TRISTATE_INDET )
-            m_xBtnLight3->set_active( m_xBtnLight3->get_active() );
-    }
-    else
-    {
-        if( m_xBtnLight3->get_state() != TRISTATE_INDET )
-        {
-            m_xBtnLight3->set_state( TRISTATE_INDET );
-            bUpdate = true;
-        }
-    }
-    // Light 3 (Direction)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTDIRECTION_3);
-    if( eState != SfxItemState::INVALID )
-    {
-        bUpdate = true;
-    }
-
-    // Light 4 (Color)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTCOLOR_4);
-    if( eState != SfxItemState::INVALID )
-    {
-        aColor = rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_4).GetValue();
-        ColorListBox* pLb = m_xLbLight4.get();
-        if( aColor != pLb->GetSelectEntryColor() )
-        {
-            LBSelectColor( pLb, aColor );
-            bUpdate = true;
-        }
-    }
-    else
-    {
-        if (!m_xLbLight4->IsNoSelection())
-        {
-            m_xLbLight4->SetNoSelection();
-            bUpdate = true;
-        }
-    }
-    // Light 4 (on/off)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTON_4);
-    if( eState != SfxItemState::INVALID )
-    {
-        bool bOn = rAttrs.Get(SDRATTR_3DSCENE_LIGHTON_4).GetValue();
-        if (bOn != m_xBtnLight4->isLightOn())
-        {
-            m_xBtnLight4->switchLightOn(bOn);
-            bUpdate = true;
-        }
-        if( m_xBtnLight4->get_state() == TRISTATE_INDET )
-            m_xBtnLight4->set_active( m_xBtnLight4->get_active() );
-    }
-    else
-    {
-        if( m_xBtnLight4->get_state() != TRISTATE_INDET )
-        {
-            m_xBtnLight4->set_state( TRISTATE_INDET );
-            bUpdate = true;
-        }
-    }
-    // Light 4 (direction)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTDIRECTION_4);
-    if( eState != SfxItemState::INVALID )
-    {
-        bUpdate = true;
-    }
 
-    // Light 5 (color)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTCOLOR_5);
-    if( eState != SfxItemState::INVALID )
-    {
-        aColor = rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_5).GetValue();
-        ColorListBox* pLb = m_xLbLight5.get();
-        if( aColor != pLb->GetSelectEntryColor() )
-        {
-            LBSelectColor( pLb, aColor );
-            bUpdate = true;
-        }
-    }
-    else
-    {
-        if (!m_xLbLight5->IsNoSelection())
-        {
-            m_xLbLight5->SetNoSelection();
-            bUpdate = true;
-        }
-    }
-    // Light 5 (on/off)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTON_5);
-    if( eState != SfxItemState::INVALID )
-    {
-        bool bOn = rAttrs.Get(SDRATTR_3DSCENE_LIGHTON_5).GetValue();
-        if (bOn != m_xBtnLight5->isLightOn())
-        {
-            m_xBtnLight5->switchLightOn(bOn);
-            bUpdate = true;
-        }
-        if( m_xBtnLight5->get_state() == TRISTATE_INDET )
-            m_xBtnLight5->set_active( m_xBtnLight5->get_active() );
-    }
-    else
-    {
-        if( m_xBtnLight5->get_state() != TRISTATE_INDET )
-        {
-            m_xBtnLight5->set_state( TRISTATE_INDET );
-            bUpdate = true;
-        }
-    }
-    // Light 5 (direction)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTDIRECTION_5);
-    if( eState != SfxItemState::INVALID )
-    {
-        bUpdate = true;
-    }
-
-    // Light 6 (color)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTCOLOR_6);
-    if( eState != SfxItemState::INVALID )
-    {
-        aColor = rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_6).GetValue();
-        ColorListBox* pLb = m_xLbLight6.get();
-        if( aColor != pLb->GetSelectEntryColor() )
-        {
-            LBSelectColor( pLb, aColor );
-            bUpdate = true;
-        }
-    }
-    else
-    {
-        if (!m_xLbLight6->IsNoSelection())
-        {
-            m_xLbLight6->SetNoSelection();
-            bUpdate = true;
-        }
-    }
-    // Light 6 (on/off)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTON_6);
-    if( eState != SfxItemState::INVALID )
-    {
-        bool bOn = rAttrs.Get(SDRATTR_3DSCENE_LIGHTON_6).GetValue();
-        if (bOn != m_xBtnLight6->isLightOn())
-        {
-            m_xBtnLight6->switchLightOn(bOn);
-            bUpdate = true;
-        }
-        if( m_xBtnLight6->get_state() == TRISTATE_INDET )
-            m_xBtnLight6->set_active( m_xBtnLight6->get_active() );
-    }
-    else
-    {
-        if( m_xBtnLight6->get_state() != TRISTATE_INDET )
-        {
-            m_xBtnLight6->set_state( TRISTATE_INDET );
-            bUpdate = true;
-        }
-    }
-    // Light 6 (direction)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTDIRECTION_6);
-    if( eState != SfxItemState::INVALID )
-    {
-        bUpdate = true;
-    }
-
-    // Light 7 (color)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTCOLOR_7);
-    if( eState != SfxItemState::INVALID )
-    {
-        aColor = rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_7).GetValue();
-        ColorListBox* pLb = m_xLbLight7.get();
-        if( aColor != pLb->GetSelectEntryColor() )
-        {
-            LBSelectColor( pLb, aColor );
-            bUpdate = true;
-        }
-    }
-    else
-    {
-        if (!m_xLbLight7->IsNoSelection())
-        {
-            m_xLbLight7->SetNoSelection();
-            bUpdate = true;
-        }
-    }
-    // Light 7 (on/off)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTON_7);
-    if( eState != SfxItemState::INVALID )
-    {
-        bool bOn = rAttrs.Get(SDRATTR_3DSCENE_LIGHTON_7).GetValue();
-        if (bOn != m_xBtnLight7->isLightOn())
-        {
-            m_xBtnLight7->switchLightOn(bOn);
-            bUpdate = true;
-        }
-        if( m_xBtnLight7->get_state() == TRISTATE_INDET )
-            m_xBtnLight7->set_active( m_xBtnLight7->get_active() );
-    }
-    else
-    {
-        if( m_xBtnLight7->get_state() != TRISTATE_INDET )
-        {
-            m_xBtnLight7->set_state( TRISTATE_INDET );
-            bUpdate = true;
-        }
-    }
-    // Light 7 (direction)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTDIRECTION_7);
-    if( eState != SfxItemState::INVALID )
-    {
-        bUpdate = true;
-    }
-
-    // Light 8 (color)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTCOLOR_8);
-    if( eState != SfxItemState::INVALID )
-    {
-        aColor = rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_8).GetValue();
-        ColorListBox* pLb = m_xLbLight8.get();
-        if( aColor != pLb->GetSelectEntryColor() )
-        {
-            LBSelectColor( pLb, aColor );
-            bUpdate = true;
-        }
-    }
-    else
-    {
-        if (!m_xLbLight8->IsNoSelection())
-        {
-            m_xLbLight8->SetNoSelection();
-            bUpdate = true;
-        }
-    }
-    // Light 8 (on/off)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTON_8);
-    if( eState != SfxItemState::INVALID )
-    {
-        bool bOn = rAttrs.Get(SDRATTR_3DSCENE_LIGHTON_8).GetValue();
-        if (bOn != m_xBtnLight8->isLightOn())
-        {
-            m_xBtnLight8->switchLightOn(bOn);
-            bUpdate = true;
-        }
-        if( m_xBtnLight8->get_state() == TRISTATE_INDET )
-            m_xBtnLight8->set_active( m_xBtnLight8->get_active() );
-    }
-    else
-    {
-        if( m_xBtnLight8->get_state() != TRISTATE_INDET )
-        {
-            m_xBtnLight8->set_state( TRISTATE_INDET );
-            bUpdate = true;
-        }
-    }
-    // Light 8 (direction)
-    eState = rAttrs.GetItemState(SDRATTR_3DSCENE_LIGHTDIRECTION_8);
-    if( eState != SfxItemState::INVALID )
-    {
-        bUpdate = true;
-    }
+    // Light 1
+    UpdateLight(rAttrs, SDRATTR_3DSCENE_LIGHTCOLOR_1, *m_xLbLight1, 
SDRATTR_3DSCENE_LIGHTON_1,
+                *m_xBtnLight1, SDRATTR_3DSCENE_LIGHTDIRECTION_1);
+    // Light 2
+    UpdateLight(rAttrs, SDRATTR_3DSCENE_LIGHTCOLOR_2, *m_xLbLight2, 
SDRATTR_3DSCENE_LIGHTON_2,
+                *m_xBtnLight2, SDRATTR_3DSCENE_LIGHTDIRECTION_2);
+    // Light 3
+    UpdateLight(rAttrs, SDRATTR_3DSCENE_LIGHTCOLOR_3, *m_xLbLight3, 
SDRATTR_3DSCENE_LIGHTON_3,
+                *m_xBtnLight3, SDRATTR_3DSCENE_LIGHTDIRECTION_3);
+    // Light 4
+    UpdateLight(rAttrs, SDRATTR_3DSCENE_LIGHTCOLOR_4, *m_xLbLight4, 
SDRATTR_3DSCENE_LIGHTON_4,
+                *m_xBtnLight4, SDRATTR_3DSCENE_LIGHTDIRECTION_4);
+    // Light 5
+    UpdateLight(rAttrs, SDRATTR_3DSCENE_LIGHTCOLOR_5, *m_xLbLight5, 
SDRATTR_3DSCENE_LIGHTON_5,
+                *m_xBtnLight5, SDRATTR_3DSCENE_LIGHTDIRECTION_5);
+    // Light 6
+    UpdateLight(rAttrs, SDRATTR_3DSCENE_LIGHTCOLOR_6, *m_xLbLight6, 
SDRATTR_3DSCENE_LIGHTON_6,
+                *m_xBtnLight6, SDRATTR_3DSCENE_LIGHTDIRECTION_6);
+    // Light 7
+    UpdateLight(rAttrs, SDRATTR_3DSCENE_LIGHTCOLOR_7, *m_xLbLight7, 
SDRATTR_3DSCENE_LIGHTON_7,
+                *m_xBtnLight7, SDRATTR_3DSCENE_LIGHTDIRECTION_7);
+    // Light 8
+    UpdateLight(rAttrs, SDRATTR_3DSCENE_LIGHTCOLOR_8, *m_xLbLight8, 
SDRATTR_3DSCENE_LIGHTON_8,
+                *m_xBtnLight8, SDRATTR_3DSCENE_LIGHTDIRECTION_8);
 
     // Ambient light
     eState = rAttrs.GetItemState(SDRATTR_3DSCENE_AMBIENTCOLOR);

Reply via email to