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);