1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_sd.hxx" 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir #ifdef SD_DLLIMPLEMENTATION 32*cdf0e10cSrcweir #undef SD_DLLIMPLEMENTATION 33*cdf0e10cSrcweir #endif 34*cdf0e10cSrcweir 35*cdf0e10cSrcweir #ifndef _SVX_DIALOGS_HRC 36*cdf0e10cSrcweir #include <svx/dialogs.hrc> 37*cdf0e10cSrcweir #endif 38*cdf0e10cSrcweir 39*cdf0e10cSrcweir #ifndef _SD_SDRESID_HXX 40*cdf0e10cSrcweir #include "sdresid.hxx" 41*cdf0e10cSrcweir #endif 42*cdf0e10cSrcweir 43*cdf0e10cSrcweir #include "strings.hrc" 44*cdf0e10cSrcweir #include "dialogs.hrc" 45*cdf0e10cSrcweir #include "masterlayoutdlg.hxx" 46*cdf0e10cSrcweir #include "masterlayoutdlg.hrc" 47*cdf0e10cSrcweir #include "drawdoc.hxx" 48*cdf0e10cSrcweir 49*cdf0e10cSrcweir using namespace ::sd; 50*cdf0e10cSrcweir 51*cdf0e10cSrcweir MasterLayoutDialog::MasterLayoutDialog( Window* pParent, SdDrawDocument* pDoc, SdPage* pCurrentPage ) 52*cdf0e10cSrcweir : ModalDialog( pParent, SdResId( RID_SD_DLG_MASTER_LAYOUT ) ), 53*cdf0e10cSrcweir mpDoc( pDoc ), 54*cdf0e10cSrcweir mpCurrentPage( pCurrentPage ), 55*cdf0e10cSrcweir maFLPlaceholders( this, SdResId( FL_PLACEHOLDERS ) ), 56*cdf0e10cSrcweir maCBDate( this, SdResId( CB_DATE ) ), 57*cdf0e10cSrcweir maCBPageNumber( this, SdResId( CB_PAGE_NUMBER ) ), 58*cdf0e10cSrcweir maCBHeader( this, SdResId( CB_HEADER ) ), 59*cdf0e10cSrcweir maCBFooter( this, SdResId( CB_FOOTER ) ), 60*cdf0e10cSrcweir maPBOK( this, SdResId( BT_OK ) ), 61*cdf0e10cSrcweir maPBCancel( this, SdResId( BT_CANCEL ) ) 62*cdf0e10cSrcweir { 63*cdf0e10cSrcweir if( mpCurrentPage && !mpCurrentPage->IsMasterPage() ) 64*cdf0e10cSrcweir { 65*cdf0e10cSrcweir mpCurrentPage = (SdPage*)(&(mpCurrentPage->TRG_GetMasterPage())); 66*cdf0e10cSrcweir } 67*cdf0e10cSrcweir 68*cdf0e10cSrcweir if( mpCurrentPage == 0 ) 69*cdf0e10cSrcweir { 70*cdf0e10cSrcweir mpCurrentPage = pDoc->GetMasterSdPage( 0, PK_STANDARD ); 71*cdf0e10cSrcweir DBG_ERROR( "MasterLayoutDialog::MasterLayoutDialog() - no current page?" ); 72*cdf0e10cSrcweir } 73*cdf0e10cSrcweir 74*cdf0e10cSrcweir switch( mpCurrentPage->GetPageKind() ) 75*cdf0e10cSrcweir { 76*cdf0e10cSrcweir case PK_STANDARD: 77*cdf0e10cSrcweir { 78*cdf0e10cSrcweir // aTitle = String( SdResId( STR_MASTER_LAYOUT_TITLE ) ); 79*cdf0e10cSrcweir maCBHeader.Enable( sal_False ); 80*cdf0e10cSrcweir String aSlideNumberStr( SdResId( STR_SLIDE_NUMBER ) ); 81*cdf0e10cSrcweir maCBPageNumber.SetText( aSlideNumberStr ); 82*cdf0e10cSrcweir break; 83*cdf0e10cSrcweir } 84*cdf0e10cSrcweir case PK_NOTES: 85*cdf0e10cSrcweir // aTitle = String( SdResId( STR_NOTES_MASTER_LAYOUT_TITLE ) ); 86*cdf0e10cSrcweir break; 87*cdf0e10cSrcweir case PK_HANDOUT: 88*cdf0e10cSrcweir // aTitle = String( SdResId( STR_HANDOUT_TEMPLATE_LAYOUT_TITLE ) ); 89*cdf0e10cSrcweir break; 90*cdf0e10cSrcweir } 91*cdf0e10cSrcweir String aTitle (SdResId( STR_MASTER_LAYOUT_TITLE ) ); 92*cdf0e10cSrcweir 93*cdf0e10cSrcweir SetText( aTitle ); 94*cdf0e10cSrcweir 95*cdf0e10cSrcweir FreeResource(); 96*cdf0e10cSrcweir 97*cdf0e10cSrcweir mbOldHeader = mpCurrentPage->GetPresObj( PRESOBJ_HEADER ) != NULL; 98*cdf0e10cSrcweir mbOldDate = mpCurrentPage->GetPresObj( PRESOBJ_DATETIME ) != NULL; 99*cdf0e10cSrcweir mbOldFooter = mpCurrentPage->GetPresObj( PRESOBJ_FOOTER ) != NULL; 100*cdf0e10cSrcweir mbOldPageNumber = mpCurrentPage->GetPresObj( PRESOBJ_SLIDENUMBER ) != NULL; 101*cdf0e10cSrcweir 102*cdf0e10cSrcweir maCBHeader.Check( mbOldHeader ); 103*cdf0e10cSrcweir maCBDate.Check( mbOldDate ); 104*cdf0e10cSrcweir maCBFooter.Check( mbOldFooter ); 105*cdf0e10cSrcweir maCBPageNumber.Check( mbOldPageNumber ); 106*cdf0e10cSrcweir } 107*cdf0e10cSrcweir 108*cdf0e10cSrcweir MasterLayoutDialog::~MasterLayoutDialog() 109*cdf0e10cSrcweir { 110*cdf0e10cSrcweir } 111*cdf0e10cSrcweir 112*cdf0e10cSrcweir short MasterLayoutDialog::Execute() 113*cdf0e10cSrcweir { 114*cdf0e10cSrcweir if ( ModalDialog::Execute() ) 115*cdf0e10cSrcweir applyChanges(); 116*cdf0e10cSrcweir return 1; 117*cdf0e10cSrcweir } 118*cdf0e10cSrcweir 119*cdf0e10cSrcweir void MasterLayoutDialog::applyChanges() 120*cdf0e10cSrcweir { 121*cdf0e10cSrcweir mpDoc->BegUndo(GetText()); 122*cdf0e10cSrcweir 123*cdf0e10cSrcweir if( (mpCurrentPage->GetPageKind() != PK_STANDARD) && (mbOldHeader != maCBHeader.IsChecked() ) ) 124*cdf0e10cSrcweir { 125*cdf0e10cSrcweir if( mbOldHeader ) 126*cdf0e10cSrcweir remove( PRESOBJ_HEADER ); 127*cdf0e10cSrcweir else 128*cdf0e10cSrcweir create( PRESOBJ_HEADER ); 129*cdf0e10cSrcweir } 130*cdf0e10cSrcweir 131*cdf0e10cSrcweir if( mbOldFooter != maCBFooter.IsChecked() ) 132*cdf0e10cSrcweir { 133*cdf0e10cSrcweir if( mbOldFooter ) 134*cdf0e10cSrcweir remove( PRESOBJ_FOOTER ); 135*cdf0e10cSrcweir else 136*cdf0e10cSrcweir create( PRESOBJ_FOOTER ); 137*cdf0e10cSrcweir } 138*cdf0e10cSrcweir 139*cdf0e10cSrcweir if( mbOldDate != maCBDate.IsChecked() ) 140*cdf0e10cSrcweir { 141*cdf0e10cSrcweir if( mbOldDate ) 142*cdf0e10cSrcweir remove( PRESOBJ_DATETIME ); 143*cdf0e10cSrcweir else 144*cdf0e10cSrcweir create( PRESOBJ_DATETIME ); 145*cdf0e10cSrcweir } 146*cdf0e10cSrcweir 147*cdf0e10cSrcweir if( mbOldPageNumber != maCBPageNumber.IsChecked() ) 148*cdf0e10cSrcweir { 149*cdf0e10cSrcweir if( mbOldPageNumber ) 150*cdf0e10cSrcweir remove( PRESOBJ_SLIDENUMBER ); 151*cdf0e10cSrcweir else 152*cdf0e10cSrcweir create( PRESOBJ_SLIDENUMBER ); 153*cdf0e10cSrcweir } 154*cdf0e10cSrcweir 155*cdf0e10cSrcweir mpDoc->EndUndo(); 156*cdf0e10cSrcweir } 157*cdf0e10cSrcweir 158*cdf0e10cSrcweir void MasterLayoutDialog::create( PresObjKind eKind ) 159*cdf0e10cSrcweir { 160*cdf0e10cSrcweir mpCurrentPage->CreateDefaultPresObj( eKind, true ); 161*cdf0e10cSrcweir } 162*cdf0e10cSrcweir 163*cdf0e10cSrcweir void MasterLayoutDialog::remove( PresObjKind eKind ) 164*cdf0e10cSrcweir { 165*cdf0e10cSrcweir SdrObject* pObject = mpCurrentPage->GetPresObj( eKind ); 166*cdf0e10cSrcweir 167*cdf0e10cSrcweir if( pObject ) 168*cdf0e10cSrcweir { 169*cdf0e10cSrcweir const bool bUndo = mpDoc->IsUndoEnabled(); 170*cdf0e10cSrcweir if( bUndo ) 171*cdf0e10cSrcweir mpDoc->AddUndo(mpDoc->GetSdrUndoFactory().CreateUndoDeleteObject(*pObject)); 172*cdf0e10cSrcweir SdrObjList* pOL =pObject->GetObjList(); 173*cdf0e10cSrcweir sal_uInt32 nOrdNum=pObject->GetOrdNumDirect(); 174*cdf0e10cSrcweir pOL->RemoveObject(nOrdNum); 175*cdf0e10cSrcweir 176*cdf0e10cSrcweir if( !bUndo ) 177*cdf0e10cSrcweir SdrObject::Free(pObject); 178*cdf0e10cSrcweir } 179*cdf0e10cSrcweir } 180