| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_sd.hxx" |
| |
| |
| #include "fusldlg.hxx" |
| #include <svl/itemset.hxx> |
| #ifndef _MSGBOX_HXX //autogen |
| #include <vcl/msgbox.hxx> |
| #endif |
| |
| #include "drawdoc.hxx" |
| #include "sdpage.hxx" |
| #include "sdresid.hxx" |
| #include "strings.hrc" |
| #include "sdattr.hxx" |
| #include "glob.hrc" |
| #include "sdmod.hxx" |
| #include "ViewShell.hxx" |
| #include "Window.hxx" |
| #include "optsitem.hxx" |
| #include "sdabstdlg.hxx" |
| |
| namespace sd { |
| |
| #define ITEMVALUE(ItemSet,Id,Cast) ((const Cast&)(ItemSet).Get(Id)).GetValue() |
| |
| TYPEINIT1( FuSlideShowDlg, FuPoor ); |
| |
| |
| /************************************************************************* |
| |* |
| |* Konstruktor |
| |* |
| \************************************************************************/ |
| |
| FuSlideShowDlg::FuSlideShowDlg ( |
| ViewShell* pViewSh, |
| ::sd::Window* pWin, |
| ::sd::View* pView, |
| SdDrawDocument* pDoc, |
| SfxRequest& rReq) |
| : FuPoor( pViewSh, pWin, pView, pDoc, rReq ) |
| { |
| } |
| |
| FunctionReference FuSlideShowDlg::Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ) |
| { |
| FunctionReference xFunc( new FuSlideShowDlg( pViewSh, pWin, pView, pDoc, rReq ) ); |
| xFunc->DoExecute(rReq); |
| return xFunc; |
| } |
| |
| void FuSlideShowDlg::DoExecute( SfxRequest& ) |
| { |
| PresentationSettings& rPresentationSettings = mpDoc->getPresentationSettings(); |
| |
| SfxItemSet aDlgSet( mpDoc->GetPool(), ATTR_PRESENT_START, ATTR_PRESENT_END ); |
| List aPageNameList; |
| const String& rPresPage = rPresentationSettings.maPresPage; |
| String aFirstPage; |
| String aStandardName( SdResId( STR_PAGE ) ); |
| SdPage* pPage = NULL; |
| long nPage; |
| |
| for( nPage = mpDoc->GetSdPageCount( PK_STANDARD ) - 1L; nPage >= 0L; nPage-- ) |
| { |
| pPage = mpDoc->GetSdPage( (sal_uInt16) nPage, PK_STANDARD ); |
| String* pStr = new String( pPage->GetName() ); |
| |
| if ( !pStr->Len() ) |
| { |
| *pStr = String( SdResId( STR_PAGE ) ); |
| (*pStr).Append( UniString::CreateFromInt32( nPage + 1 ) ); |
| } |
| |
| aPageNameList.Insert( pStr, (sal_uLong) 0 ); |
| |
| // ist dies unsere (vorhandene) erste Seite? |
| if ( rPresPage == *pStr ) |
| aFirstPage = rPresPage; |
| else if ( pPage->IsSelected() && !aFirstPage.Len() ) |
| aFirstPage = *pStr; |
| } |
| List* pCustomShowList = mpDoc->GetCustomShowList(); // No Create |
| |
| sal_Bool bStartWithActualPage = SD_MOD()->GetSdOptions( mpDoc->GetDocumentType() )->IsStartWithActualPage(); |
| /* #109180# change in behaviour, even when always start with current page is enabled, range settings are |
| still used |
| if( bStartWithActualPage ) |
| { |
| aFirstPage = pViewSh->GetActualPage()->GetName(); |
| pCustomShowList = NULL; |
| } |
| */ |
| if( !aFirstPage.Len() && pPage ) |
| aFirstPage = pPage->GetName(); |
| |
| aDlgSet.Put( SfxBoolItem( ATTR_PRESENT_ALL, rPresentationSettings.mbAll ) ); |
| aDlgSet.Put( SfxBoolItem( ATTR_PRESENT_CUSTOMSHOW, rPresentationSettings.mbCustomShow ) ); |
| aDlgSet.Put( SfxStringItem( ATTR_PRESENT_DIANAME, aFirstPage ) ); |
| aDlgSet.Put( SfxBoolItem( ATTR_PRESENT_ENDLESS, rPresentationSettings.mbEndless ) ); |
| aDlgSet.Put( SfxBoolItem( ATTR_PRESENT_MANUEL, rPresentationSettings.mbManual ) ); |
| aDlgSet.Put( SfxBoolItem( ATTR_PRESENT_MOUSE, rPresentationSettings.mbMouseVisible ) ); |
| aDlgSet.Put( SfxBoolItem( ATTR_PRESENT_PEN, rPresentationSettings.mbMouseAsPen ) ); |
| aDlgSet.Put( SfxBoolItem( ATTR_PRESENT_NAVIGATOR, rPresentationSettings.mbStartWithNavigator ) ); |
| aDlgSet.Put( SfxBoolItem( ATTR_PRESENT_ANIMATION_ALLOWED, rPresentationSettings.mbAnimationAllowed ) ); |
| aDlgSet.Put( SfxBoolItem( ATTR_PRESENT_CHANGE_PAGE, !rPresentationSettings.mbLockedPages ) ); |
| aDlgSet.Put( SfxBoolItem( ATTR_PRESENT_ALWAYS_ON_TOP, rPresentationSettings.mbAlwaysOnTop ) ); |
| aDlgSet.Put( SfxBoolItem( ATTR_PRESENT_FULLSCREEN, rPresentationSettings.mbFullScreen ) ); |
| aDlgSet.Put( SfxBoolItem( ATTR_PRESENT_START_ACTUAL_PAGE, bStartWithActualPage ) ); |
| aDlgSet.Put( SfxUInt32Item( ATTR_PRESENT_PAUSE_TIMEOUT, rPresentationSettings.mnPauseTimeout ) ); |
| aDlgSet.Put( SfxBoolItem( ATTR_PRESENT_SHOW_PAUSELOGO, rPresentationSettings.mbShowPauseLogo ) ); |
| |
| SdOptions* pOptions = SD_MOD()->GetSdOptions(DOCUMENT_TYPE_IMPRESS); |
| aDlgSet.Put( SfxInt32Item( ATTR_PRESENT_DISPLAY, pOptions->GetDisplay() ) ); |
| |
| SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create(); |
| AbstractSdStartPresDlg* pDlg = pFact ? pFact->CreateSdStartPresentationDlg(mpWindow, aDlgSet, aPageNameList, pCustomShowList ) : 0; |
| if( pDlg && (pDlg->Execute() == RET_OK) ) |
| { |
| rtl::OUString aPage; |
| long nValue32; |
| sal_Bool bValue; |
| bool bValuesChanged = sal_False; |
| |
| pDlg->GetAttr( aDlgSet ); |
| |
| aPage = ITEMVALUE( aDlgSet, ATTR_PRESENT_DIANAME, SfxStringItem ); |
| if( aPage != rPresentationSettings.maPresPage ) |
| { |
| bValuesChanged = true; |
| rPresentationSettings.maPresPage = aPage; |
| } |
| |
| bValue = ITEMVALUE( aDlgSet, ATTR_PRESENT_ALL, SfxBoolItem ); |
| if ( bValue != rPresentationSettings.mbAll ) |
| { |
| bValuesChanged = true; |
| rPresentationSettings.mbAll = bValue; |
| } |
| |
| bValue = ITEMVALUE( aDlgSet, ATTR_PRESENT_CUSTOMSHOW, SfxBoolItem ); |
| if ( bValue != rPresentationSettings.mbCustomShow ) |
| { |
| bValuesChanged = true; |
| rPresentationSettings.mbCustomShow = bValue; |
| } |
| |
| bValue = ITEMVALUE( aDlgSet, ATTR_PRESENT_ENDLESS, SfxBoolItem ); |
| if ( bValue != rPresentationSettings.mbEndless ) |
| { |
| bValuesChanged = true; |
| rPresentationSettings.mbEndless = bValue; |
| } |
| |
| bValue = ITEMVALUE( aDlgSet, ATTR_PRESENT_MANUEL, SfxBoolItem ); |
| if ( bValue != rPresentationSettings.mbManual ) |
| { |
| bValuesChanged = true; |
| rPresentationSettings.mbManual = bValue; |
| } |
| |
| bValue = ITEMVALUE( aDlgSet, ATTR_PRESENT_MOUSE, SfxBoolItem ); |
| if ( bValue != rPresentationSettings.mbMouseVisible ) |
| { |
| bValuesChanged = true; |
| rPresentationSettings.mbMouseVisible = bValue; |
| } |
| |
| bValue = ITEMVALUE( aDlgSet, ATTR_PRESENT_PEN, SfxBoolItem ); |
| if ( bValue != rPresentationSettings.mbMouseAsPen ) |
| { |
| bValuesChanged = true; |
| rPresentationSettings.mbMouseAsPen = bValue; |
| } |
| |
| bValue = ITEMVALUE( aDlgSet, ATTR_PRESENT_NAVIGATOR, SfxBoolItem ); |
| if( bValue != rPresentationSettings.mbStartWithNavigator ) |
| { |
| bValuesChanged = true; |
| rPresentationSettings.mbStartWithNavigator = bValue; |
| } |
| |
| bValue = !ITEMVALUE( aDlgSet, ATTR_PRESENT_CHANGE_PAGE, SfxBoolItem ); |
| if ( bValue != rPresentationSettings.mbLockedPages ) |
| { |
| bValuesChanged = true; |
| rPresentationSettings.mbLockedPages = bValue; |
| } |
| |
| bValue = ITEMVALUE( aDlgSet, ATTR_PRESENT_ANIMATION_ALLOWED, SfxBoolItem ); |
| if ( bValue != rPresentationSettings.mbAnimationAllowed ) |
| { |
| bValuesChanged = true; |
| rPresentationSettings.mbAnimationAllowed = bValue; |
| } |
| |
| bValue = ITEMVALUE( aDlgSet, ATTR_PRESENT_ALWAYS_ON_TOP, SfxBoolItem ); |
| if ( bValue != rPresentationSettings.mbAlwaysOnTop ) |
| { |
| bValuesChanged = true; |
| rPresentationSettings.mbAlwaysOnTop = bValue; |
| } |
| |
| bValue = ITEMVALUE( aDlgSet, ATTR_PRESENT_FULLSCREEN, SfxBoolItem ); |
| if ( bValue != rPresentationSettings.mbFullScreen ) |
| { |
| bValuesChanged = true; |
| rPresentationSettings.mbFullScreen = bValue; |
| } |
| |
| nValue32 = ITEMVALUE( aDlgSet, ATTR_PRESENT_PAUSE_TIMEOUT, SfxUInt32Item ); |
| if( nValue32 != rPresentationSettings.mnPauseTimeout ) |
| { |
| bValuesChanged = true; |
| rPresentationSettings.mnPauseTimeout = nValue32; |
| } |
| |
| bValue = ITEMVALUE( aDlgSet, ATTR_PRESENT_SHOW_PAUSELOGO, SfxBoolItem ); |
| if ( bValue != rPresentationSettings.mbShowPauseLogo ) |
| { |
| bValuesChanged = true; |
| rPresentationSettings.mbShowPauseLogo = bValue; |
| } |
| |
| pOptions->SetDisplay( ITEMVALUE( aDlgSet, ATTR_PRESENT_DISPLAY, SfxInt32Item ) ); |
| |
| // wenn sich etwas geaendert hat, setzen wir das Modified-Flag, |
| if ( bValuesChanged ) |
| mpDoc->SetChanged( sal_True ); |
| } |
| delete pDlg; |
| // Strings aus Liste loeschen |
| for( void* pStr = aPageNameList.First(); pStr; pStr = aPageNameList.Next() ) |
| delete (String*) pStr; |
| } |
| |
| } // end of namespace sd |