summaryrefslogtreecommitdiff
path: root/sd/source/ui/dlg/masterlayoutdlg.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/ui/dlg/masterlayoutdlg.cxx')
-rw-r--r--sd/source/ui/dlg/masterlayoutdlg.cxx179
1 files changed, 179 insertions, 0 deletions
diff --git a/sd/source/ui/dlg/masterlayoutdlg.cxx b/sd/source/ui/dlg/masterlayoutdlg.cxx
new file mode 100644
index 000000000000..601b1d1cf72c
--- /dev/null
+++ b/sd/source/ui/dlg/masterlayoutdlg.cxx
@@ -0,0 +1,179 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sd.hxx"
+
+#ifdef SD_DLLIMPLEMENTATION
+#undef SD_DLLIMPLEMENTATION
+#endif
+
+#ifndef _SVX_DIALOGS_HRC
+#include <svx/dialogs.hrc>
+#endif
+
+#ifndef _SD_SDRESID_HXX
+#include "sdresid.hxx"
+#endif
+
+#include "strings.hrc"
+#include "dialogs.hrc"
+#include "masterlayoutdlg.hxx"
+#include "masterlayoutdlg.hrc"
+#include "drawdoc.hxx"
+
+using namespace ::sd;
+
+MasterLayoutDialog::MasterLayoutDialog( Window* pParent, SdDrawDocument* pDoc, SdPage* pCurrentPage )
+: ModalDialog( pParent, SdResId( RID_SD_DLG_MASTER_LAYOUT ) ),
+ mpDoc( pDoc ),
+ mpCurrentPage( pCurrentPage ),
+ maFLPlaceholders( this, SdResId( FL_PLACEHOLDERS ) ),
+ maCBDate( this, SdResId( CB_DATE ) ),
+ maCBPageNumber( this, SdResId( CB_PAGE_NUMBER ) ),
+ maCBHeader( this, SdResId( CB_HEADER ) ),
+ maCBFooter( this, SdResId( CB_FOOTER ) ),
+ maPBOK( this, SdResId( BT_OK ) ),
+ maPBCancel( this, SdResId( BT_CANCEL ) )
+{
+ if( mpCurrentPage && !mpCurrentPage->IsMasterPage() )
+ {
+ mpCurrentPage = (SdPage*)(&(mpCurrentPage->TRG_GetMasterPage()));
+ }
+
+ if( mpCurrentPage == 0 )
+ {
+ mpCurrentPage = pDoc->GetMasterSdPage( 0, PK_STANDARD );
+ DBG_ERROR( "MasterLayoutDialog::MasterLayoutDialog() - no current page?" );
+ }
+
+ switch( mpCurrentPage->GetPageKind() )
+ {
+ case PK_STANDARD:
+ {
+ // aTitle = String( SdResId( STR_MASTER_LAYOUT_TITLE ) );
+ maCBHeader.Enable( FALSE );
+ String aSlideNumberStr( SdResId( STR_SLIDE_NUMBER ) );
+ maCBPageNumber.SetText( aSlideNumberStr );
+ break;
+ }
+ case PK_NOTES:
+ // aTitle = String( SdResId( STR_NOTES_MASTER_LAYOUT_TITLE ) );
+ break;
+ case PK_HANDOUT:
+ // aTitle = String( SdResId( STR_HANDOUT_TEMPLATE_LAYOUT_TITLE ) );
+ break;
+ }
+ String aTitle (SdResId( STR_MASTER_LAYOUT_TITLE ) );
+
+ SetText( aTitle );
+
+ FreeResource();
+
+ mbOldHeader = mpCurrentPage->GetPresObj( PRESOBJ_HEADER ) != NULL;
+ mbOldDate = mpCurrentPage->GetPresObj( PRESOBJ_DATETIME ) != NULL;
+ mbOldFooter = mpCurrentPage->GetPresObj( PRESOBJ_FOOTER ) != NULL;
+ mbOldPageNumber = mpCurrentPage->GetPresObj( PRESOBJ_SLIDENUMBER ) != NULL;
+
+ maCBHeader.Check( mbOldHeader );
+ maCBDate.Check( mbOldDate );
+ maCBFooter.Check( mbOldFooter );
+ maCBPageNumber.Check( mbOldPageNumber );
+}
+
+MasterLayoutDialog::~MasterLayoutDialog()
+{
+}
+
+short MasterLayoutDialog::Execute()
+{
+ if ( ModalDialog::Execute() )
+ applyChanges();
+ return 1;
+}
+
+void MasterLayoutDialog::applyChanges()
+{
+ mpDoc->BegUndo(GetText());
+
+ if( (mpCurrentPage->GetPageKind() != PK_STANDARD) && (mbOldHeader != maCBHeader.IsChecked() ) )
+ {
+ if( mbOldHeader )
+ remove( PRESOBJ_HEADER );
+ else
+ create( PRESOBJ_HEADER );
+ }
+
+ if( mbOldFooter != maCBFooter.IsChecked() )
+ {
+ if( mbOldFooter )
+ remove( PRESOBJ_FOOTER );
+ else
+ create( PRESOBJ_FOOTER );
+ }
+
+ if( mbOldDate != maCBDate.IsChecked() )
+ {
+ if( mbOldDate )
+ remove( PRESOBJ_DATETIME );
+ else
+ create( PRESOBJ_DATETIME );
+ }
+
+ if( mbOldPageNumber != maCBPageNumber.IsChecked() )
+ {
+ if( mbOldPageNumber )
+ remove( PRESOBJ_SLIDENUMBER );
+ else
+ create( PRESOBJ_SLIDENUMBER );
+ }
+
+ mpDoc->EndUndo();
+}
+
+void MasterLayoutDialog::create( PresObjKind eKind )
+{
+ mpCurrentPage->CreateDefaultPresObj( eKind, true );
+}
+
+void MasterLayoutDialog::remove( PresObjKind eKind )
+{
+ SdrObject* pObject = mpCurrentPage->GetPresObj( eKind );
+
+ if( pObject )
+ {
+ const bool bUndo = mpDoc->IsUndoEnabled();
+ if( bUndo )
+ mpDoc->AddUndo(mpDoc->GetSdrUndoFactory().CreateUndoDeleteObject(*pObject));
+ SdrObjList* pOL =pObject->GetObjList();
+ UINT32 nOrdNum=pObject->GetOrdNumDirect();
+ pOL->RemoveObject(nOrdNum);
+
+ if( !bUndo )
+ SdrObject::Free(pObject);
+ }
+}