? sd/sd.vpj
Index: sd/prj/build.lst
===================================================================
RCS file: /cvs/graphics/sd/prj/build.lst,v
retrieving revision 1.17
diff -u -b -I $Revision.*$ -I $Author.*$ -r1.17 build.lst
--- sd/prj/build.lst	22 May 2007 16:13:25 -0000	1.17
+++ sd/prj/build.lst	28 Aug 2007 20:55:59 -0000
@@ -1,4 +1,4 @@
-sd	sd	:	svx stoc uui slideshow NULL
+sd	sd	:	svx stoc uui slideshow oox NULL
 sd	sd										usr1	-	all	sd_mkout NULL
 sd	sd\inc									nmake		-	all	sd_inc NULL
 sd	sd\prj									get		-	all	sd_prj NULL
Index: sd/source/ui/unoidl/unopage.cxx
===================================================================
RCS file: /cvs/graphics/sd/source/ui/unoidl/unopage.cxx,v
retrieving revision 1.88
retrieving revision 1.78.28.7
diff -u -b -I $Revision.*$ -I $Author.*$ -r1.88 -r1.78.28.7
--- sd/source/ui/unoidl/unopage.cxx	9 Jul 2007 13:06:35 -0000	1.88
+++ sd/source/ui/unoidl/unopage.cxx	24 Jul 2007 16:21:59 -0000	1.78.28.7
@@ -177,6 +177,7 @@
 using ::com::sun::star::animations::XAnimationNodeSupplier;
 using ::rtl::OUString;
 using ::rtl::OUStringBuffer;
+
 using namespace ::vos;
 using namespace ::osl;
 using namespace ::com::sun::star;
@@ -537,6 +538,7 @@
 	else QUERYINT( document::XLinkTargetSupplier );
 	else QUERYINT( drawing::XShapeCombiner );
 	else QUERYINT( drawing::XShapeBinder );
+	else QUERYINT( beans::XMultiPropertySet );
 	else if( rType == ITYPE( XAnimationNodeSupplier ) )
 	{
 		if( mbIsImpressDocument )
@@ -1053,7 +1055,7 @@
 
 						SvMemoryStream aDestStrm( 65535, 65535 );
 						ConvertGDIMetaFileToWMF( *pMetaFile, aDestStrm, NULL, sal_False );
-						uno::Sequence<sal_Int8> aSeq( (sal_Int8*)aDestStrm.GetData(), aDestStrm.Tell() );
+						Sequence<sal_Int8> aSeq( (sal_Int8*)aDestStrm.GetData(), aDestStrm.Tell() );
 						aAny <<= aSeq;
 						delete pMetaFile;
 					}
