diff options
Diffstat (limited to 'sfx2/source/dialog/templdlg.cxx')
-rw-r--r-- | sfx2/source/dialog/templdlg.cxx | 202 |
1 files changed, 181 insertions, 21 deletions
diff --git a/sfx2/source/dialog/templdlg.cxx b/sfx2/source/dialog/templdlg.cxx index c962dce8d23f..f571daf786f2 100644 --- a/sfx2/source/dialog/templdlg.cxx +++ b/sfx2/source/dialog/templdlg.cxx @@ -125,7 +125,7 @@ SfxTemplateDialog::SfxTemplateDialog */ : SfxDockingWindow( pBind, pCW, pParent, SfxResId(DLG_STYLE_DESIGNER) ), - pImpl( new SfxTemplateDialog_Impl( pParent, pBind, this ) ) + pImpl( new SfxTemplateDialog_Impl( pBind, this ) ) { pImpl->updateNonFamilyImages(); @@ -405,6 +405,135 @@ void SfxTemplateDialogWrapper::SetParagraphFamily() static_cast< SfxTemplateDialog* >( GetWindow() )->SetParagraphFamily(); } + + +//===== SfxTemplatePanelControl =============================================== + +SfxTemplatePanelControl::SfxTemplatePanelControl ( + SfxBindings* pBindings, + Window* pParentWindow) + : DockingWindow(pParentWindow, SfxResId(DLG_STYLE_DESIGNER) ), + pImpl(new SfxTemplateDialog_Impl(pBindings, this)), + mpBindings(pBindings) +{ + OSL_ASSERT(mpBindings!=NULL); + + pImpl->updateNonFamilyImages(); +} + + + + +SfxTemplatePanelControl::~SfxTemplatePanelControl (void) +{ + delete pImpl; +} + + + + +ISfxTemplateCommon* SfxTemplatePanelControl::GetISfxTemplateCommon() +{ + return pImpl->GetISfxTemplateCommon(); +} + + + + +void SfxTemplatePanelControl::SetParagraphFamily() +{ + // first select the paragraph family + pImpl->FamilySelect( SFX_STYLE_FAMILY_PARA ); + // then select the automatic filter + pImpl->SetAutomaticFilter(); +} + + + + +void SfxTemplatePanelControl::DataChanged( const DataChangedEvent& _rDCEvt ) +{ + if ( ( DATACHANGED_SETTINGS == _rDCEvt.GetType() ) && + ( 0 != ( SETTINGS_STYLE & _rDCEvt.GetFlags() ) ) ) + { + pImpl->updateFamilyImages(); + pImpl->updateNonFamilyImages(); + } + + DockingWindow::DataChanged( _rDCEvt ); +} + + + + +void SfxTemplatePanelControl::Update() +{ + pImpl->Update(); +} + + + + +void SfxTemplatePanelControl::Resize() +{ + if(pImpl) + pImpl->Resize(); + DockingWindow::Resize(); +} + + +void SfxTemplatePanelControl::FreeResource (void) +{ + DockingWindow::FreeResource(); +} + + +SfxChildAlignment SfxTemplatePanelControl::CheckAlignment(SfxChildAlignment eActAlign,SfxChildAlignment eAlign) +{ + switch (eAlign) + { + case SFX_ALIGN_TOP: + case SFX_ALIGN_HIGHESTTOP: + case SFX_ALIGN_LOWESTTOP: + case SFX_ALIGN_BOTTOM: + case SFX_ALIGN_LOWESTBOTTOM: + case SFX_ALIGN_HIGHESTBOTTOM: + return eActAlign; + + case SFX_ALIGN_LEFT: + case SFX_ALIGN_RIGHT: + case SFX_ALIGN_FIRSTLEFT: + case SFX_ALIGN_LASTLEFT: + case SFX_ALIGN_FIRSTRIGHT: + case SFX_ALIGN_LASTRIGHT: + return eAlign; + + default: + return eAlign; + } +} + + +void SfxTemplatePanelControl::StateChanged( StateChangedType nStateChange ) +{ + if ( nStateChange == STATE_CHANGE_INITSHOW ) + { + SfxViewFrame *pFrame = mpBindings->GetDispatcher_Impl()->GetFrame(); + Window* pEditWin = pFrame->GetViewShell()->GetWindow(); + + Size aSize = pEditWin->GetSizePixel(); + Point aPoint = pEditWin->OutputToScreenPixel( pEditWin->GetPosPixel() ); + aPoint = GetParent()->ScreenToOutputPixel( aPoint ); + Size aWinSize = GetSizePixel(); + aPoint.X() += aSize.Width() - aWinSize.Width() - 20; + aPoint.Y() += aSize.Height() / 2 - aWinSize.Height() / 2; + // SetFloatingPos( aPoint ); + } + + DockingWindow::StateChanged( nStateChange ); +} + + //========================================================================= SV_DECL_PTRARR_DEL(ExpandedEntries, StringPtr,16,8) SV_IMPL_PTRARR(ExpandedEntries, StringPtr) @@ -740,7 +869,7 @@ SvLBoxEntry* FillBox_Impl(SvTreeListBox *pBox, // Konstruktor -SfxCommonTemplateDialog_Impl::SfxCommonTemplateDialog_Impl( SfxBindings* pB, SfxDockingWindow* pW ) : +SfxCommonTemplateDialog_Impl::SfxCommonTemplateDialog_Impl( SfxBindings* pB, Window* pW, bool ) : aISfxTemplateCommon ( this ), pBindings ( pB ), @@ -788,7 +917,7 @@ SfxCommonTemplateDialog_Impl::SfxCommonTemplateDialog_Impl( SfxBindings* pB, Sfx //------------------------------------------------------------------------- -SfxCommonTemplateDialog_Impl::SfxCommonTemplateDialog_Impl( SfxBindings* pB, ModalDialog* pW ) : +SfxCommonTemplateDialog_Impl::SfxCommonTemplateDialog_Impl( SfxBindings* pB, Window* pW ) : aISfxTemplateCommon ( this ), pBindings ( pB ), @@ -2321,10 +2450,11 @@ PopupMenu* SfxCommonTemplateDialog_Impl::CreateContextMenu( void ) // ------------------------------------------------------------------------ + SfxTemplateDialog_Impl::SfxTemplateDialog_Impl( - Window* /*pParent*/, SfxBindings* pB, SfxTemplateDialog* pDlgWindow ) : + SfxBindings* pB, SfxTemplateDialog* pDlgWindow ) : - SfxCommonTemplateDialog_Impl( pB, pDlgWindow ), + SfxCommonTemplateDialog_Impl( pB, pDlgWindow, true ), m_pFloat ( pDlgWindow ), m_bZoomIn ( sal_False ), @@ -2333,7 +2463,23 @@ SfxTemplateDialog_Impl::SfxTemplateDialog_Impl( { pDlgWindow->FreeResource(); + Initialize(); +} +SfxTemplateDialog_Impl::SfxTemplateDialog_Impl( + SfxBindings* pB, SfxTemplatePanelControl* pDlgWindow ) + : SfxCommonTemplateDialog_Impl( pB, pDlgWindow, true ), + m_pFloat ( pDlgWindow ), + m_bZoomIn ( sal_False ), + m_aActionTbL ( pDlgWindow, this ), + m_aActionTbR ( pDlgWindow, SfxResId( TB_ACTION ) ) +{ + pDlgWindow->FreeResource(); + Initialize(); +} + +void SfxTemplateDialog_Impl::Initialize (void) +{ // Read the filter stored in the configuration // This is already done in ReadResource(), invoked by Initialize() // and stored in nActFilter, but we can't rely on nActFilter's value @@ -2343,7 +2489,7 @@ SfxTemplateDialog_Impl::SfxTemplateDialog_Impl( const sal_uInt16 nConfigFilter = pCurObjShell ? static_cast< sal_uInt16 >( LoadFactoryStyleFilter( pCurObjShell ) ) : 0; - Initialize(); + SfxCommonTemplateDialog_Impl::Initialize(); m_aActionTbL.SetSelectHdl(LINK(this, SfxTemplateDialog_Impl, ToolBoxLSelect)); m_aActionTbR.SetSelectHdl(LINK(this, SfxTemplateDialog_Impl, ToolBoxRSelect)); @@ -2405,7 +2551,11 @@ void SfxTemplateDialog_Impl::updateFamilyImages() return; // let the families collection update the images - sal_Bool bIsHighContrast = m_pFloat->GetSettings().GetStyleSettings().GetHighContrastMode(); + sal_Bool bIsHighContrast; + if (m_pFloat != NULL) + bIsHighContrast = m_pFloat->GetSettings().GetStyleSettings().GetHighContrastMode(); + else + bIsHighContrast = false; pStyleFamilies->updateImages( *m_pStyleFamiliesId, bIsHighContrast ? BMP_COLOR_HIGHCONTRAST : BMP_COLOR_NORMAL ); // and set the new images on our toolbox @@ -2421,8 +2571,9 @@ void SfxTemplateDialog_Impl::updateFamilyImages() // ------------------------------------------------------------------------ void SfxTemplateDialog_Impl::updateNonFamilyImages() { - m_aActionTbR.SetImageList( ImageList( SfxResId( - m_pFloat->GetSettings().GetStyleSettings().GetHighContrastMode() ? IMG_LST_STYLE_DESIGNER_HC + if (m_pFloat != NULL) + m_aActionTbR.SetImageList( ImageList( SfxResId( + m_pFloat->GetSettings().GetStyleSettings().GetHighContrastMode() ? IMG_LST_STYLE_DESIGNER_HC : DLG_STYLE_DESIGNER ) ) ); } @@ -2477,7 +2628,8 @@ void SfxTemplateDialog_Impl::LoadedFamilies() // Die Groesse der Listboxen wird angepasst void SfxTemplateDialog_Impl::Resize() { - FloatingWindow *pF = m_pFloat->GetFloatingWindow(); + SfxDockingWindow* pDockingWindow = dynamic_cast<SfxDockingWindow*>(m_pFloat); + FloatingWindow *pF = pDockingWindow!=NULL ? pDockingWindow->GetFloatingWindow() : NULL; if ( pF ) { // if(pF->IsZoomedIn() && m_bZoomIn==sal_False) @@ -2489,6 +2641,8 @@ void SfxTemplateDialog_Impl::Resize() return; } + if (m_pFloat == NULL) + return; Size aDlgSize=m_pFloat->PixelToLogic(m_pFloat->GetOutputSizePixel()); Size aSizeATL=m_pFloat->PixelToLogic(m_aActionTbL.CalcWindowSizePixel()); Size aSizeATR=m_pFloat->PixelToLogic(m_aActionTbR.CalcWindowSizePixel()); @@ -2551,23 +2705,29 @@ void SfxTemplateDialog_Impl::Resize() Size SfxTemplateDialog_Impl::GetMinOutputSizePixel() { - Size aSizeATL=m_pFloat->PixelToLogic(m_aActionTbL.CalcWindowSizePixel()); - Size aSizeATR=m_pFloat->PixelToLogic(m_aActionTbR.CalcWindowSizePixel()); - Size aMinSize=Size( - aSizeATL.Width()+aSizeATR.Width()+ - 2*SFX_TEMPLDLG_HFRAME + SFX_TEMPLDLG_MIDHSPACE, - 4*aSizeATL.Height()+2*SFX_TEMPLDLG_MIDVSPACE); - return aMinSize; + if (m_pFloat != NULL) + { + Size aSizeATL=m_pFloat->PixelToLogic(m_aActionTbL.CalcWindowSizePixel()); + Size aSizeATR=m_pFloat->PixelToLogic(m_aActionTbR.CalcWindowSizePixel()); + Size aMinSize=Size( + aSizeATL.Width()+aSizeATR.Width()+ + 2*SFX_TEMPLDLG_HFRAME + SFX_TEMPLDLG_MIDHSPACE, + 4*aSizeATL.Height()+2*SFX_TEMPLDLG_MIDVSPACE); + return aMinSize; + } + else + return Size(0,0); } //------------------------------------------------------------------------- void SfxTemplateDialog_Impl::Command( const CommandEvent& rCEvt ) { - if(COMMAND_CONTEXTMENU == rCEvt.GetCommand()) - ExecuteContextMenu_Impl( rCEvt.GetMousePosPixel(), m_pFloat ); - else - m_pFloat->Command(rCEvt); + if (m_pFloat != NULL) + if(COMMAND_CONTEXTMENU == rCEvt.GetCommand()) + ExecuteContextMenu_Impl( rCEvt.GetMousePosPixel(), m_pFloat ); + else + m_pFloat->Command(rCEvt); } //------------------------------------------------------------------------- |