diff options
Diffstat (limited to 'sc/source/ui/app/scmod.cxx')
-rw-r--r-- | sc/source/ui/app/scmod.cxx | 209 |
1 files changed, 106 insertions, 103 deletions
diff --git a/sc/source/ui/app/scmod.cxx b/sc/source/ui/app/scmod.cxx index 43041d1be852..d72c94022123 100644 --- a/sc/source/ui/app/scmod.cxx +++ b/sc/source/ui/app/scmod.cxx @@ -56,7 +56,7 @@ #include <svtools/ehdl.hxx> #include <svtools/accessibilityoptions.hxx> -#include <svtools/ctloptions.hxx> +#include <svl/ctloptions.hxx> #include <unotools/useroptions.hxx> #include <vcl/status.hxx> #include <sfx2/bindings.hxx> @@ -66,7 +66,7 @@ #include <svx/langitem.hxx> #include <svtools/colorcfg.hxx> -#include <svtools/whiter.hxx> +#include <svl/whiter.hxx> #include <svx/selctrl.hxx> #include <svx/insctrl.hxx> #include <svx/zoomctrl.hxx> @@ -74,7 +74,7 @@ #include <svx/pszctrl.hxx> #include <svx/zoomsliderctrl.hxx> #include <vcl/msgbox.hxx> -#include <svtools/inethist.hxx> +#include <svl/inethist.hxx> #include <vcl/waitobj.hxx> #include <svx/svxerr.hxx> @@ -217,125 +217,128 @@ ScModule::~ScModule() } //------------------------------------------------------------------ - -void ScModule::Notify( SfxBroadcaster&, const SfxHint& rHint ) +void ScModule::ConfigurationChanged( utl::ConfigurationBroadcaster* p, sal_uInt32 ) { - if ( rHint.ISA(SfxSimpleHint) ) + if ( p == pColorConfig || p == pAccessOptions ) { - ULONG nHintId = ((SfxSimpleHint&)rHint).GetId(); - if ( nHintId == SFX_HINT_DEINITIALIZING ) - { - // ConfigItems must be removed before ConfigManager - DeleteCfg(); - } - else if ( nHintId == SFX_HINT_COLORS_CHANGED || nHintId == SFX_HINT_ACCESSIBILITY_CHANGED ) + // Test if detective objects have to be updated with new colors + // (if the detective colors haven't been used yet, there's nothing to update) + if ( ScDetectiveFunc::IsColorsInitialized() ) { - // Test if detective objects have to be updated with new colors - // (if the detective colors haven't been used yet, there's nothing to update) - if ( ScDetectiveFunc::IsColorsInitialized() ) + const svtools::ColorConfig& rColors = GetColorConfig(); + BOOL bArrows = + ( ScDetectiveFunc::GetArrowColor() != (ColorData)rColors.GetColorValue(svtools::CALCDETECTIVE).nColor || + ScDetectiveFunc::GetErrorColor() != (ColorData)rColors.GetColorValue(svtools::CALCDETECTIVEERROR).nColor ); + BOOL bComments = + ( ScDetectiveFunc::GetCommentColor() != (ColorData)rColors.GetColorValue(svtools::CALCNOTESBACKGROUND).nColor ); + if ( bArrows || bComments ) { - const svtools::ColorConfig& rColors = GetColorConfig(); - BOOL bArrows = - ( ScDetectiveFunc::GetArrowColor() != (ColorData)rColors.GetColorValue(svtools::CALCDETECTIVE).nColor || - ScDetectiveFunc::GetErrorColor() != (ColorData)rColors.GetColorValue(svtools::CALCDETECTIVEERROR).nColor ); - BOOL bComments = - ( ScDetectiveFunc::GetCommentColor() != (ColorData)rColors.GetColorValue(svtools::CALCNOTESBACKGROUND).nColor ); - if ( bArrows || bComments ) - { - ScDetectiveFunc::InitializeColors(); // get the new colors + ScDetectiveFunc::InitializeColors(); // get the new colors - // update detective objects in all open documents - SfxObjectShell* pObjSh = SfxObjectShell::GetFirst(); - while ( pObjSh ) + // update detective objects in all open documents + SfxObjectShell* pObjSh = SfxObjectShell::GetFirst(); + while ( pObjSh ) + { + if ( pObjSh->Type() == TYPE(ScDocShell) ) { - if ( pObjSh->Type() == TYPE(ScDocShell) ) - { - ScDocShell* pDocSh = ((ScDocShell*)pObjSh); - if ( bArrows ) - ScDetectiveFunc( pDocSh->GetDocument(), 0 ).UpdateAllArrowColors(); - if ( bComments ) - ScDetectiveFunc::UpdateAllComments( *pDocSh->GetDocument() ); - } - pObjSh = SfxObjectShell::GetNext( *pObjSh ); + ScDocShell* pDocSh = ((ScDocShell*)pObjSh); + if ( bArrows ) + ScDetectiveFunc( pDocSh->GetDocument(), 0 ).UpdateAllArrowColors(); + if ( bComments ) + ScDetectiveFunc::UpdateAllComments( *pDocSh->GetDocument() ); } + pObjSh = SfxObjectShell::GetNext( *pObjSh ); } } + } - // force all views to repaint, using the new options + // force all views to repaint, using the new options - SfxViewShell* pViewShell = SfxViewShell::GetFirst(); - while(pViewShell) + SfxViewShell* pViewShell = SfxViewShell::GetFirst(); + while(pViewShell) + { + if ( pViewShell->ISA(ScTabViewShell) ) { - if ( pViewShell->ISA(ScTabViewShell) ) - { - ScTabViewShell* pViewSh = (ScTabViewShell*)pViewShell; - pViewSh->PaintGrid(); - pViewSh->PaintTop(); - pViewSh->PaintLeft(); - pViewSh->PaintExtras(); - - ScInputHandler* pHdl = pViewSh->GetInputHandler(); - if ( pHdl ) - pHdl->ForgetLastPattern(); // EditEngine BackgroundColor may change - } - else if ( pViewShell->ISA(ScPreviewShell) ) - { - Window* pWin = pViewShell->GetWindow(); - if (pWin) - pWin->Invalidate(); - } - pViewShell = SfxViewShell::GetNext( *pViewShell ); + ScTabViewShell* pViewSh = (ScTabViewShell*)pViewShell; + pViewSh->PaintGrid(); + pViewSh->PaintTop(); + pViewSh->PaintLeft(); + pViewSh->PaintExtras(); + + ScInputHandler* pHdl = pViewSh->GetInputHandler(); + if ( pHdl ) + pHdl->ForgetLastPattern(); // EditEngine BackgroundColor may change + } + else if ( pViewShell->ISA(ScPreviewShell) ) + { + Window* pWin = pViewShell->GetWindow(); + if (pWin) + pWin->Invalidate(); } + pViewShell = SfxViewShell::GetNext( *pViewShell ); } - else if ( nHintId == SFX_HINT_CTL_SETTINGS_CHANGED ) + } + else if ( p == pCTLOptions ) + { + // for all documents: set digit language for printer, recalc output factor, update row heights + SfxObjectShell* pObjSh = SfxObjectShell::GetFirst(); + while ( pObjSh ) { - // for all documents: set digit language for printer, recalc output factor, update row heights - SfxObjectShell* pObjSh = SfxObjectShell::GetFirst(); - while ( pObjSh ) + if ( pObjSh->Type() == TYPE(ScDocShell) ) { - if ( pObjSh->Type() == TYPE(ScDocShell) ) - { - ScDocShell* pDocSh = ((ScDocShell*)pObjSh); - OutputDevice* pPrinter = pDocSh->GetPrinter(); - if ( pPrinter ) - pPrinter->SetDigitLanguage( GetOptDigitLanguage() ); + ScDocShell* pDocSh = ((ScDocShell*)pObjSh); + OutputDevice* pPrinter = pDocSh->GetPrinter(); + if ( pPrinter ) + pPrinter->SetDigitLanguage( GetOptDigitLanguage() ); - pDocSh->CalcOutputFactor(); + pDocSh->CalcOutputFactor(); - SCTAB nTabCount = pDocSh->GetDocument()->GetTableCount(); - for (SCTAB nTab=0; nTab<nTabCount; nTab++) - pDocSh->AdjustRowHeight( 0, MAXROW, nTab ); - } - pObjSh = SfxObjectShell::GetNext( *pObjSh ); + SCTAB nTabCount = pDocSh->GetDocument()->GetTableCount(); + for (SCTAB nTab=0; nTab<nTabCount; nTab++) + pDocSh->AdjustRowHeight( 0, MAXROW, nTab ); } + pObjSh = SfxObjectShell::GetNext( *pObjSh ); + } - // for all views (table and preview): update digit language - SfxViewShell* pSh = SfxViewShell::GetFirst(); - while ( pSh ) + // for all views (table and preview): update digit language + SfxViewShell* pSh = SfxViewShell::GetFirst(); + while ( pSh ) + { + if ( pSh->ISA( ScTabViewShell ) ) { - if ( pSh->ISA( ScTabViewShell ) ) - { - ScTabViewShell* pViewSh = (ScTabViewShell*)pSh; + ScTabViewShell* pViewSh = (ScTabViewShell*)pSh; - // set ref-device for EditEngine (re-evaluates digit settings) - ScInputHandler* pHdl = GetInputHdl(pViewSh); - if (pHdl) - pHdl->UpdateRefDevice(); - - pViewSh->DigitLanguageChanged(); - pViewSh->PaintGrid(); - } - else if ( pSh->ISA( ScPreviewShell ) ) - { - ScPreviewShell* pPreviewSh = (ScPreviewShell*)pSh; - ScPreview* pPreview = pPreviewSh->GetPreview(); + // set ref-device for EditEngine (re-evaluates digit settings) + ScInputHandler* pHdl = GetInputHdl(pViewSh); + if (pHdl) + pHdl->UpdateRefDevice(); - pPreview->SetDigitLanguage( GetOptDigitLanguage() ); - pPreview->Invalidate(); - } + pViewSh->DigitLanguageChanged(); + pViewSh->PaintGrid(); + } + else if ( pSh->ISA( ScPreviewShell ) ) + { + ScPreviewShell* pPreviewSh = (ScPreviewShell*)pSh; + ScPreview* pPreview = pPreviewSh->GetPreview(); - pSh = SfxViewShell::GetNext( *pSh ); + pPreview->SetDigitLanguage( GetOptDigitLanguage() ); + pPreview->Invalidate(); } + + pSh = SfxViewShell::GetNext( *pSh ); + } + } +} + +void ScModule::Notify( SfxBroadcaster&, const SfxHint& rHint ) +{ + if ( rHint.ISA(SfxSimpleHint) ) + { + ULONG nHintId = ((SfxSimpleHint&)rHint).GetId(); + if ( nHintId == SFX_HINT_DEINITIALIZING ) + { + // ConfigItems must be removed before ConfigManager + DeleteCfg(); } } } @@ -354,17 +357,17 @@ void ScModule::DeleteCfg() if ( pColorConfig ) { - EndListening(*pColorConfig); + pColorConfig->RemoveListener(this); DELETEZ( pColorConfig ); } if ( pAccessOptions ) { - EndListening(*pAccessOptions); + pAccessOptions->RemoveListener(this); DELETEZ( pAccessOptions ); } if ( pCTLOptions ) { - EndListening(*pCTLOptions); + pCTLOptions->RemoveListener(this); DELETEZ( pCTLOptions ); } if( pUserOptions ) @@ -967,7 +970,7 @@ svtools::ColorConfig& ScModule::GetColorConfig() if ( !pColorConfig ) { pColorConfig = new svtools::ColorConfig; - StartListening(*pColorConfig); + pColorConfig->AddListener(this); } return *pColorConfig; @@ -978,7 +981,7 @@ SvtAccessibilityOptions& ScModule::GetAccessOptions() if ( !pAccessOptions ) { pAccessOptions = new SvtAccessibilityOptions; - StartListening(*pAccessOptions); + pAccessOptions->AddListener(this); } return *pAccessOptions; @@ -989,7 +992,7 @@ SvtCTLOptions& ScModule::GetCTLOptions() if ( !pCTLOptions ) { pCTLOptions = new SvtCTLOptions; - StartListening(*pCTLOptions); + pCTLOptions->AddListener(this); } return *pCTLOptions; |