@@ -1248,6 +1250,64 @@
 void SAL_CALL SdGenericDrawPage::addVetoableChangeListener( const OUString& , const Reference< beans::XVetoableChangeListener >&  ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {}
 void SAL_CALL SdGenericDrawPage::removeVetoableChangeListener( const OUString& , const Reference< beans::XVetoableChangeListener >&  ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {}
 
+// XMultiPropertySet
+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 )
+{
+	if( aPropertyNames.getLength() != aValues.getLength() )
+		throw lang::IllegalArgumentException();
+
+	const OUString* pNames = aPropertyNames.getConstArray();
+	const Any* pValues = aValues.getConstArray();
+	sal_uInt32 nCount = aValues.getLength();
+	while( nCount-- )
+	{
+		try
+		{
+			setPropertyValue( *pNames++, *pValues++ );
+		}
+		catch( beans::UnknownPropertyException& )
+		{
+			// ignore for multi property set
+			// todo: optimize this!
+		}
+	}
+}
+
+Sequence< Any > SAL_CALL SdGenericDrawPage::getPropertyValues( const Sequence< OUString >& aPropertyNames ) throw (RuntimeException)
+{
+	const OUString* pNames = aPropertyNames.getConstArray();
+	sal_uInt32 nCount = aPropertyNames.getLength();
+	Sequence< Any > aValues( nCount );
+	Any* pValues = aValues.getArray();
+	while( nCount-- )
+	{
+		Any aValue;
+		try
+		{
+			aValue = getPropertyValue( *pNames++ );
+		}
+		catch( beans::UnknownPropertyException& )
+		{
+			// ignore for multi property set
+			// todo: optimize this!
+		}
+		*pValues++ = aValue;
+	}
+	return aValues;
+}
+
+void SAL_CALL SdGenericDrawPage::addPropertiesChangeListener( const Sequence< OUString >& , const Reference< beans::XPropertiesChangeListener >&  ) throw (RuntimeException)
+{
+}
+
+void SAL_CALL SdGenericDrawPage::removePropertiesChangeListener( const Reference< beans::XPropertiesChangeListener >&  ) throw (RuntimeException)
+{
+}
+
+void SAL_CALL SdGenericDrawPage::firePropertiesChangeEvent( const Sequence< OUString >& , const Reference< beans::XPropertiesChangeListener >&  ) throw (RuntimeException)
+{
+}
+
 Reference< drawing::XShape >  SdGenericDrawPage::_CreateShape( SdrObject *pObj ) const throw()
 {
 	DBG_ASSERT( GetPage(), "SdGenericDrawPage::_CreateShape(), can't create shape for disposed page!" );
@@ -1372,10 +1432,10 @@
 //----------------------------------------------------------------------
 
 // XServiceInfo
-uno::Sequence< OUString > SAL_CALL SdGenericDrawPage::getSupportedServiceNames()
+Sequence< OUString > SAL_CALL SdGenericDrawPage::getSupportedServiceNames()
 	throw(uno::RuntimeException)
 {
-	uno::Sequence< OUString > aSeq( SvxFmDrawPage::getSupportedServiceNames() );
+	Sequence< OUString > aSeq( SvxFmDrawPage::getSupportedServiceNames() );
 	SvxServiceInfoHelper::addToSequence( aSeq, 3, "com.sun.star.drawing.GenericDrawPage",
 												  "com.sun.star.document.LinkTarget",
 												  "com.sun.star.document.LinkTargetSupplier");
@@ -1832,7 +1892,7 @@
 	throw container::NoSuchElementException();
 }
 
-uno::Sequence< OUString > SAL_CALL SdPageLinkTargets::getElementNames()
+Sequence< OUString > SAL_CALL SdPageLinkTargets::getElementNames()
 	throw(uno::RuntimeException)
 {
 	OGuard aGuard( Application::GetSolarMutex() );
@@ -1854,7 +1914,7 @@
 		}
 	}
 
-	uno::Sequence< OUString > aSeq( nObjCount );
+	Sequence< OUString > aSeq( nObjCount );
 	if( nObjCount > 0 )
 	{
 		OUString* pStr = aSeq.getArray();
@@ -1919,11 +1979,11 @@
 	return SvxServiceInfoHelper::supportsService( ServiceName, getSupportedServiceNames() );
 }
 
-uno::Sequence< OUString > SAL_CALL SdPageLinkTargets::getSupportedServiceNames()
+Sequence< OUString > SAL_CALL SdPageLinkTargets::getSupportedServiceNames()
 	throw(uno::RuntimeException)
 {
 	const OUString aSN( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.LinkTargets") );
-	uno::Sequence< OUString > aSeq( &aSN, 1);
+	Sequence< OUString > aSeq( &aSN, 1);
 	return aSeq;
 }
 
@@ -1977,7 +2037,7 @@
 UNO3_GETIMPLEMENTATION2_IMPL( SdDrawPage, SdGenericDrawPage );
 
 // XTypeProvider
-uno::Sequence< uno::Type > SAL_CALL SdDrawPage::getTypes() throw(uno::RuntimeException)
+Sequence< uno::Type > SAL_CALL SdDrawPage::getTypes() throw(uno::RuntimeException)
 {
 	OGuard aGuard( Application::GetSolarMutex() );
 
@@ -2000,13 +2060,14 @@
         aTypes.push_back(ITYPE(document::XLinkTargetSupplier));
         aTypes.push_back(ITYPE( drawing::XShapeCombiner ));
         aTypes.push_back(ITYPE( drawing::XShapeBinder ));
+		aTypes.push_back(ITYPE( beans::XMultiPropertySet ));
         if( bPresPage )
             aTypes.push_back(ITYPE(presentation::XPresentationPage));
         if( bPresPage && ePageKind == PK_STANDARD )
             aTypes.push_back(ITYPE(XAnimationNodeSupplier));
 
         // Get types of base class.
-        const uno::Sequence< uno::Type > aBaseTypes( SdGenericDrawPage::getTypes() );
+        const Sequence< uno::Type > aBaseTypes( SdGenericDrawPage::getTypes() );
         const sal_Int32 nBaseTypes = aBaseTypes.getLength();
         const uno::Type* pBaseTypes = aBaseTypes.getConstArray();
 
@@ -2023,13 +2084,13 @@
 	return maTypeSequence;
 }
 
-uno::Sequence< sal_Int8 > SAL_CALL SdDrawPage::getImplementationId() throw(uno::RuntimeException)
+Sequence< sal_Int8 > SAL_CALL SdDrawPage::getImplementationId() throw(uno::RuntimeException)
 {
 	OGuard aGuard( Application::GetSolarMutex() );
 
 	throwIfDisposed();
 
-	static uno::Sequence< sal_Int8 > aId;
+	static Sequence< sal_Int8 > aId;
 	if( aId.getLength() == 0 )
 	{
 		aId.realloc( 16 );
@@ -2084,7 +2145,7 @@
 	return getPageApiNameFromUiNameImpl( rUIName );
 }
 
-String getUiNameFromPageApiNameImpl( const ::rtl::OUString& rApiName )
+String getUiNameFromPageApiNameImpl( const OUString& rApiName )
 {
 	const String aDefPageName(RTL_CONSTASCII_USTRINGPARAM( sEmptyPageName ));
 	if( rApiName.compareTo( aDefPageName, aDefPageName.Len() ) == 0 )
@@ -2122,7 +2183,7 @@
 	return rApiName;
 }
 
-String SdDrawPage::getUiNameFromPageApiName( const ::rtl::OUString& rApiName )
+String SdDrawPage::getUiNameFromPageApiName( const OUString& rApiName )
 {
 	return getUiNameFromPageApiNameImpl( rApiName );
 }
@@ -2133,13 +2194,13 @@
 	return OUString( RTL_CONSTASCII_USTRINGPARAM("SdDrawPage") );
 }
 
-uno::Sequence< OUString > SAL_CALL SdDrawPage::getSupportedServiceNames() throw(uno::RuntimeException)
+Sequence< OUString > SAL_CALL SdDrawPage::getSupportedServiceNames() throw(uno::RuntimeException)
 {
 	OGuard aGuard( Application::GetSolarMutex() );
 
 	throwIfDisposed();
 
-	uno::Sequence< OUString > aSeq( SdGenericDrawPage::getSupportedServiceNames() );
+	Sequence< OUString > aSeq( SdGenericDrawPage::getSupportedServiceNames() );
 	SvxServiceInfoHelper::addToSequence( aSeq, 1, "com.sun.star.drawing.DrawPage" );
 
 	if( mbIsImpressDocument )
@@ -2441,7 +2502,7 @@
 		Reference< beans::XPropertySet >  xDestSet( (beans::XPropertySet*)pBackground );
 		Reference< beans::XPropertySetInfo >  xDestSetInfo( xDestSet->getPropertySetInfo() );
 
-		uno::Sequence< beans::Property > aProperties( xDestSetInfo->getProperties() );
+		Sequence< beans::Property > aProperties( xDestSetInfo->getProperties() );
 		sal_Int32 nCount = aProperties.getLength();
 		beans::Property* pProp = aProperties.getArray();
 
@@ -2549,7 +2610,7 @@
 UNO3_GETIMPLEMENTATION2_IMPL( SdMasterPage, SdGenericDrawPage );
 
 // XTypeProvider
-uno::Sequence< uno::Type > SAL_CALL SdMasterPage::getTypes() throw(uno::RuntimeException)
+Sequence< uno::Type > SAL_CALL SdMasterPage::getTypes() throw(uno::RuntimeException)
 {
 	OGuard aGuard( Application::GetSolarMutex() );
 
@@ -2571,13 +2632,14 @@
         aTypes.push_back(ITYPE(document::XLinkTargetSupplier));
         aTypes.push_back(ITYPE( drawing::XShapeCombiner ));
         aTypes.push_back(ITYPE( drawing::XShapeBinder ));
+		aTypes.push_back(ITYPE( beans::XMultiPropertySet ));
         if( bPresPage )
             aTypes.push_back(ITYPE(presentation::XPresentationPage));
         if( bPresPage && ePageKind == PK_STANDARD )
             aTypes.push_back(ITYPE(XAnimationNodeSupplier));
 
         // Get types of base class.
-        const uno::Sequence< uno::Type > aBaseTypes( SdGenericDrawPage::getTypes() );
+        const Sequence< uno::Type > aBaseTypes( SdGenericDrawPage::getTypes() );
         const sal_Int32 nBaseTypes = aBaseTypes.getLength();
         const uno::Type* pBaseTypes = aBaseTypes.getConstArray();
 
@@ -2594,13 +2656,13 @@
 	return maTypeSequence;
 }
 
-uno::Sequence< sal_Int8 > SAL_CALL SdMasterPage::getImplementationId() throw(uno::RuntimeException)
+Sequence< sal_Int8 > SAL_CALL SdMasterPage::getImplementationId() throw(uno::RuntimeException)
 {
 	OGuard aGuard( Application::GetSolarMutex() );
 
 	throwIfDisposed();
 
-	static uno::Sequence< sal_Int8 > aId;
+	static Sequence< sal_Int8 > aId;
 	if( aId.getLength() == 0 )
 	{
 		aId.realloc( 16 );
@@ -2615,13 +2677,13 @@
 	return OUString( RTL_CONSTASCII_USTRINGPARAM("SdMasterPage") );
 }
 
-uno::Sequence< OUString > SAL_CALL SdMasterPage::getSupportedServiceNames() throw(uno::RuntimeException)
+Sequence< OUString > SAL_CALL SdMasterPage::getSupportedServiceNames() throw(uno::RuntimeException)
 {
 	OGuard aGuard( Application::GetSolarMutex() );
 
 	throwIfDisposed();
 
-	uno::Sequence< OUString > aSeq( SdGenericDrawPage::getSupportedServiceNames() );
+	Sequence< OUString > aSeq( SdGenericDrawPage::getSupportedServiceNames() );
 	SvxServiceInfoHelper::addToSequence( aSeq, 1, "com.sun.star.drawing.MasterPage" );
 
 	if( SvxFmDrawPage::mpPage && ((SdPage*)SvxFmDrawPage::mpPage)->GetPageKind() == PK_HANDOUT )
@@ -2707,7 +2769,7 @@
 				Reference< beans::XPropertySet >  xStyleSet( xFamily->getByName( aStyleName ), UNO_QUERY_THROW );
 
 				Reference< beans::XPropertySetInfo >  xSetInfo( xInputSet->getPropertySetInfo(), UNO_QUERY_THROW );
-				Reference< beans::XPropertyState > xSetStates( xInputSet, UNO_QUERY_THROW );
+				Reference< beans::XPropertyState > xSetStates( xInputSet, UNO_QUERY );
 
 				const SfxItemPropertyMap* pMap = ImplGetPageBackgroundPropertyMap();
 				while( pMap->pName )
Index: sd/source/ui/unoidl/unopage.hxx
===================================================================
RCS file: /cvs/graphics/sd/source/ui/unoidl/unopage.hxx,v
retrieving revision 1.16
retrieving revision 1.14.100.2
diff -u -b -I $Revision.*$ -I $Author.*$ -r1.16 -r1.14.100.2
--- sd/source/ui/unoidl/unopage.hxx	14 Nov 2006 14:39:09 -0000	1.16
+++ sd/source/ui/unoidl/unopage.hxx	18 Jan 2007 00:58:09 -0000	1.14.100.2
@@ -53,8 +53,9 @@
 #ifndef _COM_SUN_STAR_ANIMATIONS_XANIMATIONNODESUPPLIER_HPP_
 #include <com/sun/star/animations/XAnimationNodeSupplier.hpp>
 #endif
-
-
+#ifndef _COM_SUN_STAR_BEANS_XMULTIPROPERTYSET_HPP_
+#include <com/sun/star/beans/XMultiPropertySet.hpp>
+#endif
 
 #ifndef _SFX_ITEMPROP_HXX
 #include <svtools/itemprop.hxx>
@@ -92,6 +93,7 @@
 						  public ::com::sun::star::drawing::XShapeBinder,			
 						  public ::com::sun::star::container::XNamed,
 						  public ::com::sun::star::beans::XPropertySet,
+						  public ::com::sun::star::beans::XMultiPropertySet,
 						  public ::com::sun::star::animations::XAnimationNodeSupplier,
 						  public ::com::sun::star::document::XLinkTargetSupplier
 {
@@ -165,6 +167,13 @@
     virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
     virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
 
+	// XMultiPropertySet
+    virtual void SAL_CALL setPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aValues ) throw (::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+    virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > SAL_CALL getPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames ) throw (::com::sun::star::uno::RuntimeException);
+    virtual void SAL_CALL addPropertiesChangeListener( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
+    virtual void SAL_CALL removePropertiesChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
+    virtual void SAL_CALL firePropertiesChangeEvent( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
+
 	// XLinkTargetSupplier
     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getLinks(  ) throw(::com::sun::star::uno::RuntimeException);
 
Index: sd/source/ui/unoidl/unopback.cxx
===================================================================
RCS file: /cvs/graphics/sd/source/ui/unoidl/unopback.cxx,v
retrieving revision 1.15
retrieving revision 1.15.32.1
diff -u -b -I $Revision.*$ -I $Author.*$ -r1.15 -r1.15.32.1
--- sd/source/ui/unoidl/unopback.cxx	12 Dec 2006 19:02:01 -0000	1.15
+++ sd/source/ui/unoidl/unopback.cxx	27 Jun 2007 14:55:12 -0000	1.15.32.1
@@ -166,6 +166,21 @@
 				if( pAny )
 				{
 					OUString aPropertyName( OUString::createFromAscii(pMap->pName));
+					if ( pMap->nWID == XATTR_FILLBITMAP )
+					{
+						if ( ( ( pAny->getValueType() == ::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XBitmap >*)0) ) ||
+								( pAny->getValueType() == ::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic >*)0) ) ) &&
+								( pMap->nMemberId == MID_BITMAP ) )
+						{
+							setPropertyValue( aPropertyName, *pAny );
+						}
+						else if ( ( pAny->getValueType() == ::getCppuType((const ::rtl::OUString*)0) ) &&
+									( ( pMap->nMemberId == MID_NAME ) || ( pMap->nMemberId == MID_GRAFURL ) ) )
+						{
+							setPropertyValue( aPropertyName, *pAny );
+						}
+					}
+					else
 					setPropertyValue( aPropertyName, *pAny );
 				}
 				pMap++;
