LCOV - code coverage report
Current view: top level - libreoffice/sd/source/ui/unoidl - unopage.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 686 1489 46.1 %
Date: 2012-12-27 Functions: 62 127 48.8 %
Legend: Lines: hit not hit

          Line data    Source code
       1             :     /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <com/sun/star/lang/DisposedException.hpp>
      21             : #include <com/sun/star/presentation/ClickAction.hpp>
      22             : #include <com/sun/star/presentation/FadeEffect.hpp>
      23             : #include <com/sun/star/presentation/AnimationEffect.hpp>
      24             : #include <com/sun/star/presentation/PresentationRange.hpp>
      25             : #include <com/sun/star/presentation/AnimationSpeed.hpp>
      26             : #include <com/sun/star/view/PaperOrientation.hpp>
      27             : #include <com/sun/star/animations/AnimationNodeType.hpp>
      28             : #include <com/sun/star/presentation/EffectNodeType.hpp>
      29             : #include <comphelper/processfactory.hxx>
      30             : #include <comphelper/servicehelper.hxx>
      31             : #include <rtl/ustrbuf.hxx>
      32             : #include <vcl/bitmapex.hxx>
      33             : #include <vcl/metaact.hxx>
      34             : #include <toolkit/unohlp.hxx>
      35             : #include <vcl/svapp.hxx>
      36             : #include <vcl/settings.hxx>
      37             : #include <unomodel.hxx>
      38             : #include <unopage.hxx>
      39             : #include <svx/svxids.hrc>
      40             : #include <svl/itemset.hxx>
      41             : #include <svx/svdmodel.hxx>
      42             : #include <sdresid.hxx>
      43             : #include <glob.hrc>
      44             : #include <sdpage.hxx>
      45             : #include <unoprnms.hxx>
      46             : #include <sdattr.hxx>
      47             : #include <drawdoc.hxx>
      48             : #include <svx/unoshape.hxx>
      49             : #include <com/sun/star/style/XStyle.hpp>
      50             : #include <svx/svdorect.hxx>
      51             : #include <osl/mutex.hxx>
      52             : #include <svl/style.hxx>
      53             : #include <comphelper/serviceinfohelper.hxx>
      54             : 
      55             : #include <comphelper/extract.hxx>
      56             : #include <list>
      57             : #include <svx/svditer.hxx>
      58             : #include <svtools/wmf.hxx>
      59             : #include <svx/svdoole2.hxx>
      60             : #include <svx/svdpool.hxx>
      61             : #include <svx/svdview.hxx>
      62             : #include "View.hxx"
      63             : #include "DrawDocShell.hxx"
      64             : #include "ViewShell.hxx"
      65             : #include "DrawViewShell.hxx"
      66             : #include "unoobj.hxx"
      67             : #include "res_bmp.hrc"
      68             : #include "unokywds.hxx"
      69             : #include "unopback.hxx"
      70             : #include "unohelp.hxx"
      71             : 
      72             : using ::com::sun::star::animations::XAnimationNode;
      73             : using ::com::sun::star::animations::XAnimationNodeSupplier;
      74             : using ::rtl::OUString;
      75             : using ::rtl::OUStringBuffer;
      76             : 
      77             : using namespace ::osl;
      78             : using namespace ::com::sun::star;
      79             : using namespace ::com::sun::star::uno;
      80             : using namespace ::com::sun::star::lang;
      81             : using namespace ::com::sun::star::container;
      82             : using namespace ::com::sun::star::drawing;
      83             : using namespace ::com::sun::star::office;
      84             : 
      85             : namespace sd {
      86             : extern Reference< XAnnotation > createAnnotation( const Reference< XComponentContext >& xContext, SdPage* );
      87             : extern Reference< XAnnotationEnumeration > createAnnotationEnumeration( const sd::AnnotationVector& );
      88             : }
      89             : 
      90             : /* this are the ids for page properties */
      91             : enum WID_PAGE
      92             : {
      93             :     WID_PAGE_LEFT, WID_PAGE_RIGHT, WID_PAGE_TOP, WID_PAGE_BOTTOM, WID_PAGE_WIDTH,
      94             :     WID_PAGE_HEIGHT, WID_PAGE_EFFECT, WID_PAGE_CHANGE, WID_PAGE_SPEED, WID_PAGE_NUMBER,
      95             :     WID_PAGE_ORIENT, WID_PAGE_LAYOUT, WID_PAGE_DURATION, WID_PAGE_LDNAME, WID_PAGE_LDBITMAP,
      96             :     WID_PAGE_BACK, WID_PAGE_PREVIEW, WID_PAGE_PREVIEWBITMAP, WID_PAGE_VISIBLE, WID_PAGE_SOUNDFILE, WID_PAGE_BACKFULL,
      97             :     WID_PAGE_BACKVIS, WID_PAGE_BACKOBJVIS, WID_PAGE_USERATTRIBS, WID_PAGE_BOOKMARK, WID_PAGE_ISDARK,
      98             :     WID_PAGE_HEADERVISIBLE, WID_PAGE_HEADERTEXT, WID_PAGE_FOOTERVISIBLE, WID_PAGE_FOOTERTEXT,
      99             :     WID_PAGE_PAGENUMBERVISIBLE, WID_PAGE_DATETIMEVISIBLE, WID_PAGE_DATETIMEFIXED,
     100             :     WID_PAGE_DATETIMETEXT, WID_PAGE_DATETIMEFORMAT, WID_TRANSITION_TYPE, WID_TRANSITION_SUBTYPE,
     101             :     WID_TRANSITION_DIRECTION, WID_TRANSITION_FADE_COLOR, WID_TRANSITION_DURATION, WID_LOOP_SOUND,
     102             :     WID_NAVORDER
     103             : };
     104             : 
     105             : #ifndef SEQTYPE
     106             :  #if defined(__SUNPRO_CC) && (__SUNPRO_CC == 0x500)
     107             :   #define SEQTYPE(x) (new ::com::sun::star::uno::Type( x ))
     108             :  #else
     109             :   #define SEQTYPE(x) &(x)
     110             :  #endif
     111             : #endif
     112             : 
     113             : static sal_Char sEmptyPageName[sizeof("page")] = "page";
     114             : 
     115             : /** this function stores the property maps for draw pages in impress and draw */
     116          54 : const SvxItemPropertySet* ImplGetDrawPagePropertySet( sal_Bool bImpress, PageKind ePageKind )
     117             : {
     118             :     static const SfxItemPropertyMapEntry aDrawPagePropertyMap_Impl[] =
     119             :     {
     120           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_BACKGROUND),       WID_PAGE_BACK,      &ITYPE( beans::XPropertySet ),                  beans::PropertyAttribute::MAYBEVOID,0},
     121           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_BOTTOM),           WID_PAGE_BOTTOM,    &::getCppuType((const sal_Int32*)0),            0,  0},
     122           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_LEFT),             WID_PAGE_LEFT,      &::getCppuType((const sal_Int32*)0),            0,  0},
     123           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_RIGHT),            WID_PAGE_RIGHT,     &::getCppuType((const sal_Int32*)0),            0,  0},
     124           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_TOP),              WID_PAGE_TOP,       &::getCppuType((const sal_Int32*)0),            0,  0},
     125           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_CHANGE),           WID_PAGE_CHANGE,    &::getCppuType((const sal_Int32*)0),            0,  0},
     126           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_DURATION),         WID_PAGE_DURATION,  &::getCppuType((const sal_Int32*)0),            0,  0},
     127           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_EFFECT),           WID_PAGE_EFFECT,    &::getCppuType((const presentation::FadeEffect*)0),     0,  0},
     128           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_HEIGHT),           WID_PAGE_HEIGHT,    &::getCppuType((const sal_Int32*)0),            0,  0},
     129           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_LAYOUT),           WID_PAGE_LAYOUT,    &::getCppuType((const sal_Int16*)0),            0,  0},
     130           2 :         { MAP_CHAR_LEN(UNO_NAME_LINKDISPLAYBITMAP),     WID_PAGE_LDBITMAP,  &ITYPE( awt::XBitmap),                          beans::PropertyAttribute::READONLY, 0},
     131           2 :         { MAP_CHAR_LEN(UNO_NAME_LINKDISPLAYNAME),       WID_PAGE_LDNAME,    &::getCppuType((const OUString*)0),             beans::PropertyAttribute::READONLY, 0},
     132           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_NUMBER),           WID_PAGE_NUMBER,    &::getCppuType((const sal_Int16*)0),            beans::PropertyAttribute::READONLY, 0},
     133           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_ORIENTATION),      WID_PAGE_ORIENT,    &::getCppuType((const view::PaperOrientation*)0),0, 0},
     134           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_SPEED),            WID_PAGE_SPEED,     &::getCppuType((const presentation::AnimationSpeed*)0), 0,  0},
     135           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_WIDTH),            WID_PAGE_WIDTH,     &::getCppuType((const sal_Int32*)0),            0,  0},
     136           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_PREVIEW),          WID_PAGE_PREVIEW,   SEQTYPE(::getCppuType((::com::sun::star::uno::Sequence<sal_Int8>*)0)), ::com::sun::star::beans::PropertyAttribute::READONLY, 0},
     137           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_PREVIEWBITMAP),    WID_PAGE_PREVIEWBITMAP, SEQTYPE(::getCppuType((::com::sun::star::uno::Sequence<sal_Int8>*)0)), ::com::sun::star::beans::PropertyAttribute::READONLY, 0},
     138           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_VISIBLE),          WID_PAGE_VISIBLE,   &::getBooleanCppuType(),                        0, 0},
     139           2 :         { MAP_CHAR_LEN(UNO_NAME_OBJ_SOUNDFILE),         WID_PAGE_SOUNDFILE, &::getCppuType((const Any*)0),              0, 0},
     140           2 :         { MAP_CHAR_LEN(sUNO_Prop_IsBackgroundVisible),  WID_PAGE_BACKVIS,   &::getBooleanCppuType(),                        0, 0},
     141           2 :         { MAP_CHAR_LEN(sUNO_Prop_IsBackgroundObjectsVisible),   WID_PAGE_BACKOBJVIS,    &::getBooleanCppuType(),                        0, 0},
     142           2 :         { MAP_CHAR_LEN(sUNO_Prop_UserDefinedAttributes),WID_PAGE_USERATTRIBS, &::getCppuType((const Reference< ::com::sun::star::container::XNameContainer >*)0)  ,         0,     0},
     143           2 :         { MAP_CHAR_LEN(sUNO_Prop_BookmarkURL),          WID_PAGE_BOOKMARK,  &::getCppuType((const OUString*)0),             0,  0},
     144           2 :         { MAP_CHAR_LEN("IsBackgroundDark" ),            WID_PAGE_ISDARK,    &::getBooleanCppuType(),                        beans::PropertyAttribute::READONLY, 0},
     145           2 :         { MAP_CHAR_LEN("IsFooterVisible"),              WID_PAGE_FOOTERVISIBLE, &::getBooleanCppuType(),                    0, 0},
     146           2 :         { MAP_CHAR_LEN("FooterText"),                   WID_PAGE_FOOTERTEXT, &::getCppuType((const OUString*)0),                0,  0},
     147           2 :         { MAP_CHAR_LEN("IsPageNumberVisible"),          WID_PAGE_PAGENUMBERVISIBLE, &::getBooleanCppuType(),                    0, 0},
     148           2 :         { MAP_CHAR_LEN("IsDateTimeVisible"),            WID_PAGE_DATETIMEVISIBLE, &::getBooleanCppuType(),                  0, 0},
     149           2 :         { MAP_CHAR_LEN("IsDateTimeFixed"),              WID_PAGE_DATETIMEFIXED, &::getBooleanCppuType(),                    0, 0},
     150           2 :         { MAP_CHAR_LEN("DateTimeText"),                 WID_PAGE_DATETIMETEXT, &::getCppuType((const OUString*)0),              0,  0},
     151           2 :         { MAP_CHAR_LEN("DateTimeFormat"),               WID_PAGE_DATETIMEFORMAT, &::getCppuType((const sal_Int32*)0),           0,  0},
     152           2 :         { MAP_CHAR_LEN("TransitionType"),               WID_TRANSITION_TYPE, &::getCppuType((const sal_Int16*)0),           0,  0},
     153           2 :         { MAP_CHAR_LEN("TransitionSubtype"),            WID_TRANSITION_SUBTYPE, &::getCppuType((const sal_Int16*)0),            0,  0},
     154           2 :         { MAP_CHAR_LEN("TransitionDirection"),          WID_TRANSITION_DIRECTION, &::getCppuType((const sal_Bool*)0),           0,  0},
     155           2 :         { MAP_CHAR_LEN("TransitionFadeColor"),          WID_TRANSITION_FADE_COLOR, &::getCppuType((const sal_Int32*)0),         0,  0},
     156           2 :         { MAP_CHAR_LEN("TransitionDuration"),           WID_TRANSITION_DURATION, &::getCppuType((const double*)0),          0,  0},
     157           2 :         { MAP_CHAR_LEN("LoopSound"),                    WID_LOOP_SOUND, &::getBooleanCppuType(),                    0, 0},
     158           2 :         { MAP_CHAR_LEN("NavigationOrder"),              WID_NAVORDER, &::com::sun::star::container::XIndexAccess::static_type(),0,  0},
     159             :         {0,0,0,0,0,0}
     160         132 :     };
     161             : 
     162             : #define DRAW_PAGE_NOTES_PROPERTIES \
     163             :         { MAP_CHAR_LEN(UNO_NAME_PAGE_BOTTOM),           WID_PAGE_BOTTOM,    &::getCppuType((const sal_Int32*)0),            0,  0},                                                                \
     164             :         { MAP_CHAR_LEN(UNO_NAME_PAGE_LEFT),             WID_PAGE_LEFT,      &::getCppuType((const sal_Int32*)0),            0,  0},                                                                \
     165             :         { MAP_CHAR_LEN(UNO_NAME_PAGE_RIGHT),            WID_PAGE_RIGHT,     &::getCppuType((const sal_Int32*)0),            0,  0},                                                                \
     166             :         { MAP_CHAR_LEN(UNO_NAME_PAGE_TOP),              WID_PAGE_TOP,       &::getCppuType((const sal_Int32*)0),            0,  0},                                                                \
     167             :         { MAP_CHAR_LEN(UNO_NAME_PAGE_HEIGHT),           WID_PAGE_HEIGHT,    &::getCppuType((const sal_Int32*)0),            0,  0},                                                                \
     168             :         { MAP_CHAR_LEN(UNO_NAME_PAGE_LAYOUT),           WID_PAGE_LAYOUT,    &::getCppuType((const sal_Int16*)0),            0,  0},                                                                \
     169             :         { MAP_CHAR_LEN(UNO_NAME_LINKDISPLAYBITMAP),     WID_PAGE_LDBITMAP,  &ITYPE( awt::XBitmap),                          beans::PropertyAttribute::READONLY, 0},                                \
     170             :         { MAP_CHAR_LEN(UNO_NAME_LINKDISPLAYNAME),       WID_PAGE_LDNAME,    &::getCppuType((const OUString*)0),             beans::PropertyAttribute::READONLY, 0},                                \
     171             :         { MAP_CHAR_LEN(UNO_NAME_PAGE_NUMBER),           WID_PAGE_NUMBER,    &::getCppuType((const sal_Int16*)0),            beans::PropertyAttribute::READONLY, 0},                                \
     172             :         { MAP_CHAR_LEN(UNO_NAME_PAGE_ORIENTATION),      WID_PAGE_ORIENT,    &::getCppuType((const view::PaperOrientation*)0),0, 0},                                                                \
     173             :         { MAP_CHAR_LEN(UNO_NAME_PAGE_WIDTH),            WID_PAGE_WIDTH,     &::getCppuType((const sal_Int32*)0),            0,  0},                                                                \
     174             :         { MAP_CHAR_LEN(sUNO_Prop_UserDefinedAttributes),WID_PAGE_USERATTRIBS, &::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >*)0)  ,      0,     0},\
     175             :         { MAP_CHAR_LEN("IsHeaderVisible"),              WID_PAGE_HEADERVISIBLE, &::getBooleanCppuType(),                    0, 0},                                                                 \
     176             :         { MAP_CHAR_LEN("HeaderText"),                   WID_PAGE_HEADERTEXT, &::getCppuType((const OUString*)0),                0,  0},                                                            \
     177             :         { MAP_CHAR_LEN("IsBackgroundDark" ),            WID_PAGE_ISDARK,    &::getBooleanCppuType(),                        beans::PropertyAttribute::READONLY, 0},                                \
     178             :         { MAP_CHAR_LEN("IsFooterVisible"),              WID_PAGE_FOOTERVISIBLE, &::getBooleanCppuType(),                    0, 0},                                                                 \
     179             :         { MAP_CHAR_LEN("FooterText"),                   WID_PAGE_FOOTERTEXT, &::getCppuType((const OUString*)0),                0,  0},                                                            \
     180             :         { MAP_CHAR_LEN("IsPageNumberVisible"),          WID_PAGE_PAGENUMBERVISIBLE, &::getBooleanCppuType(),                    0, 0},                                                             \
     181             :         { MAP_CHAR_LEN("IsDateTimeVisible"),            WID_PAGE_DATETIMEVISIBLE, &::getBooleanCppuType(),                  0, 0},                                                                 \
     182             :         { MAP_CHAR_LEN("IsDateTimeFixed"),              WID_PAGE_DATETIMEFIXED, &::getBooleanCppuType(),                    0, 0},                                                                 \
     183             :         { MAP_CHAR_LEN("DateTimeText"),                 WID_PAGE_DATETIMETEXT, &::getCppuType((const OUString*)0),              0,  0},                                                            \
     184             :         { MAP_CHAR_LEN("DateTimeFormat"),               WID_PAGE_DATETIMEFORMAT, &::getCppuType((const sal_Int32*)0),           0,  0},                                                            \
     185             :         { MAP_CHAR_LEN("NavigationOrder"),              WID_NAVORDER, &::com::sun::star::container::XIndexAccess::static_type(),0,  0},                                                            \
     186             :         {0,0,0,0,0,0}
     187             : 
     188             :     static const SfxItemPropertyMapEntry aDrawPageNotesHandoutPropertyMap_Impl[] =
     189             :     {
     190             :         // this must be the first two entries so they can be excluded for PK_STANDARD
     191           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_BACKGROUND),       WID_PAGE_BACK,      &ITYPE( beans::XPropertySet ),                  beans::PropertyAttribute::MAYBEVOID,0},
     192          46 :         DRAW_PAGE_NOTES_PROPERTIES
     193         102 :     };
     194             :     static const SfxItemPropertyMapEntry aDrawPageNotesHandoutPropertyNoBackMap_Impl[] =
     195             :     {
     196          46 :         DRAW_PAGE_NOTES_PROPERTIES
     197         100 :     };
     198             : 
     199             : #define GRAPHIC_PAGE_PROPERTIES \
     200             :         { MAP_CHAR_LEN(UNO_NAME_PAGE_BOTTOM),           WID_PAGE_BOTTOM,    &::getCppuType((const sal_Int32*)0),            0,  0},                                                                             \
     201             :         { MAP_CHAR_LEN(UNO_NAME_PAGE_LEFT),             WID_PAGE_LEFT,      &::getCppuType((const sal_Int32*)0),            0,  0},                                                                             \
     202             :         { MAP_CHAR_LEN(UNO_NAME_PAGE_RIGHT),            WID_PAGE_RIGHT,     &::getCppuType((const sal_Int32*)0),            0,  0},                                                                             \
     203             :         { MAP_CHAR_LEN(UNO_NAME_PAGE_TOP),              WID_PAGE_TOP,       &::getCppuType((const sal_Int32*)0),            0,  0},                                                                             \
     204             :         { MAP_CHAR_LEN(UNO_NAME_PAGE_HEIGHT),           WID_PAGE_HEIGHT,    &::getCppuType((const sal_Int32*)0),            0,  0},                                                                             \
     205             :         { MAP_CHAR_LEN(UNO_NAME_LINKDISPLAYBITMAP),     WID_PAGE_LDBITMAP,  &ITYPE(awt::XBitmap),                           beans::PropertyAttribute::READONLY, 0},                                             \
     206             :         { MAP_CHAR_LEN(UNO_NAME_LINKDISPLAYNAME),       WID_PAGE_LDNAME,    &::getCppuType((const OUString*)0),             beans::PropertyAttribute::READONLY, 0},                                             \
     207             :         { MAP_CHAR_LEN(UNO_NAME_PAGE_NUMBER),           WID_PAGE_NUMBER,    &::getCppuType((const sal_Int16*)0),            beans::PropertyAttribute::READONLY, 0},                                             \
     208             :         { MAP_CHAR_LEN(UNO_NAME_PAGE_ORIENTATION),      WID_PAGE_ORIENT,    &::getCppuType((const view::PaperOrientation*)0),0, 0},                                                                             \
     209             :         { MAP_CHAR_LEN(UNO_NAME_PAGE_WIDTH),            WID_PAGE_WIDTH,     &::getCppuType((const sal_Int32*)0),            0,  0},                                                                             \
     210             :         { MAP_CHAR_LEN(UNO_NAME_PAGE_PREVIEW),          WID_PAGE_PREVIEW,   SEQTYPE(::getCppuType((::com::sun::star::uno::Sequence<sal_Int8>*)0)), ::com::sun::star::beans::PropertyAttribute::READONLY, 0},    \
     211             :         { MAP_CHAR_LEN(UNO_NAME_PAGE_PREVIEWBITMAP),    WID_PAGE_PREVIEWBITMAP, SEQTYPE(::getCppuType((::com::sun::star::uno::Sequence<sal_Int8>*)0)), ::com::sun::star::beans::PropertyAttribute::READONLY, 0},\
     212             :         { MAP_CHAR_LEN(sUNO_Prop_UserDefinedAttributes),WID_PAGE_USERATTRIBS, &::getCppuType((const Reference< ::com::sun::star::container::XNameContainer >*)0)  ,         0,     0},                          \
     213             :         { MAP_CHAR_LEN(sUNO_Prop_BookmarkURL),          WID_PAGE_BOOKMARK,  &::getCppuType((const OUString*)0),             0,  0},                                                                             \
     214             :         { MAP_CHAR_LEN("IsBackgroundDark" ),            WID_PAGE_ISDARK,    &::getBooleanCppuType(),                        beans::PropertyAttribute::READONLY, 0},                                             \
     215             :         { MAP_CHAR_LEN("NavigationOrder"),              WID_NAVORDER, &::com::sun::star::container::XIndexAccess::static_type(),0,  0},                                                                         \
     216             :         {0,0,0,0,0,0}
     217             : 
     218             :     static const SfxItemPropertyMapEntry aGraphicPagePropertyMap_Impl[] =
     219             :     {
     220           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_BACKGROUND),       WID_PAGE_BACK,      &ITYPE( beans::XPropertySet),                   beans::PropertyAttribute::MAYBEVOID,0},
     221          32 :         GRAPHIC_PAGE_PROPERTIES
     222          88 :     };
     223             :     static const SfxItemPropertyMapEntry aGraphicPagePropertyNoBackMap_Impl[] =
     224             :     {
     225          32 :         GRAPHIC_PAGE_PROPERTIES
     226          86 :     };
     227             : 
     228          54 :     bool bWithoutBackground = ePageKind != PK_STANDARD && ePageKind != PK_HANDOUT;
     229          54 :     const SvxItemPropertySet* pRet = 0;
     230          54 :     if( bImpress )
     231             :     {
     232          54 :         if( ePageKind == PK_STANDARD )
     233             :         {
     234             :             //PK_STANDARD always has a background property
     235          45 :             static SvxItemPropertySet aDrawPagePropertySet_Impl( aDrawPagePropertyMap_Impl, SdrObject::GetGlobalDrawObjectItemPool() );
     236          45 :             pRet = &aDrawPagePropertySet_Impl;
     237             :         }
     238             :         else
     239             :         {
     240           9 :             if(bWithoutBackground)
     241             :             {
     242           9 :                 static SvxItemPropertySet aDrawPageNotesHandoutPropertyNoBackSet_Impl( aDrawPageNotesHandoutPropertyNoBackMap_Impl, SdrObject::GetGlobalDrawObjectItemPool() );
     243           9 :                 pRet = &aDrawPageNotesHandoutPropertyNoBackSet_Impl;
     244             :             }
     245             :             else
     246             :             {
     247           0 :                 static SvxItemPropertySet aDrawPageNotesHandoutPropertySet_Impl( aDrawPageNotesHandoutPropertyMap_Impl, SdrObject::GetGlobalDrawObjectItemPool() );
     248           0 :                 pRet = &aDrawPageNotesHandoutPropertySet_Impl;
     249             :             }
     250             :         }
     251             :     }
     252             :     else
     253             :     {
     254           0 :             if(bWithoutBackground)
     255             :             {
     256           0 :                 static SvxItemPropertySet aGraphicPagePropertyNoBackSet_Impl( aGraphicPagePropertyNoBackMap_Impl, SdrObject::GetGlobalDrawObjectItemPool() );
     257           0 :                 pRet = &aGraphicPagePropertyNoBackSet_Impl;
     258             :             }
     259             :             else
     260             :             {
     261           0 :                 static SvxItemPropertySet aGraphicPagePropertySet_Impl( aGraphicPagePropertyMap_Impl, SdrObject::GetGlobalDrawObjectItemPool() );
     262           0 :                 pRet = &aGraphicPagePropertySet_Impl;
     263             :             }
     264             :     }
     265          54 :     return pRet;
     266             : }
     267             : 
     268             : /** this function stores the property map for master pages in impress and draw */
     269          10 : const SvxItemPropertySet* ImplGetMasterPagePropertySet( PageKind ePageKind )
     270             : {
     271             :     static const SfxItemPropertyMapEntry aMasterPagePropertyMap_Impl[] =
     272             :     {
     273           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_BACKGROUND),       WID_PAGE_BACK,      &ITYPE(beans::XPropertySet),                    0,  0},
     274           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_BOTTOM),           WID_PAGE_BOTTOM,    &::getCppuType((const sal_Int32*)0),            0,  0},
     275           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_LEFT),             WID_PAGE_LEFT,      &::getCppuType((const sal_Int32*)0),            0,  0},
     276           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_RIGHT),            WID_PAGE_RIGHT,     &::getCppuType((const sal_Int32*)0),            0,  0},
     277           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_TOP),              WID_PAGE_TOP,       &::getCppuType((const sal_Int32*)0),            0,  0},
     278           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_HEIGHT),           WID_PAGE_HEIGHT,    &::getCppuType((const sal_Int32*)0),            0,  0},
     279           2 :         { MAP_CHAR_LEN(UNO_NAME_LINKDISPLAYBITMAP),     WID_PAGE_LDBITMAP,  &ITYPE(awt::XBitmap),                           beans::PropertyAttribute::READONLY, 0},
     280           2 :         { MAP_CHAR_LEN(UNO_NAME_LINKDISPLAYNAME),       WID_PAGE_LDNAME,    &::getCppuType((const OUString*)0),             beans::PropertyAttribute::READONLY, 0},
     281           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_NUMBER),           WID_PAGE_NUMBER,    &::getCppuType((const sal_Int16*)0),            beans::PropertyAttribute::READONLY, 0},
     282           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_ORIENTATION),      WID_PAGE_ORIENT,    &::getCppuType((const view::PaperOrientation*)0),0, 0},
     283           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_WIDTH),            WID_PAGE_WIDTH,     &::getCppuType((const sal_Int32*)0),            0,  0},
     284           2 :         { MAP_CHAR_LEN("BackgroundFullSize"),           WID_PAGE_BACKFULL,  &::getBooleanCppuType(),                        0, 0},
     285           2 :         { MAP_CHAR_LEN(sUNO_Prop_UserDefinedAttributes),WID_PAGE_USERATTRIBS, &::getCppuType((const Reference< ::com::sun::star::container::XNameContainer >*)0)  ,         0,     0},
     286           2 :         { MAP_CHAR_LEN("IsBackgroundDark" ),            WID_PAGE_ISDARK,    &::getBooleanCppuType(),                        beans::PropertyAttribute::READONLY, 0},
     287             :         {0,0,0,0,0,0}
     288          38 :     };
     289             : 
     290             :     static const SfxItemPropertyMapEntry aHandoutMasterPagePropertyMap_Impl[] =
     291             :     {
     292           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_BOTTOM),           WID_PAGE_BOTTOM,    &::getCppuType((const sal_Int32*)0),            0,  0},
     293           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_LEFT),             WID_PAGE_LEFT,      &::getCppuType((const sal_Int32*)0),            0,  0},
     294           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_RIGHT),            WID_PAGE_RIGHT,     &::getCppuType((const sal_Int32*)0),            0,  0},
     295           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_TOP),              WID_PAGE_TOP,       &::getCppuType((const sal_Int32*)0),            0,  0},
     296           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_HEIGHT),           WID_PAGE_HEIGHT,    &::getCppuType((const sal_Int32*)0),            0,  0},
     297           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_ORIENTATION),      WID_PAGE_ORIENT,    &::getCppuType((const view::PaperOrientation*)0),0, 0},
     298           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_NUMBER),           WID_PAGE_NUMBER,    &::getCppuType((const sal_Int16*)0),            beans::PropertyAttribute::READONLY, 0},
     299           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_WIDTH),            WID_PAGE_WIDTH,     &::getCppuType((const sal_Int32*)0),            0,  0},
     300           2 :         { MAP_CHAR_LEN(UNO_NAME_PAGE_LAYOUT),           WID_PAGE_LAYOUT,    &::getCppuType((const sal_Int16*)0),            0,  0},
     301           2 :         { MAP_CHAR_LEN(sUNO_Prop_UserDefinedAttributes),WID_PAGE_USERATTRIBS, &::getCppuType((const Reference< ::com::sun::star::container::XNameContainer >*)0)  ,         0,     0},
     302           2 :         { MAP_CHAR_LEN("IsBackgroundDark" ),            WID_PAGE_ISDARK,    &::getBooleanCppuType(),                        beans::PropertyAttribute::READONLY, 0},
     303           2 :         { MAP_CHAR_LEN("IsHeaderVisible"),              WID_PAGE_HEADERVISIBLE, &::getBooleanCppuType(),                    0, 0},
     304           2 :         { MAP_CHAR_LEN("HeaderText"),                   WID_PAGE_HEADERTEXT, &::getCppuType((const OUString*)0),                0,  0},
     305           2 :         { MAP_CHAR_LEN("IsFooterVisible"),              WID_PAGE_FOOTERVISIBLE, &::getBooleanCppuType(),                    0, 0},
     306           2 :         { MAP_CHAR_LEN("FooterText"),                   WID_PAGE_FOOTERTEXT, &::getCppuType((const OUString*)0),                0,  0},
     307           2 :         { MAP_CHAR_LEN("IsPageNumberVisible"),          WID_PAGE_PAGENUMBERVISIBLE, &::getBooleanCppuType(),                    0, 0},
     308           2 :         { MAP_CHAR_LEN("IsDateTimeVisible"),            WID_PAGE_DATETIMEVISIBLE, &::getBooleanCppuType(),                  0, 0},
     309           2 :         { MAP_CHAR_LEN("IsDateTimeFixed"),              WID_PAGE_DATETIMEFIXED, &::getBooleanCppuType(),                    0, 0},
     310           2 :         { MAP_CHAR_LEN("DateTimeText"),                 WID_PAGE_DATETIMETEXT, &::getCppuType((const OUString*)0),              0,  0},
     311           2 :         { MAP_CHAR_LEN("DateTimeFormat"),               WID_PAGE_DATETIMEFORMAT, &::getCppuType((const sal_Int32*)0),           0,  0},
     312             :         {0,0,0,0,0,0}
     313          50 :     };
     314             : 
     315          10 :     const SvxItemPropertySet* pRet = 0;
     316          10 :     if( ePageKind == PK_HANDOUT )
     317             :     {
     318           1 :         static SvxItemPropertySet aHandoutMasterPagePropertySet_Impl( aHandoutMasterPagePropertyMap_Impl, SdrObject::GetGlobalDrawObjectItemPool() );
     319           1 :         pRet = &aHandoutMasterPagePropertySet_Impl;
     320             :     }
     321             :     else
     322             :     {
     323           9 :         static SvxItemPropertySet aMasterPagePropertySet_Impl( aMasterPagePropertyMap_Impl, SdrObject::GetGlobalDrawObjectItemPool() );
     324           9 :         pRet = &aMasterPagePropertySet_Impl;
     325             :     }
     326          10 :     return pRet;
     327             : }
     328             : 
     329             : namespace
     330             : {
     331             :     class theSdGenericDrawPageUnoTunnelId : public rtl::Static< UnoTunnelIdInit, theSdGenericDrawPageUnoTunnelId> {};
     332             : }
     333             : 
     334         839 : const ::com::sun::star::uno::Sequence< sal_Int8 > & SdGenericDrawPage::getUnoTunnelId() throw()
     335             : {
     336         839 :     return theSdGenericDrawPageUnoTunnelId::get().getSeq();
     337             : }
     338             : 
     339         839 : sal_Int64 SAL_CALL SdGenericDrawPage::getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rId ) throw(::com::sun::star::uno::RuntimeException)
     340             : {
     341        2517 :         if( rId.getLength() == 16 && 0 == memcmp( getUnoTunnelId().getConstArray(),
     342        1678 :             rId.getConstArray(), 16 ) )
     343             :         {
     344           0 :                 return sal::static_int_cast<sal_Int64>(reinterpret_cast<sal_IntPtr>(this));
     345             :         }
     346             :         else
     347             :         {
     348         839 :                 return SvxFmDrawPage::getSomething( rId );
     349             :         }
     350             : }
     351             : 
     352          64 : SdGenericDrawPage::SdGenericDrawPage( SdXImpressDocument* _pModel, SdPage* pInPage, const SvxItemPropertySet* _pSet ) throw()
     353             : :       SvxFmDrawPage( (SdrPage*) pInPage ),
     354             :         SdUnoSearchReplaceShape(this),
     355             :         mpModel     ( _pModel ),
     356             :         mpSdrModel(0),
     357             :         mnTempPageNumber(0),
     358             :         mpPropSet   ( _pSet ),
     359          64 :         mbIsImpressDocument(false)
     360             : {
     361          64 :     mpSdrModel = SvxFmDrawPage::mpModel;
     362          64 :     if( mpModel )
     363          64 :         mbIsImpressDocument = mpModel->IsImpressDocument() ? true : false;
     364             : 
     365          64 : }
     366             : 
     367          59 : SdGenericDrawPage::~SdGenericDrawPage() throw()
     368             : {
     369          59 : }
     370             : 
     371         773 : void SdGenericDrawPage::throwIfDisposed() const throw (::com::sun::star::uno::RuntimeException )
     372             : {
     373         773 :     if( (SvxFmDrawPage::mpModel == 0) || (mpModel == 0) || (SvxFmDrawPage::mpPage == 0) )
     374           0 :         throw lang::DisposedException();
     375         773 : }
     376             : 
     377        1127 : SdXImpressDocument* SdGenericDrawPage::GetModel() const
     378             : {
     379        1127 :     if( mpSdrModel != SvxFmDrawPage::mpModel )
     380             :     {
     381           0 :         const_cast< SdGenericDrawPage* >(this)->mpSdrModel = SvxFmDrawPage::mpModel;
     382           0 :         if( mpSdrModel )
     383             :         {
     384           0 :             uno::Reference< uno::XInterface > xModel( SvxFmDrawPage::mpModel->getUnoModel() );
     385           0 :             const_cast< SdGenericDrawPage*>(this)->mpModel = SdXImpressDocument::getImplementation( xModel );
     386           0 :             if( mpModel )
     387           0 :                 const_cast< SdGenericDrawPage*>(this)->mbIsImpressDocument = mpModel->IsImpressDocument() ? true : false;
     388             :         }
     389             :         else
     390             :         {
     391           0 :             const_cast< SdGenericDrawPage* >(this)->mpModel = 0;
     392             :         }
     393             :     }
     394             : 
     395        1127 :     return mpModel;
     396             : }
     397             : 
     398             : // this is called whenever a SdrObject must be created for a empty api shape wrapper
     399         154 : SdrObject * SdGenericDrawPage::_CreateSdrObject( const Reference< drawing::XShape >& xShape ) throw()
     400             : {
     401         154 :     if( NULL == SvxFmDrawPage::mpPage || !xShape.is() )
     402           0 :         return NULL;
     403             : 
     404         154 :     String aType( xShape->getShapeType() );
     405         154 :     const String aPrefix( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.") );
     406         154 :     if( aType.CompareTo( aPrefix, aPrefix.Len() ) != 0 )
     407             :     {
     408          99 :         SdrObject* pObj = SvxFmDrawPage::_CreateSdrObject( xShape );
     409          99 :         if( pObj && ( (pObj->GetObjInventor() != SdrInventor) || (pObj->GetObjIdentifier() != OBJ_PAGE) ) )
     410             :         {
     411          99 :             SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel();
     412          99 :             if( pDoc )
     413          99 :                 pObj->NbcSetStyleSheet( pDoc->GetDefaultStyleSheet(), sal_True );
     414             :         }
     415          99 :         return pObj;
     416             :     }
     417             : 
     418          55 :     aType = aType.Copy( aPrefix.Len() );
     419             : 
     420          55 :     PresObjKind eObjKind = PRESOBJ_NONE;
     421             : 
     422          55 :     if( aType.EqualsAscii( "TitleTextShape" ) )
     423             :     {
     424           6 :         eObjKind = PRESOBJ_TITLE;
     425             :     }
     426          49 :     else if( aType.EqualsAscii( "OutlinerShape" ) )
     427             :     {
     428           4 :         eObjKind = PRESOBJ_OUTLINE;
     429             :     }
     430          45 :     else if( aType.EqualsAscii( "SubtitleShape" ) )
     431             :     {
     432           0 :         eObjKind = PRESOBJ_TEXT;
     433             :     }
     434          45 :     else if( aType.EqualsAscii( "OLE2Shape" ) )
     435             :     {
     436           0 :         eObjKind = PRESOBJ_OBJECT;
     437             :     }
     438          45 :     else if( aType.EqualsAscii( "ChartShape" ) )
     439             :     {
     440           0 :         eObjKind = PRESOBJ_CHART;
     441             :     }
     442          45 :     else if( aType.EqualsAscii( "CalcShape" ) )
     443             :     {
     444           0 :         eObjKind = PRESOBJ_CALC;
     445             :     }
     446          45 :     else if( aType.EqualsAscii( "TableShape" ) )
     447             :     {
     448           0 :         eObjKind = PRESOBJ_TABLE;
     449             :     }
     450          45 :     else if( aType.EqualsAscii( "GraphicObjectShape" ) )
     451             :     {
     452           1 :         eObjKind = PRESOBJ_GRAPHIC;
     453             :     }
     454          44 :     else if( aType.EqualsAscii( "OrgChartShape" ) )
     455             :     {
     456           0 :         eObjKind = PRESOBJ_ORGCHART;
     457             :     }
     458          44 :     else if( aType.EqualsAscii( "PageShape" ) )
     459             :     {
     460          10 :         if( GetPage()->GetPageKind() == PK_NOTES && GetPage()->IsMasterPage() )
     461           1 :             eObjKind = PRESOBJ_TITLE;
     462             :         else
     463           9 :             eObjKind = PRESOBJ_PAGE;
     464             :     }
     465          34 :     else if( aType.EqualsAscii( "NotesShape" ) )
     466             :     {
     467          10 :         eObjKind = PRESOBJ_NOTES;
     468             :     }
     469          24 :     else if( aType.EqualsAscii( "HandoutShape" ) )
     470             :     {
     471           6 :         eObjKind = PRESOBJ_HANDOUT;
     472             :     }
     473          18 :     else if( aType.EqualsAscii( "FooterShape" ) )
     474             :     {
     475           5 :         eObjKind = PRESOBJ_FOOTER;
     476             :     }
     477          13 :     else if( aType.EqualsAscii( "HeaderShape" ) )
     478             :     {
     479           2 :         eObjKind = PRESOBJ_HEADER;
     480             :     }
     481          11 :     else if( aType.EqualsAscii( "SlideNumberShape" ) )
     482             :     {
     483           7 :         eObjKind = PRESOBJ_SLIDENUMBER;
     484             :     }
     485           4 :     else if( aType.EqualsAscii( "DateTimeShape" ) )
     486             :     {
     487           4 :         eObjKind = PRESOBJ_DATETIME;
     488             :     }
     489           0 :     else if( aType.EqualsAscii( "MediaShape" ) )
     490             :     {
     491           0 :         eObjKind = PRESOBJ_MEDIA;
     492             :     }
     493             : 
     494          55 :     Rectangle aRect( eObjKind == PRESOBJ_TITLE ? GetPage()->GetTitleRect() : GetPage()->GetLayoutRect()  );
     495             : 
     496          55 :     const awt::Point aPos( aRect.Left(), aRect.Top() );
     497          55 :     xShape->setPosition( aPos );
     498             : 
     499          55 :     const awt::Size aSize( aRect.GetWidth(), aRect.GetHeight() );
     500          55 :     xShape->setSize( aSize );
     501             : 
     502          55 :     SdrObject *pPresObj = 0;
     503          55 :     if( (eObjKind == PRESOBJ_TABLE) || (eObjKind == PRESOBJ_MEDIA) )
     504             :     {
     505           0 :         pPresObj = SvxFmDrawPage::_CreateSdrObject( xShape );
     506           0 :         if( pPresObj )
     507             :         {
     508           0 :             SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel();
     509           0 :             if( pDoc )
     510           0 :                 pPresObj->NbcSetStyleSheet( pDoc->GetDefaultStyleSheet(), sal_True );
     511           0 :             GetPage()->InsertPresObj( pPresObj, eObjKind );
     512           0 :         }
     513             :     }
     514             :     else
     515             :     {
     516          55 :         pPresObj = GetPage()->CreatePresObj( eObjKind, sal_False, aRect, sal_True );
     517             :     }
     518             : 
     519          55 :     if( pPresObj )
     520          55 :         pPresObj->SetUserCall( GetPage() );
     521             : 
     522          55 :     return pPresObj;
     523             : }
     524             : 
     525             : // XInterface
     526        1404 : Any SAL_CALL SdGenericDrawPage::queryInterface( const uno::Type & rType )
     527             :     throw(uno::RuntimeException)
     528             : {
     529        1404 :     Any aAny;
     530             : 
     531        1404 :     QUERYINT( beans::XPropertySet );
     532        1333 :     else QUERYINT( container::XNamed );
     533        1323 :     else QUERYINT( util::XReplaceable );
     534        1323 :     else QUERYINT( util::XSearchable );
     535        1323 :     else QUERYINT( document::XLinkTargetSupplier );
     536        1323 :     else QUERYINT( drawing::XShapeCombiner );
     537        1323 :     else QUERYINT( drawing::XShapeBinder );
     538        1323 :     else QUERYINT( beans::XMultiPropertySet );
     539        1289 :     else if( rType == ITYPE( office::XAnnotationAccess ) )
     540             :     {
     541          21 :         return Any( Reference< office::XAnnotationAccess >( this ) );
     542             :     }
     543        1268 :     else if( rType == ITYPE( XAnimationNodeSupplier ) )
     544             :     {
     545          41 :         if( mbIsImpressDocument )
     546             :         {
     547          41 :             const PageKind ePageKind = GetPage() ? GetPage()->GetPageKind() : PK_STANDARD;
     548             : 
     549          41 :             if( ePageKind == PK_STANDARD )
     550          40 :                 return makeAny( Reference< XAnimationNodeSupplier >( this ) );
     551             :         }
     552             :     }
     553             :     else
     554        1227 :         return SvxDrawPage::queryInterface( rType );
     555             : 
     556         116 :     return aAny;
     557             : }
     558             : 
     559             : // XPropertySet
     560          85 : Reference< beans::XPropertySetInfo > SAL_CALL SdGenericDrawPage::getPropertySetInfo()
     561             :     throw(uno::RuntimeException)
     562             : {
     563          85 :     ::SolarMutexGuard aGuard;
     564          85 :     throwIfDisposed();
     565          85 :     return mpPropSet->getPropertySetInfo();
     566             : }
     567             : 
     568         176 : void SAL_CALL SdGenericDrawPage::setPropertyValue( const OUString& aPropertyName, const Any& aValue )
     569             :     throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException)
     570             : {
     571         176 :     ::SolarMutexGuard aGuard;
     572             : 
     573         176 :     throwIfDisposed();
     574             : 
     575         176 :     const SfxItemPropertySimpleEntry* pEntry = mpPropSet->getPropertyMapEntry(aPropertyName);
     576             : 
     577         176 :     switch( pEntry ? pEntry->nWID : -1 )
     578             :     {
     579             :         case WID_NAVORDER:
     580           0 :             setNavigationOrder( aValue );
     581           0 :             break;
     582             :         case WID_PAGE_LEFT:
     583             :         case WID_PAGE_RIGHT:
     584             :         case WID_PAGE_TOP:
     585             :         case WID_PAGE_BOTTOM:
     586             :         case WID_PAGE_LAYOUT:
     587             :         case WID_PAGE_DURATION:
     588             :         case WID_PAGE_CHANGE:
     589             :         {
     590          29 :             sal_Int32 nValue = 0;
     591          29 :             if(!(aValue >>= nValue))
     592           0 :                 throw lang::IllegalArgumentException();
     593             : 
     594          29 :             switch( pEntry->nWID )
     595             :             {
     596             :             case WID_PAGE_LEFT:
     597           4 :                 SetLftBorder(nValue);
     598           4 :                 break;
     599             :             case WID_PAGE_RIGHT:
     600           4 :                 SetRgtBorder( nValue );
     601           4 :                 break;
     602             :             case WID_PAGE_TOP:
     603           4 :                 SetUppBorder( nValue );
     604           4 :                 break;
     605             :             case WID_PAGE_BOTTOM:
     606           4 :                 SetLwrBorder( nValue );
     607           4 :                 break;
     608             :             case WID_PAGE_CHANGE:
     609           0 :                 GetPage()->SetPresChange( (PresChange)nValue );
     610           0 :                 break;
     611             :             case WID_PAGE_LAYOUT:
     612          13 :                 GetPage()->SetAutoLayout( (AutoLayout)nValue, sal_True );
     613          13 :                 break;
     614             :             case WID_PAGE_DURATION:
     615           0 :                 GetPage()->SetTime((sal_uInt32)nValue);
     616           0 :                 break;
     617             :             }
     618             :             break;
     619             :         }
     620             :         case WID_PAGE_WIDTH:
     621             :         {
     622          13 :             sal_Int32 nWidth = 0;
     623          13 :             if(!(aValue >>= nWidth))
     624           0 :                 throw lang::IllegalArgumentException();
     625             : 
     626          13 :             SetWidth( nWidth );
     627             :             break;
     628             :         }
     629             :         case WID_PAGE_HEIGHT:
     630             :         {
     631          13 :             sal_Int32 nHeight = 0;
     632          13 :             if(!(aValue >>= nHeight))
     633           0 :                 throw lang::IllegalArgumentException();
     634             : 
     635          13 :             SetHeight( nHeight );
     636             :             break;
     637             :         }
     638             :         case WID_PAGE_ORIENT:
     639             :         {
     640           4 :             sal_Int32 nEnum = 0;
     641           4 :             if(!::cppu::enum2int( nEnum, aValue ))
     642           0 :                 throw lang::IllegalArgumentException();
     643             : 
     644           4 :             Orientation eOri = (((view::PaperOrientation)nEnum) == view::PaperOrientation_PORTRAIT)?ORIENTATION_PORTRAIT:ORIENTATION_LANDSCAPE;
     645             : 
     646           4 :             if( eOri != GetPage()->GetOrientation() )
     647             :             {
     648           1 :                 SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel();
     649           1 :                 const PageKind ePageKind = GetPage()->GetPageKind();
     650             : 
     651           1 :                 sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind);
     652           2 :                 for (i = 0; i < nPageCnt; i++)
     653             :                 {
     654           1 :                     SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind);
     655           1 :                     pPage->SetOrientation( eOri );
     656             :                 }
     657             : 
     658           1 :                 nPageCnt = pDoc->GetSdPageCount(ePageKind);
     659             : 
     660           2 :                 for (i = 0; i < nPageCnt; i++)
     661             :                 {
     662           1 :                     SdPage* pPage = pDoc->GetSdPage(i, ePageKind);
     663           1 :                     pPage->SetOrientation( eOri );
     664             :                 }
     665             :             }
     666             :             break;
     667             :         }
     668             :         case WID_PAGE_EFFECT:
     669             :         {
     670           0 :             sal_Int32 nEnum = 0;
     671           0 :             if(!::cppu::enum2int( nEnum, aValue ))
     672           0 :                 throw lang::IllegalArgumentException();
     673             : 
     674           0 :             GetPage()->SetFadeEffect( (presentation::FadeEffect)nEnum );
     675             :             break;
     676             :         }
     677             :         case WID_PAGE_BACK:
     678          14 :             setBackground( aValue );
     679          14 :             break;
     680             :         case WID_PAGE_SPEED:
     681             :         {
     682           0 :             sal_Int32 nEnum = 0;
     683           0 :             if(!::cppu::enum2int( nEnum, aValue ))
     684           0 :                 throw lang::IllegalArgumentException();
     685             : 
     686           0 :             GetPage()->setTransitionDuration( nEnum == 0 ? 3.0 : (nEnum == 1 ? 2.0 : 1.0 )  );
     687             :             break;
     688             :         }
     689             :         case WID_PAGE_VISIBLE :
     690             :         {
     691           4 :             sal_Bool    bVisible = sal_False;
     692           4 :             if( ! ( aValue >>= bVisible ) )
     693           0 :                 throw lang::IllegalArgumentException();
     694           4 :             GetPage()->SetExcluded( bVisible == sal_False );
     695             :             break;
     696             :         }
     697             :         case WID_PAGE_SOUNDFILE :
     698             :         {
     699           0 :             OUString aURL;
     700           0 :             if( aValue >>= aURL )
     701             :             {
     702           0 :                 GetPage()->SetSoundFile( aURL );
     703           0 :                 GetPage()->SetSound( !aURL.isEmpty() );
     704             :                 break;
     705             :             }
     706             :             else
     707             :             {
     708           0 :                 sal_Bool bStopSound = sal_False;
     709           0 :                 if( aValue >>= bStopSound )
     710             :                 {
     711           0 :                     GetPage()->SetStopSound( bStopSound ? true : false );
     712             :                     break;
     713             :                 }
     714             :             }
     715             : 
     716             : 
     717           0 :             throw lang::IllegalArgumentException();
     718             :         }
     719             :         case WID_LOOP_SOUND:
     720             :         {
     721           0 :             sal_Bool bLoop = sal_False;
     722           0 :             if( ! (aValue >>= bLoop) )
     723           0 :                 throw lang::IllegalArgumentException();
     724             : 
     725           0 :             GetPage()->SetLoopSound( bLoop ? true : false );
     726             :             break;
     727             :         }
     728             :         case WID_PAGE_BACKFULL:
     729             :         {
     730           2 :             sal_Bool    bFullSize = sal_False;
     731           2 :             if( ! ( aValue >>= bFullSize ) )
     732           0 :                 throw lang::IllegalArgumentException();
     733           2 :             GetPage()->SetBackgroundFullSize( bFullSize );
     734             :             break;
     735             :         }
     736             :         case WID_PAGE_BACKVIS:
     737             :         {
     738           8 :             sal_Bool bVisible = sal_False;
     739           8 :             if( ! ( aValue >>= bVisible ) )
     740           0 :                 throw lang::IllegalArgumentException();
     741             : 
     742           8 :             SdrPage* pPage = GetPage();
     743           8 :             if( pPage )
     744             :             {
     745           8 :                 SdDrawDocument* pDoc = (SdDrawDocument*)pPage->GetModel();
     746           8 :                 if( pDoc->GetMasterPageCount() )
     747             :                 {
     748           8 :                     SdrLayerAdmin& rLayerAdmin = pDoc->GetLayerAdmin();
     749           8 :                     SetOfByte aVisibleLayers = pPage->TRG_GetMasterPageVisibleLayers();
     750           8 :                     aVisibleLayers.Set(rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRND)), sal_False), bVisible);
     751           8 :                     pPage->TRG_SetMasterPageVisibleLayers(aVisibleLayers);
     752             :                 }
     753             :             }
     754             :             break;
     755             :         }
     756             :         case WID_PAGE_BACKOBJVIS:
     757             :         {
     758           8 :             sal_Bool bVisible = sal_False;
     759           8 :             if( ! ( aValue >>= bVisible ) )
     760           0 :                 throw lang::IllegalArgumentException();
     761             : 
     762           8 :             SdrPage* pPage = GetPage();
     763           8 :             if( pPage )
     764             :             {
     765           8 :                 SdDrawDocument* pDoc = (SdDrawDocument*)pPage->GetModel();
     766           8 :                 if( pDoc->GetMasterPageCount() )
     767             :                 {
     768           8 :                     SdrLayerAdmin& rLayerAdmin = pDoc->GetLayerAdmin();
     769           8 :                     SetOfByte aVisibleLayers = pPage->TRG_GetMasterPageVisibleLayers();
     770           8 :                     aVisibleLayers.Set(rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRNDOBJ)), sal_False), bVisible);
     771           8 :                     pPage->TRG_SetMasterPageVisibleLayers(aVisibleLayers);
     772             :                 }
     773             :             }
     774             : 
     775             :             break;
     776             :         }
     777             :         case WID_PAGE_USERATTRIBS:
     778             :         {
     779           0 :             if( !GetPage()->setAlienAttributes( aValue ) )
     780           0 :                 throw lang::IllegalArgumentException();
     781           0 :             break;
     782             :         }
     783             :         case WID_PAGE_BOOKMARK:
     784             :         {
     785           0 :             OUString aBookmarkURL;
     786           0 :             if( ! ( aValue >>= aBookmarkURL ) )
     787           0 :                 throw lang::IllegalArgumentException();
     788             : 
     789           0 :             setBookmarkURL( aBookmarkURL );
     790           0 :             break;
     791             :         }
     792             : 
     793             :         case WID_PAGE_HEADERVISIBLE:
     794             :         case WID_PAGE_HEADERTEXT:
     795             :         case WID_PAGE_FOOTERVISIBLE:
     796             :         case WID_PAGE_FOOTERTEXT:
     797             :         case WID_PAGE_PAGENUMBERVISIBLE:
     798             :         case WID_PAGE_DATETIMEVISIBLE:
     799             :         case WID_PAGE_DATETIMEFIXED:
     800             :         case WID_PAGE_DATETIMETEXT:
     801             :         case WID_PAGE_DATETIMEFORMAT:
     802             :         {
     803          72 :             sd::HeaderFooterSettings aHeaderFooterSettings( GetPage()->getHeaderFooterSettings() );
     804             : 
     805          72 :             switch( pEntry->nWID )
     806             :             {
     807             :             case WID_PAGE_HEADERVISIBLE:
     808             :             {
     809           9 :                 sal_Bool bVisible = sal_False;
     810           9 :                 if( ! ( aValue >>= bVisible ) )
     811           0 :                     throw lang::IllegalArgumentException();
     812             : 
     813           9 :                 aHeaderFooterSettings.mbHeaderVisible = bVisible;
     814             :                 break;
     815             :             }
     816             :             case WID_PAGE_HEADERTEXT:
     817             :             {
     818           0 :                 OUString aText;
     819           0 :                 if( ! ( aValue >>= aText ) )
     820           0 :                     throw lang::IllegalArgumentException();
     821             : 
     822           0 :                 aHeaderFooterSettings.maHeaderText = aText;
     823           0 :                 break;
     824             :             }
     825             :             case WID_PAGE_FOOTERVISIBLE:
     826             :             {
     827          21 :                 sal_Bool bVisible = sal_False;
     828          21 :                 if( ! ( aValue >>= bVisible ) )
     829           0 :                     throw lang::IllegalArgumentException();
     830             : 
     831          21 :                 aHeaderFooterSettings.mbFooterVisible = bVisible;
     832             :                 break;
     833             :             }
     834             :             case WID_PAGE_FOOTERTEXT:
     835             :             {
     836           0 :                 OUString aText;
     837           0 :                 if( ! ( aValue >>= aText ) )
     838           0 :                     throw lang::IllegalArgumentException();
     839             : 
     840           0 :                 aHeaderFooterSettings.maFooterText = aText;
     841           0 :                 break;
     842             :             }
     843             :             case WID_PAGE_PAGENUMBERVISIBLE:
     844             :             {
     845          21 :                 sal_Bool bVisible = sal_False;
     846          21 :                 if( ! ( aValue >>= bVisible ) )
     847           0 :                     throw lang::IllegalArgumentException();
     848             : 
     849          21 :                 aHeaderFooterSettings.mbSlideNumberVisible = bVisible;
     850             :                 break;
     851             :             }
     852             :             case WID_PAGE_DATETIMEVISIBLE:
     853             :             {
     854          21 :                 sal_Bool bVisible = sal_False;
     855          21 :                 if( ! ( aValue >>= bVisible ) )
     856           0 :                     throw lang::IllegalArgumentException();
     857             : 
     858          21 :                 aHeaderFooterSettings.mbDateTimeVisible = bVisible;
     859             :                 break;
     860             :             }
     861             :             case WID_PAGE_DATETIMEFIXED:
     862             :             {
     863           0 :                 sal_Bool bVisible = sal_False;
     864           0 :                 if( ! ( aValue >>= bVisible ) )
     865           0 :                     throw lang::IllegalArgumentException();
     866             : 
     867           0 :                 aHeaderFooterSettings.mbDateTimeIsFixed = bVisible;
     868             :                 break;
     869             :             }
     870             :             case WID_PAGE_DATETIMETEXT:
     871             :             {
     872           0 :                 OUString aText;
     873           0 :                 if( ! ( aValue >>= aText ) )
     874           0 :                     throw lang::IllegalArgumentException();
     875             : 
     876           0 :                 aHeaderFooterSettings.maDateTimeText = aText;
     877           0 :                 break;
     878             :             }
     879             :             case WID_PAGE_DATETIMEFORMAT:
     880             :             {
     881           0 :                 sal_Int32 nValue = 0;
     882           0 :                 if( ! ( aValue >>= nValue ) )
     883           0 :                     throw lang::IllegalArgumentException();
     884             : 
     885           0 :                 aHeaderFooterSettings.meDateTimeFormat = nValue;
     886             :                 break;
     887             :             }
     888             :             }
     889             : 
     890          72 :             if( !(aHeaderFooterSettings == GetPage()->getHeaderFooterSettings()) )
     891           8 :                 GetPage()->setHeaderFooterSettings( aHeaderFooterSettings );
     892             : 
     893          72 :             break;
     894             :         }
     895             : 
     896             :         case WID_PAGE_NUMBER:
     897           0 :             if( (GetPage()->GetPageKind() == PK_HANDOUT) && !GetPage()->IsMasterPage() )
     898             :             {
     899           0 :                 if( !(aValue >>= mnTempPageNumber) )
     900           0 :                     throw lang::IllegalArgumentException();
     901             : 
     902           0 :                 break;
     903             :             }
     904           0 :             throw beans::PropertyVetoException();
     905             : 
     906             :         case WID_PAGE_LDBITMAP:
     907             :         case WID_PAGE_LDNAME:
     908             :         case WID_PAGE_ISDARK:
     909           0 :             throw beans::PropertyVetoException();
     910             : 
     911             :         case WID_TRANSITION_TYPE:
     912             :         {
     913           0 :             sal_Int16 nValue = 0;
     914           0 :             if( ! ( aValue >>= nValue ) )
     915           0 :                 throw lang::IllegalArgumentException();
     916             : 
     917           0 :             GetPage()->setTransitionType( nValue );
     918             :             break;
     919             :         }
     920             : 
     921             :         case WID_TRANSITION_SUBTYPE:
     922             :         {
     923           0 :             sal_Int16 nValue = 0;
     924           0 :             if( ! ( aValue >>= nValue ) )
     925           0 :                 throw lang::IllegalArgumentException();
     926             : 
     927           0 :             GetPage()->setTransitionSubtype( nValue );
     928             :             break;
     929             :         }
     930             : 
     931             :         case WID_TRANSITION_DIRECTION:
     932             :         {
     933           0 :             sal_Bool bValue = sal_False;
     934           0 :             if( ! ( aValue >>= bValue ) )
     935           0 :                 throw lang::IllegalArgumentException();
     936             : 
     937           0 :             GetPage()->setTransitionDirection( bValue );
     938             :             break;
     939             :         }
     940             : 
     941             :         case WID_TRANSITION_FADE_COLOR:
     942             :         {
     943           0 :             sal_Int32 nValue = 0;
     944           0 :             if( ! ( aValue >>= nValue ) )
     945           0 :                 throw lang::IllegalArgumentException();
     946             : 
     947           0 :             GetPage()->setTransitionFadeColor( nValue );
     948             :             break;
     949             :         }
     950             : 
     951             :         case WID_TRANSITION_DURATION:
     952             :         {
     953           0 :             double fValue = 0.0;
     954           0 :             if( ! ( aValue >>= fValue ) )
     955           0 :                 throw lang::IllegalArgumentException();
     956             : 
     957           0 :             GetPage()->setTransitionDuration( fValue );
     958             :             break;
     959             :         }
     960             : 
     961             :         default:
     962           9 :             throw beans::UnknownPropertyException();
     963             :     }
     964             : 
     965         176 :     GetModel()->SetModified();
     966         167 : }
     967             : 
     968           0 : Any SAL_CALL SdGenericDrawPage::getPropertyValue( const OUString& PropertyName )
     969             :     throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
     970             : {
     971           0 :     ::SolarMutexGuard aGuard;
     972             : 
     973           0 :     throwIfDisposed();
     974             : 
     975           0 :     uno::Any aAny;
     976             : 
     977           0 :     const SfxItemPropertySimpleEntry* pEntry = mpPropSet->getPropertyMapEntry(PropertyName);
     978             : 
     979           0 :     switch( pEntry ? pEntry->nWID : -1 )
     980             :     {
     981             :     case WID_NAVORDER:
     982           0 :         aAny = getNavigationOrder();
     983           0 :         break;
     984             :     case WID_PAGE_LEFT:
     985           0 :         aAny <<= (sal_Int32)( GetPage()->GetLftBorder() );
     986           0 :         break;
     987             :     case WID_PAGE_RIGHT:
     988           0 :         aAny <<= (sal_Int32)( GetPage()->GetRgtBorder() );
     989           0 :         break;
     990             :     case WID_PAGE_TOP:
     991           0 :         aAny <<= (sal_Int32)( GetPage()->GetUppBorder() );
     992           0 :         break;
     993             :     case WID_PAGE_BOTTOM:
     994           0 :         aAny <<= (sal_Int32)( GetPage()->GetLwrBorder() );
     995           0 :         break;
     996             :     case WID_PAGE_WIDTH:
     997           0 :         aAny <<= (sal_Int32)( GetPage()->GetSize().getWidth() );
     998           0 :         break;
     999             :     case WID_PAGE_HEIGHT:
    1000           0 :         aAny <<= (sal_Int32)( GetPage()->GetSize().getHeight() );
    1001           0 :         break;
    1002             :     case WID_PAGE_ORIENT:
    1003           0 :         aAny = ::cppu::int2enum( (sal_Int32)((GetPage()->GetOrientation() == ORIENTATION_PORTRAIT)? view::PaperOrientation_PORTRAIT: view::PaperOrientation_LANDSCAPE), ::getCppuType((const view::PaperOrientation*)0) );
    1004           0 :         break;
    1005             :     case WID_PAGE_EFFECT:
    1006           0 :         aAny = ::cppu::int2enum( (sal_Int32)GetPage()->GetFadeEffect(), ::getCppuType((const presentation::FadeEffect*)0) );
    1007           0 :         break;
    1008             :     case WID_PAGE_CHANGE:
    1009           0 :         aAny <<= (sal_Int32)( GetPage()->GetPresChange() );
    1010           0 :         break;
    1011             :     case WID_PAGE_SPEED:
    1012             :         {
    1013           0 :             const double fDuration = GetPage()->getTransitionDuration();
    1014           0 :             aAny = ::cppu::int2enum( fDuration < 2.0 ? 2 : (fDuration > 2.0 ? 0 : 1), ::getCppuType((const presentation::AnimationSpeed*)0) );
    1015             :         }
    1016           0 :         break;
    1017             :     case WID_PAGE_LAYOUT:
    1018           0 :         aAny <<= (sal_Int16)( GetPage()->GetAutoLayout() );
    1019           0 :         break;
    1020             :     case WID_PAGE_NUMBER:
    1021             :         {
    1022           0 :             const sal_uInt16 nPageNumber(GetPage()->GetPageNum());
    1023             : 
    1024           0 :             if(nPageNumber > 0)
    1025             :             {
    1026             :                 // for all other pages calculate the number
    1027           0 :                 aAny <<= (sal_Int16)((sal_uInt16)((nPageNumber-1)>>1) + 1);
    1028             :             }
    1029             :             else
    1030             :             {
    1031           0 :                 aAny <<= mnTempPageNumber;
    1032             :             }
    1033             :         }
    1034           0 :         break;
    1035             :     case WID_PAGE_DURATION:
    1036           0 :         aAny <<= (sal_Int32)(GetPage()->GetTime());
    1037           0 :         break;
    1038             :     case WID_PAGE_LDNAME:
    1039             :     {
    1040           0 :         const OUString aName( GetPage()->GetName() );
    1041           0 :         aAny <<= aName;
    1042           0 :         break;
    1043             :     }
    1044             :     case WID_PAGE_LDBITMAP:
    1045             :         {
    1046             :             Reference< awt::XBitmap > xBitmap(
    1047           0 :                 VCLUnoHelper::CreateBitmap( BitmapEx( SdResId( BMP_PAGE ) ) ) );
    1048           0 :             aAny <<= xBitmap;
    1049             :         }
    1050           0 :         break;
    1051             :     case WID_PAGE_BACK:
    1052           0 :         getBackground( aAny );
    1053           0 :         break;
    1054             :     case WID_PAGE_PREVIEW :
    1055             :         {
    1056           0 :             SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel();
    1057           0 :             if ( pDoc )
    1058             :             {
    1059           0 :                 ::sd::DrawDocShell* pDocShell = pDoc->GetDocSh();
    1060           0 :                 if ( pDocShell )
    1061             :                 {
    1062           0 :                     sal_uInt16 nPgNum = 0;
    1063           0 :                     sal_uInt16 nPageCount = pDoc->GetSdPageCount( PK_STANDARD );
    1064           0 :                     sal_uInt16 nPageNumber = (sal_uInt16)( ( GetPage()->GetPageNum() - 1 ) >> 1 );
    1065           0 :                     while( nPgNum < nPageCount )
    1066             :                     {
    1067           0 :                         pDoc->SetSelected( pDoc->GetSdPage( nPgNum, PK_STANDARD ), nPgNum == nPageNumber );
    1068           0 :                         nPgNum++;
    1069             :                     }
    1070             :                     ::boost::shared_ptr<GDIMetaFile> pMetaFile =
    1071           0 :                         pDocShell->GetPreviewMetaFile();
    1072           0 :                     if ( pMetaFile )
    1073             :                     {
    1074           0 :                         Point   aPoint;
    1075           0 :                         Size    aSize( GetPage()->GetSize() );
    1076           0 :                         pMetaFile->AddAction( (MetaAction*) new MetaFillColorAction( COL_WHITE, sal_True ), 0 );
    1077           0 :                         pMetaFile->AddAction( (MetaAction*) new MetaRectAction( Rectangle( aPoint, aSize ) ), 1 );
    1078           0 :                         pMetaFile->SetPrefMapMode( MAP_100TH_MM );
    1079           0 :                         pMetaFile->SetPrefSize( aSize );
    1080             : 
    1081           0 :                         SvMemoryStream aDestStrm( 65535, 65535 );
    1082           0 :                         ConvertGDIMetaFileToWMF( *pMetaFile, aDestStrm, NULL, sal_False );
    1083           0 :                         Sequence<sal_Int8> aSeq( (sal_Int8*)aDestStrm.GetData(), aDestStrm.Tell() );
    1084           0 :                         aAny <<= aSeq;
    1085           0 :                     }
    1086             :                 }
    1087             :             }
    1088             :         }
    1089           0 :         break;
    1090             : 
    1091             :     case WID_PAGE_PREVIEWBITMAP :
    1092             :         {
    1093           0 :             SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel();
    1094           0 :             if ( pDoc )
    1095             :             {
    1096           0 :                 ::sd::DrawDocShell* pDocShell = pDoc->GetDocSh();
    1097           0 :                 if ( pDocShell )
    1098             :                 {
    1099           0 :                     sal_uInt16 nPgNum = 0;
    1100           0 :                     sal_uInt16 nPageCount = pDoc->GetSdPageCount( PK_STANDARD );
    1101           0 :                     sal_uInt16 nPageNumber = (sal_uInt16)( ( GetPage()->GetPageNum() - 1 ) >> 1 );
    1102           0 :                     while( nPgNum < nPageCount )
    1103             :                     {
    1104           0 :                         pDoc->SetSelected( pDoc->GetSdPage( nPgNum, PK_STANDARD ), nPgNum == nPageNumber );
    1105           0 :                         nPgNum++;
    1106             :                     }
    1107             :                     ::boost::shared_ptr<GDIMetaFile> pMetaFile =
    1108           0 :                         pDocShell->GetPreviewMetaFile();
    1109           0 :                     BitmapEx aBitmap;
    1110           0 :                     if ( pMetaFile && pMetaFile->CreateThumbnail( 160, /* magic value taken from GraphicHelper::getThumbnailFormatFromGDI_Impl() */
    1111           0 :                                                                   aBitmap ) )
    1112             :                     {
    1113           0 :                         SvMemoryStream aMemStream;
    1114           0 :                         aBitmap.GetBitmap().Write( aMemStream, sal_False, sal_False );
    1115           0 :                         uno::Sequence<sal_Int8> aSeq( (sal_Int8*)aMemStream.GetData(), aMemStream.Tell() );
    1116           0 :                         aAny <<= aSeq;
    1117           0 :                     }
    1118             :                 }
    1119             :             }
    1120             :         }
    1121           0 :         break;
    1122             : 
    1123             :     case WID_PAGE_VISIBLE :
    1124             :     {
    1125           0 :         sal_Bool bVisible = GetPage()->IsExcluded() == sal_False;
    1126           0 :         aAny <<= Any( &bVisible, ::getBooleanCppuType() );
    1127             :         break;
    1128             :     }
    1129             : 
    1130             :     case WID_PAGE_SOUNDFILE :
    1131             :     {
    1132           0 :         if( GetPage()->IsStopSound() )
    1133             :         {
    1134           0 :             aAny <<= sal_True;
    1135             :         }
    1136             :         else
    1137             :         {
    1138           0 :             OUString aURL;
    1139           0 :             if( GetPage()->IsSoundOn() )
    1140           0 :                 aURL = GetPage()->GetSoundFile();
    1141           0 :             aAny <<= aURL;
    1142             :         }
    1143           0 :         break;
    1144             :     }
    1145             :     case WID_LOOP_SOUND:
    1146             :     {
    1147           0 :         aAny <<= (sal_Bool)GetPage()->IsLoopSound();
    1148           0 :         break;
    1149             :     }
    1150             :     case WID_PAGE_BACKFULL:
    1151             :     {
    1152           0 :         sal_Bool bFullSize = GetPage()->IsBackgroundFullSize();
    1153           0 :         aAny = Any( &bFullSize, ::getBooleanCppuType() );
    1154             :         break;
    1155             :     }
    1156             :     case WID_PAGE_BACKVIS:
    1157             :     {
    1158           0 :         SdrPage* pPage = GetPage();
    1159           0 :         if( pPage )
    1160             :         {
    1161           0 :             SdDrawDocument* pDoc = (SdDrawDocument*)pPage->GetModel();
    1162           0 :             if( pDoc->GetMasterPageCount() )
    1163             :             {
    1164           0 :                 SdrLayerAdmin& rLayerAdmin = pDoc->GetLayerAdmin();
    1165           0 :                 SetOfByte aVisibleLayers = pPage->TRG_GetMasterPageVisibleLayers();
    1166           0 :                 aAny <<= (sal_Bool)aVisibleLayers.IsSet(rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRND)), sal_False));
    1167             :             }
    1168             :             else
    1169             :             {
    1170           0 :                 aAny <<= (sal_Bool)sal_False;
    1171             :             }
    1172             :         }
    1173           0 :         break;
    1174             :     }
    1175             :     case WID_PAGE_BACKOBJVIS:
    1176             :     {
    1177           0 :         SdrPage* pPage = GetPage();
    1178           0 :         if( pPage )
    1179             :         {
    1180           0 :             SdDrawDocument* pDoc = (SdDrawDocument*)pPage->GetModel();
    1181           0 :             if( pDoc->GetMasterPageCount() )
    1182             :             {
    1183           0 :                 SdrLayerAdmin& rLayerAdmin = pDoc->GetLayerAdmin();
    1184           0 :                 SetOfByte aVisibleLayers = pPage->TRG_GetMasterPageVisibleLayers();
    1185           0 :                 aAny <<= (sal_Bool)aVisibleLayers.IsSet(rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRNDOBJ)), sal_False));
    1186             :             }
    1187             :             else
    1188             :             {
    1189           0 :                 aAny <<= (sal_Bool)sal_False;
    1190             :             }
    1191             :         }
    1192           0 :         break;
    1193             :     }
    1194             :     case WID_PAGE_USERATTRIBS:
    1195             :     {
    1196           0 :         GetPage()->getAlienAttributes( aAny );
    1197           0 :         break;
    1198             :     }
    1199             :     case WID_PAGE_BOOKMARK:
    1200             :     {
    1201           0 :         aAny <<= getBookmarkURL();
    1202           0 :         break;
    1203             :     }
    1204             :     case WID_PAGE_ISDARK:
    1205             :     {
    1206           0 :         aAny <<= (sal_Bool)GetPage()->GetPageBackgroundColor().IsDark();
    1207           0 :         break;
    1208             :     }
    1209             :     case WID_PAGE_HEADERVISIBLE:
    1210           0 :         aAny <<= (sal_Bool)GetPage()->getHeaderFooterSettings().mbHeaderVisible;
    1211           0 :         break;
    1212             :     case WID_PAGE_HEADERTEXT:
    1213             :         {
    1214           0 :             const OUString aText( GetPage()->getHeaderFooterSettings().maHeaderText );
    1215           0 :             aAny <<= aText;
    1216             :         }
    1217           0 :         break;
    1218             :     case WID_PAGE_FOOTERVISIBLE:
    1219           0 :         aAny <<= (sal_Bool)GetPage()->getHeaderFooterSettings().mbFooterVisible;
    1220           0 :         break;
    1221             :     case WID_PAGE_FOOTERTEXT:
    1222             :         {
    1223           0 :             const OUString aText( GetPage()->getHeaderFooterSettings().maFooterText );
    1224           0 :             aAny <<= aText;
    1225             :         }
    1226           0 :         break;
    1227             :     case WID_PAGE_PAGENUMBERVISIBLE:
    1228           0 :         aAny <<= (sal_Bool)GetPage()->getHeaderFooterSettings().mbSlideNumberVisible;
    1229           0 :         break;
    1230             :     case WID_PAGE_DATETIMEVISIBLE:
    1231           0 :         aAny <<= (sal_Bool)GetPage()->getHeaderFooterSettings().mbDateTimeVisible;
    1232           0 :         break;
    1233             :     case WID_PAGE_DATETIMEFIXED:
    1234           0 :         aAny <<= (sal_Bool)GetPage()->getHeaderFooterSettings().mbDateTimeIsFixed;
    1235           0 :         break;
    1236             :     case WID_PAGE_DATETIMETEXT:
    1237             :         {
    1238           0 :             const OUString aText( GetPage()->getHeaderFooterSettings().maDateTimeText );
    1239           0 :             aAny <<= aText;
    1240             :         }
    1241           0 :         break;
    1242             :     case WID_PAGE_DATETIMEFORMAT:
    1243           0 :         aAny <<= (sal_Int32)GetPage()->getHeaderFooterSettings().meDateTimeFormat;
    1244           0 :         break;
    1245             : 
    1246             :     case WID_TRANSITION_TYPE:
    1247           0 :         aAny <<= GetPage()->getTransitionType();
    1248           0 :         break;
    1249             : 
    1250             :     case WID_TRANSITION_SUBTYPE:
    1251           0 :         aAny <<= GetPage()->getTransitionSubtype();
    1252           0 :         break;
    1253             : 
    1254             :     case WID_TRANSITION_DIRECTION:
    1255           0 :         aAny <<= GetPage()->getTransitionDirection();
    1256           0 :         break;
    1257             : 
    1258             :     case WID_TRANSITION_FADE_COLOR:
    1259           0 :         aAny <<= GetPage()->getTransitionFadeColor();
    1260           0 :         break;
    1261             : 
    1262             :     case WID_TRANSITION_DURATION:
    1263           0 :         aAny <<= GetPage()->getTransitionDuration();
    1264           0 :         break;
    1265             : 
    1266             :     default:
    1267           0 :         throw beans::UnknownPropertyException();
    1268             :     }
    1269           0 :     return aAny;
    1270             : }
    1271             : 
    1272           0 : void SAL_CALL SdGenericDrawPage::addPropertyChangeListener( const OUString& , const Reference< beans::XPropertyChangeListener >&  ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {}
    1273           0 : void SAL_CALL SdGenericDrawPage::removePropertyChangeListener( const OUString& , const Reference< beans::XPropertyChangeListener >&  ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {}
    1274           0 : void SAL_CALL SdGenericDrawPage::addVetoableChangeListener( const OUString& , const Reference< beans::XVetoableChangeListener >&  ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {}
    1275           0 : void SAL_CALL SdGenericDrawPage::removeVetoableChangeListener( const OUString& , const Reference< beans::XVetoableChangeListener >&  ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {}
    1276             : 
    1277             : // XMultiPropertySet
    1278          17 : void SAL_CALL SdGenericDrawPage::setPropertyValues( const Sequence< OUString >& aPropertyNames, const Sequence< Any >& aValues ) throw (beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, RuntimeException )
    1279             : {
    1280          17 :     if( aPropertyNames.getLength() != aValues.getLength() )
    1281           0 :         throw lang::IllegalArgumentException();
    1282             : 
    1283          17 :     const OUString* pNames = aPropertyNames.getConstArray();
    1284          17 :     const Any* pValues = aValues.getConstArray();
    1285          17 :     sal_uInt32 nCount = aValues.getLength();
    1286          78 :     while( nCount-- )
    1287             :     {
    1288             :         try
    1289             :         {
    1290          44 :             setPropertyValue( *pNames++, *pValues++ );
    1291             :         }
    1292           4 :         catch( beans::UnknownPropertyException& )
    1293             :         {
    1294             :             // ignore for multi property set
    1295             :             // todo: optimize this!
    1296             :         }
    1297             :     }
    1298          17 : }
    1299             : 
    1300           0 : Sequence< Any > SAL_CALL SdGenericDrawPage::getPropertyValues( const Sequence< OUString >& aPropertyNames ) throw (RuntimeException)
    1301             : {
    1302           0 :     const OUString* pNames = aPropertyNames.getConstArray();
    1303           0 :     sal_uInt32 nCount = aPropertyNames.getLength();
    1304           0 :     Sequence< Any > aValues( nCount );
    1305           0 :     Any* pValues = aValues.getArray();
    1306           0 :     while( nCount-- )
    1307             :     {
    1308           0 :         Any aValue;
    1309             :         try
    1310             :         {
    1311           0 :             aValue = getPropertyValue( *pNames++ );
    1312             :         }
    1313           0 :         catch( beans::UnknownPropertyException& )
    1314             :         {
    1315             :             // ignore for multi property set
    1316             :             // todo: optimize this!
    1317             :         }
    1318           0 :         *pValues++ = aValue;
    1319           0 :     }
    1320           0 :     return aValues;
    1321             : }
    1322             : 
    1323           0 : void SAL_CALL SdGenericDrawPage::addPropertiesChangeListener( const Sequence< OUString >& , const Reference< beans::XPropertiesChangeListener >&  ) throw (RuntimeException)
    1324             : {
    1325           0 : }
    1326             : 
    1327           0 : void SAL_CALL SdGenericDrawPage::removePropertiesChangeListener( const Reference< beans::XPropertiesChangeListener >&  ) throw (RuntimeException)
    1328             : {
    1329           0 : }
    1330             : 
    1331           0 : void SAL_CALL SdGenericDrawPage::firePropertiesChangeEvent( const Sequence< OUString >& , const Reference< beans::XPropertiesChangeListener >&  ) throw (RuntimeException)
    1332             : {
    1333           0 : }
    1334             : 
    1335         839 : Reference< drawing::XShape >  SdGenericDrawPage::_CreateShape( SdrObject *pObj ) const throw()
    1336             : {
    1337             :     DBG_ASSERT( GetPage(), "SdGenericDrawPage::_CreateShape(), can't create shape for disposed page!" );
    1338             :     DBG_ASSERT( pObj, "SdGenericDrawPage::_CreateShape(), invalid call with pObj == 0!" );
    1339             : 
    1340         839 :     if( GetPage() && pObj )
    1341             :     {
    1342         839 :         PresObjKind eKind = GetPage()->GetPresObjKind(pObj);
    1343             : 
    1344         839 :         SvxShape* pShape = NULL;
    1345             : 
    1346         839 :         if(pObj->GetObjInventor() == SdrInventor)
    1347             :         {
    1348         839 :             sal_uInt32 nInventor = pObj->GetObjIdentifier();
    1349         839 :             switch( nInventor )
    1350             :             {
    1351             :             case OBJ_TITLETEXT:
    1352          19 :                 pShape = new SvxShapeText( pObj );
    1353          19 :                 if( GetPage()->GetPageKind() == PK_NOTES && GetPage()->IsMasterPage() )
    1354             :                 {
    1355             :                     // fake a empty PageShape if its a title shape on the master page
    1356           1 :                     pShape->SetShapeType("com.sun.star.presentation.PageShape");
    1357             :                 }
    1358             :                 else
    1359             :                 {
    1360          18 :                     pShape->SetShapeType("com.sun.star.presentation.TitleTextShape");
    1361             :                 }
    1362          19 :                 eKind = PRESOBJ_NONE;
    1363          19 :                 break;
    1364             :             case OBJ_OUTLINETEXT:
    1365          19 :                 pShape = new SvxShapeText( pObj );
    1366          19 :                 pShape->SetShapeType("com.sun.star.presentation.OutlinerShape");
    1367          19 :                 eKind = PRESOBJ_NONE;
    1368          19 :                 break;
    1369             :             }
    1370             :         }
    1371             : 
    1372         839 :         Reference< drawing::XShape >  xShape( pShape );
    1373             : 
    1374         839 :         if(!xShape.is())
    1375         801 :             xShape = SvxFmDrawPage::_CreateShape( pObj );
    1376             : 
    1377             : 
    1378         839 :         if( eKind != PRESOBJ_NONE )
    1379             :         {
    1380          56 :             OUString aShapeType("com.sun.star.presentation.");
    1381             : 
    1382          56 :             switch( eKind )
    1383             :             {
    1384             :             case PRESOBJ_TITLE:
    1385           0 :                 aShapeType += "TitleTextShape";
    1386           0 :                 break;
    1387             :             case PRESOBJ_OUTLINE:
    1388           0 :                 aShapeType += "OutlinerShape";
    1389           0 :                 break;
    1390             :             case PRESOBJ_TEXT:
    1391           3 :                 aShapeType += "SubtitleShape";
    1392           3 :                 break;
    1393             :             case PRESOBJ_GRAPHIC:
    1394           1 :                 aShapeType += "GraphicObjectShape";
    1395           1 :                 break;
    1396             :             case PRESOBJ_OBJECT:
    1397           1 :                 aShapeType += "OLE2Shape";
    1398           1 :                 break;
    1399             :             case PRESOBJ_CHART:
    1400           0 :                 aShapeType += "ChartShape";
    1401           0 :                 break;
    1402             :             case PRESOBJ_ORGCHART:
    1403           0 :                 aShapeType += "OrgChartShape";
    1404           0 :                 break;
    1405             :             case PRESOBJ_CALC:
    1406           0 :                 aShapeType += "CalcShape";
    1407           0 :                 break;
    1408             :             case PRESOBJ_TABLE:
    1409           0 :                 aShapeType += "TableShape";
    1410           0 :                 break;
    1411             :             case PRESOBJ_MEDIA:
    1412           0 :                 aShapeType += "MediaShape";
    1413           0 :                 break;
    1414             :             case PRESOBJ_PAGE:
    1415           9 :                 aShapeType += "PageShape";
    1416           9 :                 break;
    1417             :             case PRESOBJ_HANDOUT:
    1418           6 :                 aShapeType += "HandoutShape";
    1419           6 :                 break;
    1420             :             case PRESOBJ_NOTES:
    1421          10 :                 aShapeType += "NotesShape";
    1422          10 :                 break;
    1423             :             case PRESOBJ_FOOTER:
    1424           8 :                 aShapeType += "FooterShape";
    1425           8 :                 break;
    1426             :             case PRESOBJ_HEADER:
    1427           2 :                 aShapeType += "HeaderShape";
    1428           2 :                 break;
    1429             :             case PRESOBJ_SLIDENUMBER:
    1430           8 :                 aShapeType += "SlideNumberShape";
    1431           8 :                 break;
    1432             :             case PRESOBJ_DATETIME:
    1433           8 :                 aShapeType += "DateTimeShape";
    1434           8 :                 break;
    1435             :             case PRESOBJ_NONE:
    1436             :             case PRESOBJ_IMAGE:
    1437             :             case PRESOBJ_MAX:
    1438           0 :                 break;
    1439             :             }
    1440             : 
    1441          56 :             if( !pShape )
    1442          56 :                 pShape = SvxShape::getImplementation( xShape );
    1443             : 
    1444          56 :             if( pShape )
    1445          56 :                 pShape->SetShapeType( aShapeType );
    1446             :         }
    1447             : 
    1448             :         // SdXShape aggregiert SvxShape
    1449         839 :         new SdXShape( SvxShape::getImplementation( xShape ), GetModel() );
    1450         839 :         return xShape;
    1451             :     }
    1452             :     else
    1453             :     {
    1454           0 :         return SvxFmDrawPage::_CreateShape( pObj );
    1455             :     }
    1456             : 
    1457             : }
    1458             : 
    1459             : //----------------------------------------------------------------------
    1460             : 
    1461             : // XServiceInfo
    1462          15 : Sequence< OUString > SAL_CALL SdGenericDrawPage::getSupportedServiceNames()
    1463             :     throw(uno::RuntimeException)
    1464             : {
    1465          15 :     Sequence< OUString > aSeq( SvxFmDrawPage::getSupportedServiceNames() );
    1466             :     comphelper::ServiceInfoHelper::addToSequence( aSeq, 3, "com.sun.star.drawing.GenericDrawPage",
    1467             :                                                   "com.sun.star.document.LinkTarget",
    1468          15 :                                                   "com.sun.star.document.LinkTargetSupplier");
    1469          15 :     return aSeq;
    1470             : }
    1471             : 
    1472             : //----------------------------------------------------------------------
    1473             : 
    1474             : // XLinkTargetSupplier
    1475           0 : Reference< container::XNameAccess > SAL_CALL SdGenericDrawPage::getLinks(  )
    1476             :     throw(uno::RuntimeException)
    1477             : {
    1478           0 :     return new SdPageLinkTargets( (SdGenericDrawPage*)this );
    1479             : }
    1480             : 
    1481             : //----------------------------------------------------------------------
    1482             : 
    1483           0 : void SdGenericDrawPage::setBackground( const Any& ) throw(lang::IllegalArgumentException)
    1484             : {
    1485             :     OSL_FAIL( "Don't call me, I'm useless!" );
    1486           0 : }
    1487             : 
    1488             : //----------------------------------------------------------------------
    1489             : 
    1490           0 : void SdGenericDrawPage::getBackground( Any& ) throw()
    1491             : {
    1492             :     OSL_FAIL( "Don't call me, I'm useless!" );
    1493           0 : }
    1494             : 
    1495             : //----------------------------------------------------------------------
    1496             : 
    1497           0 : OUString SdGenericDrawPage::getBookmarkURL() const
    1498             : {
    1499           0 :     OUStringBuffer aRet;
    1500           0 :     if( SvxFmDrawPage::mpPage )
    1501             :     {
    1502           0 :         OUString aFileName( static_cast<SdPage*>(SvxFmDrawPage::mpPage)->GetFileName() );
    1503           0 :         if( !aFileName.isEmpty() )
    1504             :         {
    1505           0 :             const OUString aBookmarkName( SdDrawPage::getPageApiNameFromUiName( static_cast<SdPage*>(SvxFmDrawPage::mpPage)->GetBookmarkName() ) );
    1506           0 :             aRet.append( aFileName );
    1507           0 :             aRet.append( (sal_Unicode)'#' );
    1508           0 :             aRet.append( aBookmarkName );
    1509           0 :         }
    1510             :     }
    1511             : 
    1512           0 :     return aRet.makeStringAndClear();
    1513             : }
    1514             : 
    1515             : //----------------------------------------------------------------------
    1516           0 : void SdGenericDrawPage::setBookmarkURL( rtl::OUString& rURL )
    1517             : {
    1518           0 :     if( SvxFmDrawPage::mpPage )
    1519             :     {
    1520           0 :         sal_Int32 nIndex = rURL.indexOf( (sal_Unicode)'#' );
    1521           0 :         if( nIndex != -1 )
    1522             :         {
    1523           0 :             const String aFileName( rURL.copy( 0, nIndex ) );
    1524           0 :             const String aBookmarkName( SdDrawPage::getUiNameFromPageApiName( rURL.copy( nIndex+1 )  ) );
    1525             : 
    1526           0 :             if( aFileName.Len() && aBookmarkName.Len() )
    1527             :             {
    1528           0 :                 static_cast<SdPage*>(SvxFmDrawPage::mpPage)->DisconnectLink();
    1529           0 :                 static_cast<SdPage*>(SvxFmDrawPage::mpPage)->SetFileName( aFileName );
    1530           0 :                 static_cast<SdPage*>(SvxFmDrawPage::mpPage)->SetBookmarkName( aBookmarkName );
    1531           0 :                 static_cast<SdPage*>(SvxFmDrawPage::mpPage)->ConnectLink();
    1532           0 :             }
    1533             :         }
    1534             :     }
    1535           0 : }
    1536             : 
    1537             : //----------------------------------------------------------------------
    1538           0 : Reference< drawing::XShape > SAL_CALL SdGenericDrawPage::combine( const Reference< drawing::XShapes >& xShapes )
    1539             :     throw( uno::RuntimeException )
    1540             : {
    1541           0 :     ::SolarMutexGuard aGuard;
    1542             : 
    1543           0 :     throwIfDisposed();
    1544             : 
    1545             :     DBG_ASSERT(SvxFmDrawPage::mpPage,"SdrPage ist NULL! [CL]");
    1546             :     DBG_ASSERT(mpView, "SdrView ist NULL! [CL]");
    1547             : 
    1548           0 :     Reference< drawing::XShape > xShape;
    1549           0 :     if(mpView==NULL||!xShapes.is()||GetPage()==NULL)
    1550             :         return xShape;
    1551             : 
    1552           0 :     SdrPageView* pPageView = mpView->ShowSdrPage( GetPage() );
    1553             : 
    1554           0 :     _SelectObjectsInView( xShapes, pPageView );
    1555             : 
    1556           0 :     mpView->CombineMarkedObjects( sal_False );
    1557             : 
    1558           0 :     mpView->AdjustMarkHdl();
    1559           0 :     const SdrMarkList& rMarkList = mpView->GetMarkedObjectList();
    1560           0 :     if( rMarkList.GetMarkCount() == 1 )
    1561             :     {
    1562           0 :         SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
    1563           0 :         if( pObj )
    1564           0 :             xShape = Reference< drawing::XShape >::query( pObj->getUnoShape() );
    1565             :     }
    1566             : 
    1567           0 :     mpView->HideSdrPage();
    1568             : 
    1569           0 :     GetModel()->SetModified();
    1570             : 
    1571           0 :     return xShape;
    1572             : }
    1573             : 
    1574             : //----------------------------------------------------------------------
    1575           0 : void SAL_CALL SdGenericDrawPage::split( const Reference< drawing::XShape >& xGroup )
    1576             :     throw( uno::RuntimeException )
    1577             : {
    1578           0 :     ::SolarMutexGuard aGuard;
    1579             : 
    1580           0 :     throwIfDisposed();
    1581             : 
    1582           0 :     if(mpView==NULL||!xGroup.is()||GetPage()==NULL)
    1583           0 :         return;
    1584             : 
    1585           0 :     SdrPageView* pPageView = mpView->ShowSdrPage( GetPage() );
    1586           0 :     _SelectObjectInView( xGroup, pPageView );
    1587           0 :     mpView->DismantleMarkedObjects( sal_False );
    1588           0 :     mpView->HideSdrPage();
    1589             : 
    1590           0 :     GetModel()->SetModified();
    1591             : }
    1592             : 
    1593             : //----------------------------------------------------------------------
    1594           0 : Reference< drawing::XShape > SAL_CALL SdGenericDrawPage::bind( const Reference< drawing::XShapes >& xShapes )
    1595             :     throw( uno::RuntimeException )
    1596             : {
    1597           0 :     ::SolarMutexGuard aGuard;
    1598             : 
    1599           0 :     throwIfDisposed();
    1600             : 
    1601           0 :     uno::Reference< drawing::XShape > xShape;
    1602           0 :     if(mpView==NULL||!xShapes.is()||GetPage()==NULL)
    1603             :         return xShape;
    1604             : 
    1605           0 :     SdrPageView* pPageView = mpView->ShowSdrPage( GetPage() );
    1606             : 
    1607           0 :     _SelectObjectsInView( xShapes, pPageView );
    1608             : 
    1609           0 :     mpView->CombineMarkedObjects( sal_True );
    1610             : 
    1611           0 :     mpView->AdjustMarkHdl();
    1612           0 :     const SdrMarkList& rMarkList = mpView->GetMarkedObjectList();
    1613           0 :     if( rMarkList.GetMarkCount() == 1 )
    1614             :     {
    1615           0 :         SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
    1616           0 :         if( pObj )
    1617           0 :             xShape = Reference< drawing::XShape >::query( pObj->getUnoShape() );
    1618             :     }
    1619             : 
    1620           0 :     mpView->HideSdrPage();
    1621             : 
    1622           0 :     GetModel()->SetModified();
    1623             : 
    1624           0 :     return xShape;
    1625             : }
    1626             : 
    1627             : //----------------------------------------------------------------------
    1628           0 : void SAL_CALL SdGenericDrawPage::unbind( const Reference< drawing::XShape >& xShape )
    1629             :     throw( uno::RuntimeException )
    1630             : {
    1631           0 :     ::SolarMutexGuard aGuard;
    1632             : 
    1633           0 :     throwIfDisposed();
    1634             : 
    1635           0 :     if(mpView==NULL||!xShape.is()||GetPage()==NULL)
    1636           0 :         return;
    1637             : 
    1638           0 :     SdrPageView* pPageView = mpView->ShowSdrPage( GetPage() );
    1639           0 :     _SelectObjectInView( xShape, pPageView );
    1640           0 :     mpView->DismantleMarkedObjects( sal_True );
    1641           0 :     mpView->HideSdrPage();
    1642             : 
    1643           0 :     GetModel()->SetModified();
    1644             : }
    1645             : 
    1646           4 : void SdGenericDrawPage::SetLftBorder( sal_Int32 nValue )
    1647             : {
    1648           4 :     if( nValue != GetPage()->GetLftBorder() )
    1649             :     {
    1650           1 :         SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel();
    1651           1 :         const PageKind ePageKind = GetPage()->GetPageKind();
    1652             : 
    1653           1 :         sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind);
    1654           2 :         for (i = 0; i < nPageCnt; i++)
    1655             :         {
    1656           1 :             SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind);
    1657           1 :             pPage->SetLftBorder( nValue );
    1658             :         }
    1659             : 
    1660           1 :         nPageCnt = pDoc->GetSdPageCount(ePageKind);
    1661             : 
    1662           2 :         for (i = 0; i < nPageCnt; i++)
    1663             :         {
    1664           1 :             SdPage* pPage = pDoc->GetSdPage(i, ePageKind);
    1665           1 :             pPage->SetLftBorder( nValue );
    1666             :         }
    1667             :     }
    1668           4 : }
    1669             : 
    1670           4 : void SdGenericDrawPage::SetRgtBorder( sal_Int32 nValue )
    1671             : {
    1672           4 :     if( nValue != GetPage()->GetRgtBorder() )
    1673             :     {
    1674           1 :         SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel();
    1675           1 :         const PageKind ePageKind = GetPage()->GetPageKind();
    1676             : 
    1677           1 :         sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind);
    1678           2 :         for (i = 0; i < nPageCnt; i++)
    1679             :         {
    1680           1 :             SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind);
    1681           1 :             pPage->SetRgtBorder( nValue );
    1682             :         }
    1683             : 
    1684           1 :         nPageCnt = pDoc->GetSdPageCount(ePageKind);
    1685             : 
    1686           2 :         for (i = 0; i < nPageCnt; i++)
    1687             :         {
    1688           1 :             SdPage* pPage = pDoc->GetSdPage(i, ePageKind);
    1689           1 :             pPage->SetRgtBorder( nValue );
    1690             :         }
    1691             :     }
    1692           4 : }
    1693             : 
    1694           4 : void SdGenericDrawPage::SetUppBorder( sal_Int32 nValue )
    1695             : {
    1696           4 :     if( nValue != GetPage()->GetUppBorder() )
    1697             :     {
    1698           1 :         SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel();
    1699           1 :         const PageKind ePageKind = GetPage()->GetPageKind();
    1700             : 
    1701           1 :         sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind);
    1702           2 :         for (i = 0; i < nPageCnt; i++)
    1703             :         {
    1704           1 :             SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind);
    1705           1 :             pPage->SetUppBorder( nValue );
    1706             :         }
    1707             : 
    1708           1 :         nPageCnt = pDoc->GetSdPageCount(ePageKind);
    1709             : 
    1710           2 :         for (i = 0; i < nPageCnt; i++)
    1711             :         {
    1712           1 :             SdPage* pPage = pDoc->GetSdPage(i, ePageKind);
    1713           1 :             pPage->SetUppBorder( nValue );
    1714             :         }
    1715             :     }
    1716           4 : }
    1717             : 
    1718           4 : void SdGenericDrawPage::SetLwrBorder( sal_Int32 nValue )
    1719             : {
    1720           4 :     if( nValue != GetPage()->GetLwrBorder() )
    1721             :     {
    1722           1 :         SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel();
    1723           1 :         const PageKind ePageKind = GetPage()->GetPageKind();
    1724             : 
    1725           1 :         sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind);
    1726           2 :         for (i = 0; i < nPageCnt; i++)
    1727             :         {
    1728           1 :             SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind);
    1729           1 :             pPage->SetLwrBorder( nValue );
    1730             :         }
    1731             : 
    1732           1 :         nPageCnt = pDoc->GetSdPageCount(ePageKind);
    1733             : 
    1734           2 :         for (i = 0; i < nPageCnt; i++)
    1735             :         {
    1736           1 :             SdPage* pPage = pDoc->GetSdPage(i, ePageKind);
    1737           1 :             pPage->SetLwrBorder( nValue );
    1738             :         }
    1739             :     }
    1740           4 : }
    1741             : 
    1742          12 : static void refreshpage( SdDrawDocument* pDoc, const PageKind ePageKind )
    1743             : {
    1744          12 :     ::sd::DrawDocShell* pDocShell = pDoc->GetDocSh();
    1745          12 :     if ( pDocShell )
    1746             :     {
    1747          12 :         ::sd::ViewShell* pViewSh = pDocShell->GetViewShell();
    1748             : 
    1749          12 :         if( pViewSh )
    1750             :         {
    1751           0 :             if( pViewSh->ISA(::sd::DrawViewShell ) )
    1752           0 :                 static_cast< ::sd::DrawViewShell*>(pViewSh)->ResetActualPage();
    1753             : 
    1754           0 :             Size aPageSize = pDoc->GetSdPage(0, ePageKind)->GetSize();
    1755           0 :             const long nWidth = aPageSize.Width();
    1756           0 :             const long nHeight = aPageSize.Height();
    1757             : 
    1758           0 :             Point aPageOrg = Point(nWidth, nHeight / 2);
    1759           0 :             Size aViewSize = Size(nWidth * 3, nHeight * 2);
    1760             : 
    1761           0 :             pDoc->SetMaxObjSize(aViewSize);
    1762             : 
    1763           0 :             pViewSh->InitWindows(aPageOrg, aViewSize, Point(-1, -1), sal_True);
    1764             : 
    1765           0 :             pViewSh->UpdateScrollBars();
    1766             :         }
    1767             :     }
    1768          12 : }
    1769             : 
    1770          13 : void SdGenericDrawPage::SetWidth( sal_Int32 nWidth )
    1771             : {
    1772          13 :     Size aSize( GetPage()->GetSize() );
    1773          13 :     if( aSize.getWidth() != nWidth )
    1774             :     {
    1775           6 :         aSize.setWidth( nWidth );
    1776             : 
    1777           6 :         SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel();
    1778           6 :         const PageKind ePageKind = GetPage()->GetPageKind();
    1779             : 
    1780           6 :         sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind);
    1781          12 :         for (i = 0; i < nPageCnt; i++)
    1782             :         {
    1783           6 :             SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind);
    1784           6 :             pPage->SetSize(aSize);
    1785             :         }
    1786             : 
    1787           6 :         nPageCnt = pDoc->GetSdPageCount(ePageKind);
    1788             : 
    1789          12 :         for (i = 0; i < nPageCnt; i++)
    1790             :         {
    1791           6 :             SdPage* pPage = pDoc->GetSdPage(i, ePageKind);
    1792           6 :             pPage->SetSize(aSize);
    1793             :         }
    1794             : 
    1795           6 :         refreshpage( pDoc, ePageKind );
    1796             :     }
    1797          13 : }
    1798             : 
    1799          13 : void SdGenericDrawPage::SetHeight( sal_Int32 nHeight )
    1800             : {
    1801          13 :     Size aSize( GetPage()->GetSize() );
    1802          13 :     if( aSize.getHeight() != nHeight )
    1803             :     {
    1804           6 :         aSize.setHeight( nHeight );
    1805             : 
    1806           6 :         SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel();
    1807           6 :         const PageKind ePageKind = GetPage()->GetPageKind();
    1808             : 
    1809           6 :         sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind);
    1810          12 :         for (i = 0; i < nPageCnt; i++)
    1811             :         {
    1812           6 :             SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind);
    1813           6 :             pPage->SetSize(aSize);
    1814             :         }
    1815             : 
    1816           6 :         nPageCnt = pDoc->GetSdPageCount(ePageKind);
    1817             : 
    1818          12 :         for (i = 0; i < nPageCnt; i++)
    1819             :         {
    1820           6 :             SdPage* pPage = pDoc->GetSdPage(i, ePageKind);
    1821           6 :             pPage->SetSize(aSize);
    1822             :         }
    1823             : 
    1824           6 :         refreshpage( pDoc, ePageKind );
    1825             :     }
    1826          13 : }
    1827             : 
    1828             : // XInterface
    1829           0 : void SdGenericDrawPage::release() throw()
    1830             : {
    1831             : 
    1832           0 :     OWeakAggObject::release();
    1833           0 : }
    1834             : 
    1835             : // XComponent
    1836          59 : void SdGenericDrawPage::disposing() throw()
    1837             : {
    1838          59 :     mpModel = 0;
    1839          59 :     SvxFmDrawPage::disposing();
    1840          59 : }
    1841             : 
    1842             : // XAnimationNodeSupplier
    1843          40 : Reference< XAnimationNode > SAL_CALL SdGenericDrawPage::getAnimationNode() throw (uno::RuntimeException)
    1844             : {
    1845          40 :     ::SolarMutexGuard aGuard;
    1846             : 
    1847          40 :     throwIfDisposed();
    1848             : 
    1849          40 :     SdPage *pSdPage = static_cast<SdPage*>(SvxFmDrawPage::mpPage);
    1850             : 
    1851             : 
    1852          40 :     return pSdPage->getAnimationNode();
    1853             : }
    1854             : 
    1855             : //========================================================================
    1856             : // SdPageLinkTargets
    1857             : //========================================================================
    1858             : 
    1859           0 : SdPageLinkTargets::SdPageLinkTargets( SdGenericDrawPage* pUnoPage ) throw()
    1860             : {
    1861           0 :     mxPage = pUnoPage;
    1862           0 :     mpUnoPage = pUnoPage;
    1863           0 : }
    1864             : 
    1865           0 : SdPageLinkTargets::~SdPageLinkTargets() throw()
    1866             : {
    1867           0 : }
    1868             : 
    1869             :     // XElementAccess
    1870           0 : uno::Type SAL_CALL SdPageLinkTargets::getElementType()
    1871             :     throw(uno::RuntimeException)
    1872             : {
    1873           0 :     return ITYPE(beans::XPropertySet);
    1874             : }
    1875             : 
    1876           0 : sal_Bool SAL_CALL SdPageLinkTargets::hasElements()
    1877             :     throw(uno::RuntimeException)
    1878             : {
    1879           0 :     ::SolarMutexGuard aGuard;
    1880             : 
    1881           0 :     SdPage* pPage = mpUnoPage->GetPage();
    1882           0 :     if( pPage != NULL )
    1883             :     {
    1884           0 :         SdrObjListIter aIter( *pPage, IM_DEEPWITHGROUPS );
    1885             : 
    1886           0 :         while( aIter.IsMore() )
    1887             :         {
    1888           0 :             SdrObject* pObj = aIter.Next();
    1889           0 :             String aStr( pObj->GetName() );
    1890           0 :             if( !aStr.Len() && pObj->ISA( SdrOle2Obj ) )
    1891           0 :                 aStr = static_cast< const SdrOle2Obj* >( pObj )->GetPersistName();
    1892           0 :             if( aStr.Len() )
    1893           0 :                 return sal_True;
    1894           0 :         }
    1895             :     }
    1896             : 
    1897           0 :     return sal_False;
    1898             : }
    1899             : 
    1900             : // container::XNameAccess
    1901             : 
    1902             : // XNameAccess
    1903           0 : Any SAL_CALL SdPageLinkTargets::getByName( const OUString& aName )
    1904             :     throw(container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException)
    1905             : {
    1906           0 :     ::SolarMutexGuard aGuard;
    1907             : 
    1908           0 :     SdPage* pPage = mpUnoPage->GetPage();
    1909           0 :     if( pPage != NULL )
    1910             :     {
    1911           0 :         SdrObject* pObj = FindObject( aName );
    1912           0 :         if( pObj )
    1913             :         {
    1914           0 :             Reference< beans::XPropertySet > aRef( pObj->getUnoShape(), uno::UNO_QUERY );
    1915           0 :             return makeAny( aRef );
    1916             :         }
    1917             :     }
    1918             : 
    1919           0 :     throw container::NoSuchElementException();
    1920             : }
    1921             : 
    1922           0 : Sequence< OUString > SAL_CALL SdPageLinkTargets::getElementNames()
    1923             :     throw(uno::RuntimeException)
    1924             : {
    1925           0 :     ::SolarMutexGuard aGuard;
    1926             : 
    1927           0 :     sal_uInt32 nObjCount = 0;
    1928             : 
    1929           0 :     SdPage* pPage = mpUnoPage->GetPage();
    1930           0 :     if( pPage != NULL )
    1931             :     {
    1932           0 :         SdrObjListIter aIter( *pPage, IM_DEEPWITHGROUPS );
    1933           0 :         while( aIter.IsMore() )
    1934             :         {
    1935           0 :             SdrObject* pObj = aIter.Next();
    1936           0 :             String aStr( pObj->GetName() );
    1937           0 :             if( !aStr.Len() && pObj->ISA( SdrOle2Obj ) )
    1938           0 :                 aStr = static_cast< const SdrOle2Obj* >( pObj )->GetPersistName();
    1939           0 :             if( aStr.Len() )
    1940           0 :                 nObjCount++;
    1941           0 :         }
    1942             :     }
    1943             : 
    1944           0 :     Sequence< OUString > aSeq( nObjCount );
    1945           0 :     if( nObjCount > 0 )
    1946             :     {
    1947           0 :         OUString* pStr = aSeq.getArray();
    1948             : 
    1949           0 :         SdrObjListIter aIter( *pPage, IM_DEEPWITHGROUPS );
    1950           0 :         while( aIter.IsMore() )
    1951             :         {
    1952           0 :             SdrObject* pObj = aIter.Next();
    1953           0 :             String aStr( pObj->GetName() );
    1954           0 :             if( !aStr.Len() && pObj->ISA( SdrOle2Obj ) )
    1955           0 :                 aStr = static_cast< const SdrOle2Obj* >( pObj )->GetPersistName();
    1956           0 :             if( aStr.Len() )
    1957           0 :                 *pStr++ = aStr;
    1958           0 :         }
    1959             :     }
    1960             : 
    1961           0 :     return aSeq;
    1962             : }
    1963             : 
    1964           0 : sal_Bool SAL_CALL SdPageLinkTargets::hasByName( const OUString& aName )
    1965             :     throw(uno::RuntimeException)
    1966             : {
    1967           0 :     ::SolarMutexGuard aGuard;
    1968             : 
    1969           0 :     return FindObject( aName ) != NULL;
    1970             : }
    1971             : 
    1972           0 : SdrObject* SdPageLinkTargets::FindObject( const String& rName ) const throw()
    1973             : {
    1974           0 :     SdPage* pPage = mpUnoPage->GetPage();
    1975           0 :     if( pPage == NULL )
    1976           0 :         return NULL;
    1977             : 
    1978           0 :     SdrObjListIter aIter( *pPage, IM_DEEPWITHGROUPS );
    1979             : 
    1980           0 :     while( aIter.IsMore() )
    1981             :     {
    1982           0 :         SdrObject* pObj = aIter.Next();
    1983           0 :         String aStr( pObj->GetName() );
    1984           0 :         if( !aStr.Len() && pObj->ISA( SdrOle2Obj ) )
    1985           0 :             aStr = static_cast< const SdrOle2Obj* >( pObj )->GetPersistName();
    1986           0 :         if( aStr.Len() && (aStr == rName) )
    1987           0 :             return pObj;
    1988           0 :     }
    1989             : 
    1990           0 :     return NULL;
    1991             : }
    1992             : 
    1993             : // XServiceInfo
    1994           0 : OUString SAL_CALL SdPageLinkTargets::getImplementationName()
    1995             :     throw(uno::RuntimeException)
    1996             : {
    1997           0 :     return OUString( "SdPageLinkTargets" );
    1998             : }
    1999             : 
    2000           0 : sal_Bool SAL_CALL SdPageLinkTargets::supportsService( const OUString& ServiceName )
    2001             :     throw(uno::RuntimeException)
    2002             : {
    2003           0 :     return comphelper::ServiceInfoHelper::supportsService( ServiceName, getSupportedServiceNames() );
    2004             : }
    2005             : 
    2006           0 : Sequence< OUString > SAL_CALL SdPageLinkTargets::getSupportedServiceNames()
    2007             :     throw(uno::RuntimeException)
    2008             : {
    2009           0 :     const OUString aSN( "com.sun.star.document.LinkTargets" );
    2010           0 :     Sequence< OUString > aSeq( &aSN, 1);
    2011           0 :     return aSeq;
    2012             : }
    2013             : 
    2014             : //========================================================================
    2015             : // SdDrawPage
    2016             : //========================================================================
    2017             : 
    2018          54 : SdDrawPage::SdDrawPage(  SdXImpressDocument* pModel, SdPage* pPage ) throw()
    2019          54 : : SdGenericDrawPage( pModel, pPage, ImplGetDrawPagePropertySet( pModel->IsImpressDocument(), pPage->GetPageKind() ) )
    2020             : {
    2021          54 : }
    2022             : 
    2023         102 : SdDrawPage::~SdDrawPage() throw()
    2024             : {
    2025         102 : }
    2026             : 
    2027             : // XInterface
    2028        1242 : Any SAL_CALL SdDrawPage::queryInterface( const uno::Type & rType )
    2029             :     throw(uno::RuntimeException)
    2030             : {
    2031        1242 :     if( rType == ITYPE( drawing::XMasterPageTarget ) )
    2032             :     {
    2033          13 :         return makeAny( Reference< drawing::XMasterPageTarget >( this ) );
    2034             :     }
    2035             :     else
    2036             :     {
    2037        1229 :         if( mbIsImpressDocument )
    2038             :         {
    2039        1229 :             const PageKind ePageKind = GetPage() ? GetPage()->GetPageKind() : PK_STANDARD;
    2040             : 
    2041        1229 :             if( ePageKind != PK_HANDOUT && rType == ITYPE( presentation::XPresentationPage ) )
    2042             :             {
    2043           9 :                 return makeAny( Reference< presentation::XPresentationPage >( this ) );
    2044             :             }
    2045             :         }
    2046             :     }
    2047             : 
    2048        1220 :     return SdGenericDrawPage::queryInterface( rType );
    2049             : }
    2050             : 
    2051        3982 : void SAL_CALL SdDrawPage::acquire() throw()
    2052             : {
    2053        3982 :     SvxDrawPage::acquire();
    2054        3982 : }
    2055             : 
    2056        3979 : void SAL_CALL SdDrawPage::release() throw()
    2057             : {
    2058        3979 :     SvxDrawPage::release();
    2059        3979 : }
    2060             : 
    2061        1582 : UNO3_GETIMPLEMENTATION2_IMPL( SdDrawPage, SdGenericDrawPage );
    2062             : 
    2063             : // XTypeProvider
    2064           0 : Sequence< uno::Type > SAL_CALL SdDrawPage::getTypes() throw(uno::RuntimeException)
    2065             : {
    2066           0 :     ::SolarMutexGuard aGuard;
    2067             : 
    2068           0 :     throwIfDisposed();
    2069             : 
    2070           0 :     if( maTypeSequence.getLength() == 0 )
    2071             :     {
    2072           0 :         const PageKind ePageKind = GetPage() ? GetPage()->GetPageKind() : PK_STANDARD;
    2073           0 :         sal_Bool bPresPage = mbIsImpressDocument && ePageKind != PK_HANDOUT;
    2074             : 
    2075             :         // Collect the types of this class.
    2076           0 :         ::std::vector<uno::Type> aTypes;
    2077           0 :         aTypes.reserve(13);
    2078           0 :         aTypes.push_back(ITYPE(drawing::XDrawPage));
    2079           0 :         aTypes.push_back(ITYPE(beans::XPropertySet));
    2080           0 :         aTypes.push_back(ITYPE(container::XNamed));
    2081           0 :         aTypes.push_back(ITYPE(drawing::XMasterPageTarget));
    2082           0 :         aTypes.push_back(ITYPE(lang::XServiceInfo));
    2083           0 :         aTypes.push_back(ITYPE(util::XReplaceable));
    2084           0 :         aTypes.push_back(ITYPE(document::XLinkTargetSupplier));
    2085           0 :         aTypes.push_back(ITYPE( drawing::XShapeCombiner ));
    2086           0 :         aTypes.push_back(ITYPE( drawing::XShapeBinder ));
    2087           0 :         aTypes.push_back(ITYPE( office::XAnnotationAccess ));
    2088           0 :         aTypes.push_back(ITYPE( beans::XMultiPropertySet ));
    2089           0 :         if( bPresPage )
    2090           0 :             aTypes.push_back(ITYPE(presentation::XPresentationPage));
    2091           0 :         if( bPresPage && ePageKind == PK_STANDARD )
    2092           0 :             aTypes.push_back(ITYPE(XAnimationNodeSupplier));
    2093             : 
    2094             :         // Get types of base class.
    2095           0 :         const Sequence< uno::Type > aBaseTypes( SdGenericDrawPage::getTypes() );
    2096           0 :         const sal_Int32 nBaseTypes = aBaseTypes.getLength();
    2097           0 :         const uno::Type* pBaseTypes = aBaseTypes.getConstArray();
    2098             : 
    2099             :         // Join those types in a sequence.
    2100           0 :         maTypeSequence.realloc(aTypes.size() + nBaseTypes);
    2101           0 :         uno::Type* pTypes = maTypeSequence.getArray();
    2102           0 :         ::std::vector<uno::Type>::const_iterator iType;
    2103           0 :         for (iType=aTypes.begin(); iType!=aTypes.end(); ++iType)
    2104           0 :             *pTypes++ = *iType;
    2105           0 :         for( sal_Int32 nType = 0; nType < nBaseTypes; nType++ )
    2106           0 :             *pTypes++ = *pBaseTypes++;
    2107             :     }
    2108             : 
    2109           0 :     return maTypeSequence;
    2110             : }
    2111             : 
    2112             : namespace
    2113             : {
    2114             :     class theSdDrawPageImplementationId : public rtl::Static< UnoTunnelIdInit, theSdDrawPageImplementationId > {};
    2115             : }
    2116             : 
    2117           0 : Sequence< sal_Int8 > SAL_CALL SdDrawPage::getImplementationId() throw(uno::RuntimeException)
    2118             : {
    2119           0 :     return theSdDrawPageImplementationId::get().getSeq();
    2120             : }
    2121             : 
    2122           0 : OUString SdDrawPage::getPageApiName( SdPage* pPage )
    2123             : {
    2124           0 :     return ::getPageApiName( pPage );
    2125             : }
    2126             : 
    2127           0 : OUString getPageApiName( SdPage* pPage )
    2128             : {
    2129           0 :     OUString aPageName;
    2130             : 
    2131           0 :     if(pPage)
    2132             :     {
    2133           0 :         aPageName = pPage->GetRealName();
    2134             : 
    2135           0 :         if( aPageName.isEmpty() )
    2136             :         {
    2137           0 :             OUStringBuffer sBuffer;
    2138           0 :             sBuffer.appendAscii( sEmptyPageName );
    2139           0 :             const sal_Int32 nPageNum = ( ( pPage->GetPageNum() - 1 ) >> 1 ) + 1;
    2140           0 :             sBuffer.append( nPageNum );
    2141           0 :             aPageName = sBuffer.makeStringAndClear();
    2142             :         }
    2143             :     }
    2144             : 
    2145           0 :     return aPageName;
    2146             : }
    2147             : 
    2148             : 
    2149           0 : OUString getPageApiNameFromUiName( const String& rUIName )
    2150             : {
    2151           0 :     OUString aApiName;
    2152             : 
    2153           0 :     String aDefPageName(SdResId(STR_PAGE));
    2154           0 :     aDefPageName += sal_Unicode( ' ' );
    2155             : 
    2156           0 :     if( rUIName.Equals( aDefPageName, 0, aDefPageName.Len() ) )
    2157             :     {
    2158           0 :         aApiName = OUString( RTL_CONSTASCII_USTRINGPARAM( sEmptyPageName ) );
    2159           0 :         aApiName += rUIName.Copy( aDefPageName.Len() );
    2160             :     }
    2161             :     else
    2162             :     {
    2163           0 :         aApiName = rUIName;
    2164             :     }
    2165             : 
    2166           0 :     return aApiName;
    2167             : }
    2168             : 
    2169           0 : OUString SdDrawPage::getPageApiNameFromUiName( const String& rUIName )
    2170             : {
    2171           0 :     return ::getPageApiNameFromUiName( rUIName );
    2172             : }
    2173             : 
    2174           0 : String getUiNameFromPageApiNameImpl( const OUString& rApiName )
    2175             : {
    2176           0 :     const String aDefPageName(RTL_CONSTASCII_USTRINGPARAM( sEmptyPageName ));
    2177           0 :     if( rApiName.compareTo( aDefPageName, aDefPageName.Len() ) == 0 )
    2178             :     {
    2179           0 :         OUString aNumber( rApiName.copy( sizeof( sEmptyPageName ) - 1 ) );
    2180             : 
    2181             :         // create the page number
    2182           0 :         sal_Int32 nPageNumber = aNumber.toInt32();
    2183             : 
    2184             :         // check if there are non number characters in the number part
    2185           0 :         const sal_Int32 nChars = aNumber.getLength();
    2186           0 :         const sal_Unicode* pString = aNumber.getStr();
    2187             :         sal_Int32 nChar;
    2188           0 :         for( nChar = 0; nChar < nChars; nChar++, pString++ )
    2189             :         {
    2190           0 :             if((*pString < sal_Unicode('0')) || (*pString > sal_Unicode('9')))
    2191             :             {
    2192             :                 // found a non number character, so this is not the default
    2193             :                 // name for this page
    2194           0 :                 nPageNumber = -1;
    2195           0 :                 break;
    2196             :             }
    2197             :         }
    2198             : 
    2199           0 :         if( nPageNumber != -1)
    2200             :         {
    2201           0 :             OUStringBuffer sBuffer;
    2202           0 :             sBuffer.append( String(SdResId(STR_PAGE)) );
    2203           0 :             sBuffer.append( sal_Unicode( ' ' ) );
    2204           0 :             sBuffer.append( aNumber );
    2205           0 :             return sBuffer.makeStringAndClear();
    2206           0 :         }
    2207             :     }
    2208             : 
    2209           0 :     return rApiName;
    2210             : }
    2211             : 
    2212           0 : String SdDrawPage::getUiNameFromPageApiName( const OUString& rApiName )
    2213             : {
    2214           0 :     return getUiNameFromPageApiNameImpl( rApiName );
    2215             : }
    2216             : 
    2217             : // XServiceInfo
    2218           0 : OUString SAL_CALL SdDrawPage::getImplementationName() throw(uno::RuntimeException)
    2219             : {
    2220           0 :     return OUString( "SdDrawPage" );
    2221             : }
    2222             : 
    2223           8 : Sequence< OUString > SAL_CALL SdDrawPage::getSupportedServiceNames() throw(uno::RuntimeException)
    2224             : {
    2225           8 :     ::SolarMutexGuard aGuard;
    2226             : 
    2227           8 :     throwIfDisposed();
    2228             : 
    2229           8 :     Sequence< OUString > aSeq( SdGenericDrawPage::getSupportedServiceNames() );
    2230           8 :     comphelper::ServiceInfoHelper::addToSequence( aSeq, 1, "com.sun.star.drawing.DrawPage" );
    2231             : 
    2232           8 :     if( mbIsImpressDocument )
    2233           8 :         comphelper::ServiceInfoHelper::addToSequence( aSeq, 1, "com.sun.star.presentation.DrawPage" );
    2234             : 
    2235           8 :     return aSeq;
    2236             : }
    2237             : 
    2238           8 : sal_Bool SAL_CALL SdDrawPage::supportsService( const OUString& ServiceName )
    2239             :     throw(uno::RuntimeException)
    2240             : {
    2241           8 :     return SdGenericDrawPage::supportsService( ServiceName );
    2242             : }
    2243             : 
    2244             : // XNamed
    2245          10 : void SAL_CALL SdDrawPage::setName( const OUString& rName )
    2246             :     throw(uno::RuntimeException)
    2247             : {
    2248          10 :     ::SolarMutexGuard aGuard;
    2249             : 
    2250          10 :     throwIfDisposed();
    2251             : 
    2252             :     DBG_ASSERT( GetPage() && !GetPage()->IsMasterPage(), "Don't call base implementation for masterpages!" );
    2253             : 
    2254          10 :     OUString aName( rName );
    2255             : 
    2256          10 :     if(GetPage() && GetPage()->GetPageKind() != PK_NOTES)
    2257             :     {
    2258             :         // check if this is the default 'page1234' name
    2259          10 :         if(aName.compareToAscii( sEmptyPageName, sizeof( sEmptyPageName ) - 1 ) == 0)
    2260             :         {
    2261             :             // ok, it maybe is, first get the number part after 'page'
    2262           9 :             OUString aNumber( aName.copy( sizeof( sEmptyPageName ) - 1 ) );
    2263             : 
    2264             :             // create the page number
    2265           9 :             sal_Int32 nPageNumber = aNumber.toInt32();
    2266             : 
    2267             :             // check if there are non number characters in the number part
    2268           9 :             const sal_Int32 nChars = aNumber.getLength();
    2269           9 :             const sal_Unicode* pString = aNumber.getStr();
    2270             :             sal_Int32 nChar;
    2271          18 :             for( nChar = 0; nChar < nChars; nChar++, pString++ )
    2272             :             {
    2273           9 :                 if((*pString < '0') || (*pString > '9'))
    2274             :                 {
    2275             :                     // found a non number character, so this is not the default
    2276             :                     // name for this page
    2277           0 :                     nPageNumber = -1;
    2278           0 :                     break;
    2279             :                 }
    2280             :             }
    2281             : 
    2282           9 :             if( nPageNumber == ( ( GetPage()->GetPageNum() - 1 ) >> 1 ) + 1 )
    2283           9 :                 aName = OUString();
    2284             :         }
    2285             :         else
    2286             :         {
    2287           1 :             String aDefaultPageName( SdResId(STR_PAGE) );
    2288           1 :             aDefaultPageName += sal_Unicode( ' ' );
    2289           1 :             if( aName.compareTo( aDefaultPageName, aDefaultPageName.Len() ) == 0 )
    2290           0 :                 aName = OUString();
    2291             :         }
    2292             : 
    2293          10 :         GetPage()->SetName( aName );
    2294             : 
    2295          10 :         sal_uInt16 nNotesPageNum = (GetPage()->GetPageNum()-1)>>1;
    2296          10 :         if( GetModel()->GetDoc()->GetSdPageCount( PK_NOTES ) > nNotesPageNum )
    2297             :         {
    2298          10 :             SdPage* pNotesPage = GetModel()->GetDoc()->GetSdPage( nNotesPageNum, PK_NOTES );
    2299          10 :             if( pNotesPage )
    2300          10 :                 pNotesPage->SetName(aName);
    2301             :         }
    2302             : 
    2303             :         // fake a mode change to repaint the page tab bar
    2304          10 :         ::sd::DrawDocShell* pDocSh = GetModel()->GetDocShell();
    2305          10 :         ::sd::ViewShell* pViewSh = pDocSh ? pDocSh->GetViewShell() : NULL;
    2306          10 :         if( pViewSh && pViewSh->ISA(::sd::DrawViewShell))
    2307             :         {
    2308             :             ::sd::DrawViewShell* pDrawViewSh = static_cast<
    2309           0 :                   ::sd::DrawViewShell*>(pViewSh);
    2310             : 
    2311           0 :             EditMode eMode = pDrawViewSh->GetEditMode();
    2312           0 :             if( eMode == EM_PAGE )
    2313             :             {
    2314           0 :                 sal_Bool bLayer = pDrawViewSh->IsLayerModeActive();
    2315             : 
    2316           0 :                 pDrawViewSh->ChangeEditMode( eMode, !bLayer );
    2317           0 :                 pDrawViewSh->ChangeEditMode( eMode, bLayer );
    2318             :             }
    2319             :         }
    2320             : 
    2321          10 :         GetModel()->SetModified();
    2322          10 :     }
    2323          10 : }
    2324             : 
    2325           0 : OUString SAL_CALL SdDrawPage::getName()
    2326             :     throw(uno::RuntimeException)
    2327             : {
    2328           0 :     ::SolarMutexGuard aGuard;
    2329             : 
    2330           0 :     throwIfDisposed();
    2331             : 
    2332           0 :     return getPageApiName( GetPage() );
    2333             : }
    2334             : 
    2335             : // XMasterPageTarget
    2336           0 : Reference< drawing::XDrawPage > SAL_CALL SdDrawPage::getMasterPage(  )
    2337             :     throw(uno::RuntimeException)
    2338             : {
    2339           0 :     ::SolarMutexGuard aGuard;
    2340             : 
    2341           0 :     throwIfDisposed();
    2342             : 
    2343           0 :     if(GetPage())
    2344             :     {
    2345           0 :         Reference< drawing::XDrawPages >    xPages( GetModel()->getMasterPages() );
    2346           0 :         Reference< drawing::XDrawPage > xPage;
    2347             : 
    2348           0 :         if(SvxFmDrawPage::mpPage->TRG_HasMasterPage())
    2349             :         {
    2350           0 :             SdrPage& rMasterPage = SvxFmDrawPage::mpPage->TRG_GetMasterPage();
    2351           0 :             xPage = uno::Reference< drawing::XDrawPage >( rMasterPage.getUnoPage(), uno::UNO_QUERY );
    2352             :         }
    2353             : 
    2354           0 :         return xPage;
    2355             :     }
    2356           0 :     return NULL;
    2357             : }
    2358             : 
    2359          13 : void SAL_CALL SdDrawPage::setMasterPage( const Reference< drawing::XDrawPage >& xMasterPage )
    2360             :     throw(uno::RuntimeException)
    2361             : {
    2362          13 :     ::SolarMutexGuard aGuard;
    2363             : 
    2364          13 :     throwIfDisposed();
    2365             : 
    2366          13 :     if(SvxFmDrawPage::mpPage)
    2367             :     {
    2368          13 :         SdMasterPage* pMasterPage = SdMasterPage::getImplementation( xMasterPage );
    2369          13 :         if( pMasterPage && pMasterPage->isValid() )
    2370             :         {
    2371          13 :             SvxFmDrawPage::mpPage->TRG_ClearMasterPage();
    2372             : 
    2373          13 :             SdPage* pSdPage = (SdPage*) pMasterPage->GetSdrPage();
    2374          13 :             SvxFmDrawPage::mpPage->TRG_SetMasterPage(*pSdPage);
    2375             : 
    2376          26 :             SvxFmDrawPage::mpPage->SetBorder(pSdPage->GetLftBorder(),pSdPage->GetUppBorder(),
    2377          39 :                               pSdPage->GetRgtBorder(),pSdPage->GetLwrBorder() );
    2378             : 
    2379          13 :             SvxFmDrawPage::mpPage->SetSize( pSdPage->GetSize() );
    2380          13 :             SvxFmDrawPage::mpPage->SetOrientation( pSdPage->GetOrientation() );
    2381          13 :             ((SdPage*)SvxFmDrawPage::mpPage)->SetLayoutName( ( (SdPage*)pSdPage )->GetLayoutName() );
    2382             : 
    2383             :             // set notes master also
    2384          13 :             SdPage* pNotesPage = GetModel()->GetDoc()->GetSdPage( (SvxFmDrawPage::mpPage->GetPageNum()-1)>>1, PK_NOTES );
    2385             : 
    2386          13 :             pNotesPage->TRG_ClearMasterPage();
    2387          13 :             sal_uInt16 nNum = (SvxFmDrawPage::mpPage->TRG_GetMasterPage()).GetPageNum() + 1;
    2388          13 :             pNotesPage->TRG_SetMasterPage(*SvxFmDrawPage::mpPage->GetModel()->GetMasterPage(nNum));
    2389          13 :             pNotesPage->SetLayoutName( ( (SdPage*)pSdPage )->GetLayoutName() );
    2390             : 
    2391          13 :             GetModel()->SetModified();
    2392             :         }
    2393             : 
    2394          13 :     }
    2395          13 : }
    2396             : 
    2397             : // XPresentationPage
    2398           9 : Reference< drawing::XDrawPage > SAL_CALL SdDrawPage::getNotesPage()
    2399             :     throw(uno::RuntimeException)
    2400             : {
    2401           9 :     ::SolarMutexGuard aGuard;
    2402             : 
    2403           9 :     throwIfDisposed();
    2404             : 
    2405           9 :     if(SvxFmDrawPage::mpPage && GetModel()->GetDoc() && SvxFmDrawPage::mpPage->GetPageNum() )
    2406             :     {
    2407           9 :         SdPage* pNotesPage = GetModel()->GetDoc()->GetSdPage( (SvxFmDrawPage::mpPage->GetPageNum()-1)>>1, PK_NOTES );
    2408           9 :         if( pNotesPage )
    2409             :         {
    2410           9 :             Reference< drawing::XDrawPage > xPage( pNotesPage->getUnoPage(), uno::UNO_QUERY );
    2411           9 :             return xPage;
    2412             :         }
    2413             :     }
    2414           0 :     return NULL;
    2415             : }
    2416             : 
    2417             : 
    2418             : // XIndexAccess
    2419          73 : sal_Int32 SAL_CALL SdDrawPage::getCount()
    2420             :     throw(uno::RuntimeException)
    2421             : {
    2422          73 :     return SdGenericDrawPage::getCount();
    2423             : }
    2424             : 
    2425         121 : Any SAL_CALL SdDrawPage::getByIndex( sal_Int32 Index )
    2426             :     throw(lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException)
    2427             : {
    2428         121 :     return SdGenericDrawPage::getByIndex( Index );
    2429             : }
    2430             : 
    2431             : // XElementAccess
    2432           0 : uno::Type SAL_CALL SdDrawPage::getElementType()
    2433             :     throw(uno::RuntimeException)
    2434             : {
    2435           0 :     return SdGenericDrawPage::getElementType();
    2436             : }
    2437             : 
    2438           0 : sal_Bool SAL_CALL SdDrawPage::hasElements()
    2439             :     throw(uno::RuntimeException)
    2440             : {
    2441           0 :     return SdGenericDrawPage::hasElements();
    2442             : }
    2443             : 
    2444             : // XShapes
    2445         114 : void SAL_CALL SdDrawPage::add( const Reference< drawing::XShape >& xShape ) throw(uno::RuntimeException)
    2446             : {
    2447         114 :     SdGenericDrawPage::add( xShape );
    2448         114 : }
    2449             : 
    2450          42 : void SAL_CALL SdDrawPage::remove( const Reference< drawing::XShape >& xShape ) throw(uno::RuntimeException)
    2451             : {
    2452          42 :     ::SolarMutexGuard aGuard;
    2453             : 
    2454          42 :     throwIfDisposed();
    2455             : 
    2456          42 :     SvxShape* pShape = SvxShape::getImplementation( xShape );
    2457          42 :     if( pShape )
    2458             :     {
    2459          42 :         SdrObject* pObj = pShape->GetSdrObject();
    2460          42 :         if( pObj )
    2461             :         {
    2462          42 :             GetPage()->RemovePresObj(pObj);
    2463          42 :             pObj->SetUserCall(NULL);
    2464             :         }
    2465             :     }
    2466             : 
    2467          42 :     SdGenericDrawPage::remove( xShape );
    2468          42 : }
    2469             : 
    2470           9 : void SdDrawPage::setBackground( const Any& rValue )
    2471             :     throw( lang::IllegalArgumentException )
    2472             : {
    2473           9 :     Reference< beans::XPropertySet > xSet;
    2474             : 
    2475           9 :     if( !(rValue >>= xSet) && !rValue.hasValue() )
    2476           0 :         throw lang::IllegalArgumentException();
    2477             : 
    2478           9 :     if( !xSet.is() )
    2479             :     {
    2480             :         // the easy case, no background set. Set XFILL_NONE to represent this
    2481           0 :         GetPage()->getSdrPageProperties().PutItem(XFillStyleItem(XFILL_NONE));
    2482           9 :         return;
    2483             :     }
    2484             : 
    2485             :     // is it our own implementation?
    2486           9 :     SdUnoPageBackground* pBack = SdUnoPageBackground::getImplementation( xSet );
    2487             : 
    2488           9 :     SfxItemSet aSet( GetModel()->GetDoc()->GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST );
    2489             : 
    2490           9 :     if( pBack )
    2491             :     {
    2492           9 :         pBack->fillItemSet( (SdDrawDocument*)GetPage()->GetModel(), aSet );
    2493             :     }
    2494             :     else
    2495             :     {
    2496           0 :         SdUnoPageBackground* pBackground = new SdUnoPageBackground();
    2497             : 
    2498           0 :         Reference< beans::XPropertySetInfo >  xSetInfo( xSet->getPropertySetInfo() );
    2499           0 :         Reference< beans::XPropertySet >  xDestSet( (beans::XPropertySet*)pBackground );
    2500           0 :         Reference< beans::XPropertySetInfo >  xDestSetInfo( xDestSet->getPropertySetInfo() );
    2501             : 
    2502           0 :         Sequence< beans::Property > aProperties( xDestSetInfo->getProperties() );
    2503           0 :         sal_Int32 nCount = aProperties.getLength();
    2504           0 :         beans::Property* pProp = aProperties.getArray();
    2505             : 
    2506           0 :         while( nCount-- )
    2507             :         {
    2508           0 :             const OUString aPropName( pProp->Name );
    2509           0 :             if( xSetInfo->hasPropertyByName( aPropName ) )
    2510           0 :                 xDestSet->setPropertyValue( aPropName,
    2511           0 :                         xSet->getPropertyValue( aPropName ) );
    2512             : 
    2513           0 :             pProp++;
    2514           0 :         }
    2515             : 
    2516           0 :         pBackground->fillItemSet( (SdDrawDocument*)GetPage()->GetModel(), aSet );
    2517             :     }
    2518             : 
    2519           9 :     if( aSet.Count() == 0 )
    2520             :     {
    2521             :         // no background fill, represent by setting XFILL_NONE
    2522           9 :         GetPage()->getSdrPageProperties().PutItem(XFillStyleItem(XFILL_NONE));
    2523             :     }
    2524             :     else
    2525             :     {
    2526             :         // background fill, set at page (not sure if ClearItem is needed)
    2527           0 :         GetPage()->getSdrPageProperties().ClearItem();
    2528           0 :         GetPage()->getSdrPageProperties().PutItemSet(aSet);
    2529             :     }
    2530             : 
    2531             :     // repaint only
    2532           9 :     SvxFmDrawPage::mpPage->ActionChanged();
    2533             : }
    2534             : 
    2535             : // XAnnotationAccess:
    2536           0 : Reference< XAnnotation > SAL_CALL SdGenericDrawPage::createAndInsertAnnotation() throw (RuntimeException)
    2537             : {
    2538           0 :     if( !GetPage() )
    2539           0 :         throw DisposedException();
    2540             : 
    2541           0 :     Reference< XAnnotation > xRet;
    2542           0 :     GetPage()->createAnnotation(xRet);
    2543           0 :     return xRet;
    2544             : }
    2545             : 
    2546           0 : void SAL_CALL SdGenericDrawPage::removeAnnotation(const Reference< XAnnotation > & annotation) throw (RuntimeException, IllegalArgumentException)
    2547             : {
    2548           0 :     GetPage()->removeAnnotation(annotation);
    2549           0 : }
    2550             : 
    2551           0 : Reference< XAnnotationEnumeration > SAL_CALL SdGenericDrawPage::createAnnotationEnumeration() throw (RuntimeException)
    2552             : {
    2553           0 :     return ::sd::createAnnotationEnumeration( GetPage()->getAnnotations() );
    2554             : }
    2555             : 
    2556           0 : void SdDrawPage::getBackground( Any& rValue ) throw()
    2557             : {
    2558           0 :     const SfxItemSet& rFillAttributes = GetPage()->getSdrPageProperties().GetItemSet();
    2559             : 
    2560           0 :        if(XFILL_NONE == ((const XFillStyleItem&)rFillAttributes.Get(XATTR_FILLSTYLE)).GetValue())
    2561             :     {
    2562             :         // no fill set (switched off by XFILL_NONE), clear rValue to represent this
    2563           0 :         rValue.clear();
    2564             :     }
    2565             :     else
    2566             :     {
    2567             :         // there is a fill set, export to rValue
    2568             :         Reference< beans::XPropertySet > xSet(new SdUnoPageBackground(
    2569           0 :             GetModel()->GetDoc(),
    2570           0 :             &GetPage()->getSdrPageProperties().GetItemSet()));
    2571           0 :         rValue <<= xSet;
    2572             :     }
    2573           0 : }
    2574             : 
    2575           0 : void SdGenericDrawPage::setNavigationOrder( const Any& rValue )
    2576             : {
    2577           0 :     Reference< XIndexAccess > xIA( rValue, UNO_QUERY );
    2578           0 :     if( xIA.is() )
    2579             :     {
    2580           0 :         if( dynamic_cast< SdDrawPage* >( xIA.get() ) == this )
    2581             :         {
    2582           0 :             if( GetPage()->HasObjectNavigationOrder() )
    2583           0 :                 GetPage()->ClearObjectNavigationOrder();
    2584             : 
    2585             :             return;
    2586             :         }
    2587           0 :         else if( xIA->getCount() == static_cast< sal_Int32 >( GetPage()->GetObjCount() ) )
    2588             :         {
    2589           0 :             GetPage()->SetNavigationOrder(xIA);
    2590             :             return;
    2591             :         }
    2592             :     }
    2593           0 :     throw IllegalArgumentException();
    2594             : }
    2595             : 
    2596           0 : class SdNavigationOrderAccess : public ::cppu::WeakImplHelper1< XIndexAccess >
    2597             : {
    2598             : public:
    2599             :     SdNavigationOrderAccess( SdrPage* pPage );
    2600             : 
    2601             :     // XIndexAccess
    2602             :     virtual sal_Int32 SAL_CALL getCount(  ) throw (RuntimeException);
    2603             :     virtual Any SAL_CALL getByIndex( sal_Int32 Index ) throw (IndexOutOfBoundsException, WrappedTargetException, RuntimeException);
    2604             : 
    2605             :     // XElementAccess
    2606             :     virtual Type SAL_CALL getElementType(  ) throw (RuntimeException);
    2607             :     virtual sal_Bool SAL_CALL hasElements(  ) throw (RuntimeException);
    2608             : 
    2609             : private:
    2610             :     std::vector< Reference< XShape > > maShapes;
    2611             : };
    2612             : 
    2613           0 : SdNavigationOrderAccess::SdNavigationOrderAccess( SdrPage* pPage )
    2614           0 : : maShapes( static_cast< sal_uInt32 >( pPage ? pPage->GetObjCount() : 0 ) )
    2615             : {
    2616           0 :     if( pPage )
    2617             :     {
    2618             :         sal_uInt32 nIndex;
    2619           0 :         const sal_uInt32 nCount = static_cast< sal_uInt32 >( pPage->GetObjCount() );
    2620           0 :         for( nIndex = 0; nIndex < nCount; ++nIndex )
    2621             :         {
    2622           0 :             SdrObject* pObj = pPage->GetObj( nIndex );
    2623           0 :             sal_uInt32 nNavPos = pObj->GetNavigationPosition();
    2624             :             DBG_ASSERT( !maShapes[nNavPos].is(), "sd::SdNavigationOrderAccess::SdNavigationOrderAccess(), duplicate navigation positions from core!" );
    2625           0 :             maShapes[nNavPos] = Reference< XShape >( pObj->getUnoShape(), UNO_QUERY );
    2626             :         }
    2627             :     }
    2628           0 : }
    2629             : 
    2630             : // XIndexAccess
    2631           0 : sal_Int32 SAL_CALL SdNavigationOrderAccess::getCount(  ) throw (RuntimeException)
    2632             : {
    2633           0 :     return static_cast< sal_Int32 >( maShapes.size() );
    2634             : }
    2635             : 
    2636           0 : Any SAL_CALL SdNavigationOrderAccess::getByIndex( sal_Int32 Index ) throw (IndexOutOfBoundsException, WrappedTargetException, RuntimeException)
    2637             : {
    2638           0 :     if( (Index < 0) || (Index > getCount()) )
    2639           0 :         throw IndexOutOfBoundsException();
    2640             : 
    2641           0 :     return Any( maShapes[Index] );
    2642             : }
    2643             : 
    2644             : // XElementAccess
    2645           0 : Type SAL_CALL SdNavigationOrderAccess::getElementType(  ) throw (RuntimeException)
    2646             : {
    2647           0 :     return XShape::static_type();
    2648             : }
    2649             : 
    2650           0 : sal_Bool SAL_CALL SdNavigationOrderAccess::hasElements(  ) throw (RuntimeException)
    2651             : {
    2652           0 :     return maShapes.empty() ? sal_False : sal_True;
    2653             : }
    2654             : 
    2655           0 : Any SdGenericDrawPage::getNavigationOrder()
    2656             : {
    2657           0 :     if( GetPage()->HasObjectNavigationOrder() )
    2658             :     {
    2659           0 :         return Any( Reference< XIndexAccess >( new SdNavigationOrderAccess( GetPage() ) ) );
    2660             :     }
    2661             :     else
    2662             :     {
    2663           0 :         return Any( Reference< XIndexAccess >( this ) );
    2664             :     }
    2665             : }
    2666             : 
    2667             : //========================================================================
    2668             : // class SdMasterPage
    2669             : //========================================================================
    2670             : 
    2671          10 : SdMasterPage::SdMasterPage( SdXImpressDocument* pModel, SdPage* pPage ) throw()
    2672          10 : : SdGenericDrawPage( pModel, pPage, ImplGetMasterPagePropertySet( pPage ? pPage->GetPageKind() : PK_STANDARD ) )
    2673             : {
    2674          10 : }
    2675             : 
    2676          16 : SdMasterPage::~SdMasterPage() throw()
    2677             : {
    2678          16 : }
    2679             : 
    2680             : // XInterface
    2681         204 : Any SAL_CALL SdMasterPage::queryInterface( const uno::Type & rType )
    2682             :     throw(uno::RuntimeException)
    2683             : {
    2684         204 :     ::SolarMutexGuard aGuard;
    2685             : 
    2686         204 :     throwIfDisposed();
    2687             : 
    2688         204 :     uno::Any aAny;
    2689             : 
    2690         204 :     if( rType == ITYPE( container::XIndexAccess ) )
    2691           0 :         aAny <<= Reference< container::XIndexAccess >((presentation::XPresentationPage*)(this));
    2692         204 :     else if( rType == ITYPE( container::XElementAccess ) )
    2693           0 :         aAny <<=  Reference< container::XElementAccess >((presentation::XPresentationPage*)(this));
    2694         204 :     else if( rType == ITYPE( container::XNamed ) )
    2695          19 :         aAny <<=  Reference< container::XNamed >(this);
    2696         187 :     else if( rType == ITYPE( presentation::XPresentationPage ) &&
    2697             :              ( mbIsImpressDocument &&
    2698           2 :                GetPage()  && GetPage()->GetPageKind() != PK_HANDOUT) )
    2699           1 :         aAny <<= Reference< presentation::XPresentationPage >( this );
    2700             :     else
    2701         184 :         return SdGenericDrawPage::queryInterface( rType );
    2702             : 
    2703          20 :     return aAny;
    2704             : }
    2705             : 
    2706         713 : void SAL_CALL SdMasterPage::acquire() throw()
    2707             : {
    2708         713 :     SvxDrawPage::acquire();
    2709         713 : }
    2710             : 
    2711         711 : void SAL_CALL SdMasterPage::release() throw()
    2712             : {
    2713         711 :     SvxDrawPage::release();
    2714         711 : }
    2715             : 
    2716         148 : UNO3_GETIMPLEMENTATION2_IMPL( SdMasterPage, SdGenericDrawPage );
    2717             : 
    2718             : // XTypeProvider
    2719           0 : Sequence< uno::Type > SAL_CALL SdMasterPage::getTypes() throw(uno::RuntimeException)
    2720             : {
    2721           0 :     ::SolarMutexGuard aGuard;
    2722             : 
    2723           0 :     throwIfDisposed();
    2724             : 
    2725           0 :     if( maTypeSequence.getLength() == 0 )
    2726             :     {
    2727           0 :         const PageKind ePageKind = GetPage() ? GetPage()->GetPageKind() : PK_STANDARD;
    2728           0 :         sal_Bool bPresPage = mbIsImpressDocument && SvxFmDrawPage::mpPage && ePageKind != PK_HANDOUT;
    2729             : 
    2730             :         // Collect the types of this class.
    2731           0 :         ::std::vector<uno::Type> aTypes;
    2732           0 :         aTypes.reserve(12);
    2733           0 :         aTypes.push_back(ITYPE(drawing::XDrawPage));
    2734           0 :         aTypes.push_back(ITYPE(beans::XPropertySet));
    2735           0 :         aTypes.push_back(ITYPE(container::XNamed));
    2736           0 :         aTypes.push_back(ITYPE(lang::XServiceInfo));
    2737           0 :         aTypes.push_back(ITYPE(util::XReplaceable));
    2738           0 :         aTypes.push_back(ITYPE(document::XLinkTargetSupplier));
    2739           0 :         aTypes.push_back(ITYPE( drawing::XShapeCombiner ));
    2740           0 :         aTypes.push_back(ITYPE( drawing::XShapeBinder ));
    2741           0 :         aTypes.push_back(ITYPE( office::XAnnotationAccess ));
    2742           0 :         aTypes.push_back(ITYPE( beans::XMultiPropertySet ));
    2743           0 :         if( bPresPage )
    2744           0 :             aTypes.push_back(ITYPE(presentation::XPresentationPage));
    2745           0 :         if( bPresPage && ePageKind == PK_STANDARD )
    2746           0 :             aTypes.push_back(ITYPE(XAnimationNodeSupplier));
    2747             : 
    2748             :         // Get types of base class.
    2749           0 :         const Sequence< uno::Type > aBaseTypes( SdGenericDrawPage::getTypes() );
    2750           0 :         const sal_Int32 nBaseTypes = aBaseTypes.getLength();
    2751           0 :         const uno::Type* pBaseTypes = aBaseTypes.getConstArray();
    2752             : 
    2753             :         // Join those types in a sequence.
    2754           0 :         maTypeSequence.realloc(aTypes.size() + nBaseTypes);
    2755           0 :         uno::Type* pTypes = maTypeSequence.getArray();
    2756           0 :         ::std::vector<uno::Type>::const_iterator iType;
    2757           0 :         for (iType=aTypes.begin(); iType!=aTypes.end(); ++iType)
    2758           0 :             *pTypes++ = *iType;
    2759           0 :         for( sal_Int32 nType = 0; nType < nBaseTypes; nType++ )
    2760           0 :             *pTypes++ = *pBaseTypes++;
    2761             :     }
    2762             : 
    2763           0 :     return maTypeSequence;
    2764             : }
    2765             : 
    2766             : namespace
    2767             : {
    2768             :     class theSdMasterPageImplementationId : public rtl::Static< UnoTunnelIdInit, theSdMasterPageImplementationId > {};
    2769             : }
    2770             : 
    2771           0 : Sequence< sal_Int8 > SAL_CALL SdMasterPage::getImplementationId() throw(uno::RuntimeException)
    2772             : {
    2773           0 :     return theSdMasterPageImplementationId::get().getSeq();
    2774             : }
    2775             : 
    2776             : // XServiceInfo
    2777           0 : OUString SAL_CALL SdMasterPage::getImplementationName() throw(uno::RuntimeException)
    2778             : {
    2779           0 :     return OUString( "SdMasterPage" );
    2780             : }
    2781             : 
    2782           7 : Sequence< OUString > SAL_CALL SdMasterPage::getSupportedServiceNames() throw(uno::RuntimeException)
    2783             : {
    2784           7 :     ::SolarMutexGuard aGuard;
    2785             : 
    2786           7 :     throwIfDisposed();
    2787             : 
    2788           7 :     Sequence< OUString > aSeq( SdGenericDrawPage::getSupportedServiceNames() );
    2789           7 :     comphelper::ServiceInfoHelper::addToSequence( aSeq, 1, "com.sun.star.drawing.MasterPage" );
    2790             : 
    2791           7 :     if( SvxFmDrawPage::mpPage && ((SdPage*)SvxFmDrawPage::mpPage)->GetPageKind() == PK_HANDOUT )
    2792           6 :         comphelper::ServiceInfoHelper::addToSequence( aSeq, 1, "com.sun.star.presentation.HandoutMasterPage" );
    2793             : 
    2794           7 :     return aSeq;
    2795             : }
    2796             : 
    2797           7 : sal_Bool SAL_CALL SdMasterPage::supportsService( const OUString& ServiceName )
    2798             :     throw(uno::RuntimeException)
    2799             : {
    2800           7 :     return SdGenericDrawPage::supportsService( ServiceName );
    2801             : }
    2802             : 
    2803             : // XElementAccess
    2804           0 : sal_Bool SAL_CALL SdMasterPage::hasElements() throw(uno::RuntimeException)
    2805             : {
    2806           0 :     ::SolarMutexGuard aGuard;
    2807             : 
    2808           0 :     throwIfDisposed();
    2809             : 
    2810           0 :     if( SvxFmDrawPage::mpPage == NULL )
    2811           0 :         return sal_False;
    2812             : 
    2813           0 :     return SvxFmDrawPage::mpPage->GetObjCount() > 0;
    2814             : }
    2815             : 
    2816           0 : uno::Type SAL_CALL SdMasterPage::getElementType()
    2817             :     throw(uno::RuntimeException)
    2818             : {
    2819           0 :     return SdGenericDrawPage::getElementType();
    2820             : }
    2821             : 
    2822             : // XIndexAccess
    2823          54 : sal_Int32 SAL_CALL SdMasterPage::getCount()
    2824             :     throw(uno::RuntimeException)
    2825             : {
    2826          54 :     ::SolarMutexGuard aGuard;
    2827             : 
    2828          54 :     throwIfDisposed();
    2829             : 
    2830          54 :     return SdGenericDrawPage::getCount();
    2831             : }
    2832             : 
    2833          46 : Any SAL_CALL SdMasterPage::getByIndex( sal_Int32 Index )
    2834             :     throw(lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException)
    2835             : {
    2836          46 :     ::SolarMutexGuard aGuard;
    2837             : 
    2838          46 :     throwIfDisposed();
    2839             : 
    2840          46 :     return SdGenericDrawPage::getByIndex(Index);
    2841             : }
    2842             : 
    2843             : // intern
    2844           5 : void SdMasterPage::setBackground( const Any& rValue )
    2845             :     throw( lang::IllegalArgumentException )
    2846             : {
    2847             :     // we need at least an beans::XPropertySet
    2848           5 :     Reference< beans::XPropertySet > xInputSet( rValue, UNO_QUERY );
    2849           5 :     if( !xInputSet.is() )
    2850           0 :         throw lang::IllegalArgumentException();
    2851             : 
    2852             :     try
    2853             :     {
    2854           5 :         if( GetModel() && mbIsImpressDocument )
    2855             :         {
    2856           5 :             Reference< container::XNameAccess >  xFamilies( GetModel()->getStyleFamilies(), UNO_QUERY_THROW );
    2857           5 :             Reference< container::XNameAccess > xFamily( xFamilies->getByName( getName() ), UNO_QUERY_THROW ) ;
    2858           5 :             if( xFamily.is() )
    2859             :             {
    2860           5 :                 OUString aStyleName( OUString::createFromAscii(sUNO_PseudoSheet_Background) );
    2861             : 
    2862           5 :                 Reference< beans::XPropertySet >  xStyleSet( xFamily->getByName( aStyleName ), UNO_QUERY_THROW );
    2863             : 
    2864           5 :                 Reference< beans::XPropertySetInfo >  xSetInfo( xInputSet->getPropertySetInfo(), UNO_QUERY_THROW );
    2865           5 :                 Reference< beans::XPropertyState > xSetStates( xInputSet, UNO_QUERY );
    2866             : 
    2867           5 :                 PropertyEntryVector_t aBackgroundProperties = ImplGetPageBackgroundPropertySet()->getPropertyMap()->getPropertyEntries();
    2868           5 :                 PropertyEntryVector_t::const_iterator aIt = aBackgroundProperties.begin();
    2869         140 :                 while( aIt != aBackgroundProperties.end() )
    2870             :                 {
    2871         130 :                     if( xSetInfo->hasPropertyByName( aIt->sName ) )
    2872             :                     {
    2873          58 :                         if( !xSetStates.is() || xSetStates->getPropertyState( aIt->sName ) == beans::PropertyState_DIRECT_VALUE )
    2874           8 :                             xStyleSet->setPropertyValue( aIt->sName,    xInputSet->getPropertyValue( aIt->sName ) );
    2875             :                         else
    2876          50 :                             xSetStates->setPropertyToDefault( aIt->sName );
    2877             :                     }
    2878             : 
    2879         130 :                     ++aIt;
    2880           5 :                 }
    2881           5 :             }
    2882             :         }
    2883             :         else
    2884             :         {
    2885             :             // first fill an item set
    2886             :             // is it our own implementation?
    2887           0 :             SdUnoPageBackground* pBack = SdUnoPageBackground::getImplementation( xInputSet );
    2888             : 
    2889           0 :             SfxItemSet aSet( GetModel()->GetDoc()->GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST );
    2890             : 
    2891           0 :             if( pBack )
    2892             :             {
    2893           0 :                 pBack->fillItemSet( (SdDrawDocument*)GetPage()->GetModel(), aSet );
    2894             :             }
    2895             :             else
    2896             :             {
    2897           0 :                 SdUnoPageBackground* pBackground = new SdUnoPageBackground();
    2898             : 
    2899           0 :                 Reference< beans::XPropertySetInfo > xInputSetInfo( xInputSet->getPropertySetInfo(), UNO_QUERY_THROW );
    2900           0 :                 Reference< beans::XPropertySet > xDestSet( (beans::XPropertySet*)pBackground );
    2901           0 :                 Reference< beans::XPropertySetInfo > xDestSetInfo( xDestSet->getPropertySetInfo(), UNO_QUERY_THROW );
    2902             : 
    2903           0 :                 uno::Sequence< beans::Property> aProperties( xDestSetInfo->getProperties() );
    2904           0 :                 sal_Int32 nCount = aProperties.getLength();
    2905           0 :                 beans::Property* pProp = aProperties.getArray();
    2906             : 
    2907           0 :                 while( nCount-- )
    2908             :                 {
    2909           0 :                     const OUString aPropName( pProp->Name );
    2910           0 :                     if( xInputSetInfo->hasPropertyByName( aPropName ) )
    2911           0 :                         xDestSet->setPropertyValue( aPropName, xInputSet->getPropertyValue( aPropName ) );
    2912             : 
    2913           0 :                     pProp++;
    2914           0 :                 }
    2915             : 
    2916           0 :                 pBackground->fillItemSet( (SdDrawDocument*)SvxFmDrawPage::mpPage->GetModel(), aSet );
    2917             :             }
    2918             : 
    2919             :             // if we find the background style, copy the set to the background
    2920           0 :             SdDrawDocument* pDoc = (SdDrawDocument*)SvxFmDrawPage::mpPage->GetModel();
    2921           0 :             SfxStyleSheetBasePool* pSSPool = (SfxStyleSheetBasePool*)pDoc->GetStyleSheetPool();
    2922           0 :             if(pSSPool)
    2923             :             {
    2924           0 :                 String aLayoutName( static_cast< SdPage* >( SvxFmDrawPage::mpPage )->GetLayoutName() );
    2925           0 :                 aLayoutName.Erase(aLayoutName.Search(String(RTL_CONSTASCII_USTRINGPARAM(SD_LT_SEPARATOR)))+4);
    2926           0 :                 aLayoutName += String(SdResId(STR_LAYOUT_BACKGROUND));
    2927           0 :                 SfxStyleSheetBase* pStyleSheet = pSSPool->Find( aLayoutName, SD_STYLE_FAMILY_MASTERPAGE );
    2928             : 
    2929           0 :                 if( pStyleSheet )
    2930             :                 {
    2931           0 :                     pStyleSheet->GetItemSet().Put( aSet );
    2932             : 
    2933             :                     // repaint only
    2934           0 :                     SvxFmDrawPage::mpPage->ActionChanged();
    2935           5 :                     return;
    2936           0 :                 }
    2937             :             }
    2938             : 
    2939             :             // if no background style is available, set at page directly. This
    2940             :             // is an error and should NOT happen (and will be asserted from the SdrPage)
    2941           0 :             GetPage()->getSdrPageProperties().PutItemSet(aSet);
    2942             :         }
    2943             :     }
    2944           0 :     catch( Exception& )
    2945             :     {
    2946             :         OSL_FAIL("sd::SdMasterPage::setBackground(), exception caught!");
    2947           5 :     }
    2948             : }
    2949             : 
    2950           0 : void SdMasterPage::getBackground( Any& rValue ) throw()
    2951             : {
    2952           0 :     if( GetModel() ) try
    2953             :     {
    2954           0 :         if( mbIsImpressDocument )
    2955             :         {
    2956           0 :             Reference< container::XNameAccess > xFamilies( GetModel()->getStyleFamilies(), UNO_QUERY_THROW );
    2957           0 :             Reference< container::XNameAccess > xFamily( xFamilies->getByName( getName() ), UNO_QUERY_THROW );
    2958             : 
    2959           0 :             const OUString aStyleName( OUString::createFromAscii(sUNO_PseudoSheet_Background) );
    2960           0 :             rValue <<= Reference< beans::XPropertySet >( xFamily->getByName( aStyleName ), UNO_QUERY_THROW );
    2961             :         }
    2962             :         else
    2963             :         {
    2964           0 :             SdDrawDocument* pDoc = (SdDrawDocument*)SvxFmDrawPage::mpPage->GetModel();
    2965           0 :             SfxStyleSheetBasePool* pSSPool = (SfxStyleSheetBasePool*)pDoc->GetStyleSheetPool();
    2966           0 :             if(pSSPool)
    2967             :             {
    2968           0 :                 String aLayoutName( static_cast< SdPage* >(SvxFmDrawPage::mpPage)->GetLayoutName() );
    2969           0 :                 aLayoutName.Erase( aLayoutName.Search(String(RTL_CONSTASCII_USTRINGPARAM(SD_LT_SEPARATOR)))+4);
    2970           0 :                 aLayoutName += String(SdResId(STR_LAYOUT_BACKGROUND));
    2971           0 :                 SfxStyleSheetBase* pStyleSheet = pSSPool->Find( aLayoutName, SD_STYLE_FAMILY_MASTERPAGE );
    2972             : 
    2973           0 :                 if( pStyleSheet )
    2974             :                 {
    2975           0 :                     SfxItemSet aStyleSet( pStyleSheet->GetItemSet());
    2976           0 :                     if( aStyleSet.Count() )
    2977             :                     {
    2978           0 :                         rValue <<= Reference< beans::XPropertySet >( new SdUnoPageBackground( pDoc, &aStyleSet ) );
    2979           0 :                         return;
    2980           0 :                     }
    2981           0 :                 }
    2982             :             }
    2983             : 
    2984             :             // No style found, use fill attributes from page background. This
    2985             :             // should NOT happen and is an error
    2986           0 :             const SfxItemSet& rFallbackItemSet(SvxFmDrawPage::mpPage->getSdrPageProperties().GetItemSet());
    2987             : 
    2988           0 :             if(XFILL_NONE == ((const XFillStyleItem&)rFallbackItemSet.Get(XATTR_FILLSTYLE)).GetValue())
    2989             :             {
    2990             :                 rValue <<= Reference< beans::XPropertySet >(
    2991           0 :                     new SdUnoPageBackground(GetModel()->GetDoc(), &rFallbackItemSet));
    2992             :             }
    2993             :             else
    2994             :             {
    2995           0 :                 rValue.clear();
    2996             :             }
    2997             :         }
    2998             :     }
    2999           0 :     catch( Exception& )
    3000             :     {
    3001           0 :         rValue.clear();
    3002             :         OSL_FAIL("sd::SdMasterPage::getBackground(), exception caught!");
    3003             :     }
    3004             : }
    3005             : 
    3006             : // XNamed
    3007           6 : void SAL_CALL SdMasterPage::setName( const OUString& rName )
    3008             :     throw(uno::RuntimeException)
    3009             : {
    3010           6 :     ::SolarMutexGuard aGuard;
    3011             : 
    3012           6 :     throwIfDisposed();
    3013             : 
    3014           6 :     if(SvxFmDrawPage::mpPage && GetPage()->GetPageKind() != PK_NOTES)
    3015             :     {
    3016           6 :         SdDrawDocument* pDoc = GetModel()->GetDoc();
    3017             :         sal_Bool bOutDummy;
    3018           6 :         String aNewName( rName );
    3019             : 
    3020             :         // Slide Name has to be unique
    3021           6 :         if( pDoc && pDoc->GetPageByName( aNewName, bOutDummy ) != SDRPAGE_NOTFOUND )
    3022           6 :             return; // throw Exception ?
    3023             : 
    3024           5 :         GetPage()->SetName( aNewName );
    3025             : 
    3026           5 :         if( pDoc )
    3027           5 :             pDoc->RenameLayoutTemplate( GetPage()->GetLayoutName(), aNewName );
    3028             : 
    3029             :         // fake a mode change to repaint the page tab bar
    3030           5 :         ::sd::DrawDocShell* pDocSh = GetModel()->GetDocShell();
    3031           5 :         ::sd::ViewShell* pViewSh = pDocSh ? pDocSh->GetViewShell() : NULL;
    3032           5 :         if( pViewSh && pViewSh->ISA(::sd::DrawViewShell ) )
    3033             :         {
    3034             :             ::sd::DrawViewShell* pDrawViewSh =
    3035           0 :                   static_cast< ::sd::DrawViewShell*>(pViewSh);
    3036             : 
    3037           0 :             EditMode eMode = pDrawViewSh->GetEditMode();
    3038           0 :             if( eMode == EM_MASTERPAGE )
    3039             :             {
    3040           0 :                 sal_Bool bLayer = pDrawViewSh->IsLayerModeActive();
    3041             : 
    3042           0 :                 pDrawViewSh->ChangeEditMode( eMode, !bLayer );
    3043           0 :                 pDrawViewSh->ChangeEditMode( eMode, bLayer );
    3044             :             }
    3045             :         }
    3046             : 
    3047           5 :         GetModel()->SetModified();
    3048           6 :     }
    3049             : }
    3050             : 
    3051          26 : OUString SAL_CALL SdMasterPage::getName(  )
    3052             :     throw(uno::RuntimeException)
    3053             : {
    3054          26 :     ::SolarMutexGuard aGuard;
    3055             : 
    3056          26 :     throwIfDisposed();
    3057             : 
    3058          26 :     if(SvxFmDrawPage::mpPage)
    3059             :     {
    3060          26 :         String aLayoutName( GetPage()->GetLayoutName() );
    3061          26 :         aLayoutName = aLayoutName.Erase(aLayoutName.Search( String( RTL_CONSTASCII_USTRINGPARAM((SD_LT_SEPARATOR)))));
    3062             : 
    3063          26 :         return aLayoutName;
    3064             :     }
    3065             : 
    3066           0 :     return OUString();
    3067             : }
    3068             : 
    3069             : // XPresentationPage
    3070           1 : Reference< drawing::XDrawPage > SAL_CALL SdMasterPage::getNotesPage()
    3071             :     throw(uno::RuntimeException)
    3072             : {
    3073           1 :     ::SolarMutexGuard aGuard;
    3074             : 
    3075           1 :     throwIfDisposed();
    3076             : 
    3077           1 :     if(SvxFmDrawPage::mpPage && GetModel()->GetDoc() )
    3078             :     {
    3079           1 :         SdPage* pNotesPage = GetModel()->GetDoc()->GetMasterSdPage( (SvxFmDrawPage::mpPage->GetPageNum()-1)>>1, PK_NOTES );
    3080           1 :         if( pNotesPage )
    3081             :         {
    3082           1 :             Reference< drawing::XDrawPage > xPage( pNotesPage->getUnoPage(), uno::UNO_QUERY );
    3083           1 :             return xPage;
    3084             :         }
    3085             :     }
    3086           0 :     return NULL;
    3087             : }
    3088             : 
    3089             : // XShapes
    3090          31 : void SAL_CALL SdMasterPage::add( const Reference< drawing::XShape >& xShape ) throw(uno::RuntimeException)
    3091             : {
    3092          31 :     SdGenericDrawPage::add( xShape );
    3093          31 : }
    3094             : 
    3095          46 : void SAL_CALL SdMasterPage::remove( const Reference< drawing::XShape >& xShape ) throw(uno::RuntimeException)
    3096             : {
    3097          46 :     ::SolarMutexGuard aGuard;
    3098             : 
    3099          46 :     throwIfDisposed();
    3100             : 
    3101          46 :     SvxShape* pShape = SvxShape::getImplementation( xShape );
    3102          46 :     if( pShape )
    3103             :     {
    3104          46 :         SdrObject* pObj = pShape->GetSdrObject();
    3105          46 :         if( pObj )
    3106             :         {
    3107          46 :             if( GetPage()->IsPresObj( pObj ) )
    3108          46 :                 GetPage()->RemovePresObj(pObj);
    3109             :         }
    3110             :     }
    3111             : 
    3112          46 :     SdGenericDrawPage::remove( xShape );
    3113          46 : }
    3114             : 
    3115             : 
    3116          64 : Reference< uno::XInterface > createUnoPageImpl( SdPage* pPage )
    3117             : {
    3118          64 :     Reference< uno::XInterface > xPage;
    3119             : 
    3120          64 :     if( pPage && pPage->GetModel() )
    3121             :     {
    3122          64 :         SdXImpressDocument* pModel = SdXImpressDocument::getImplementation( pPage->GetModel()->getUnoModel() );
    3123          64 :         if( pModel )
    3124             :         {
    3125          64 :             if( pPage->IsMasterPage() )
    3126             :             {
    3127          10 :                 xPage = (::cppu::OWeakObject*)new SdMasterPage( pModel, pPage );
    3128             :             }
    3129             :             else
    3130             :             {
    3131          54 :                 xPage = (::cppu::OWeakObject*)new SdDrawPage( pModel, pPage );
    3132             :             }
    3133             :         }
    3134             :     }
    3135             : 
    3136          64 :     return xPage;
    3137             : }
    3138             : 
    3139             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10