diff options
author | Jens-Heiner Rechtien <hr@openoffice.org> | 2004-11-09 11:32:07 +0000 |
---|---|---|
committer | Jens-Heiner Rechtien <hr@openoffice.org> | 2004-11-09 11:32:07 +0000 |
commit | 429a4a39e470752c883ba874f6d990a7334323ca (patch) | |
tree | 8b22c540e186ab3a4f4f8a1878efc9e9b7fb2af5 /sw/source/filter | |
parent | eb54f4ddd7878cf0473c759512f185543d37b3e7 (diff) |
INTEGRATION: CWS oasisbf1 (1.55.54); FILE MERGED
2004/10/20 05:38:14 mib 1.55.54.4: merge conflicts
2004/10/15 10:01:39 mib 1.55.54.3: RESYNC: (1.57-1.58); FILE MERGED
2004/09/02 09:27:10 mib 1.55.54.2: RESYNC: (1.55-1.57); FILE MERGED
2004/08/19 10:53:10 mib 1.55.54.1: #i32781#: set insert/style modes by using properties rather than UNOTunnel
Diffstat (limited to 'sw/source/filter')
-rw-r--r-- | sw/source/filter/xml/swxml.cxx | 151 |
1 files changed, 81 insertions, 70 deletions
diff --git a/sw/source/filter/xml/swxml.cxx b/sw/source/filter/xml/swxml.cxx index e0b8e8ffa457..56cffa18201b 100644 --- a/sw/source/filter/xml/swxml.cxx +++ b/sw/source/filter/xml/swxml.cxx @@ -2,9 +2,9 @@ * * $RCSfile: swxml.cxx,v $ * - * $Revision: 1.58 $ + * $Revision: 1.59 $ * - * last change: $Author: kz $ $Date: 2004-10-04 19:21:27 $ + * last change: $Author: hr $ $Date: 2004-11-09 12:32:07 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -163,9 +163,6 @@ #ifndef _SW_XMLSECTIONLIST_HXX #include <SwXMLSectionList.hxx> #endif -#ifndef _XMLIMP_HXX -#include <xmlimp.hxx> -#endif #ifndef _STATSTR_HRC #include <statstr.hrc> @@ -231,14 +228,6 @@ sal_Int32 ReadThroughComponent( Sequence<Any> rFilterArguments, const OUString& rName, sal_Bool bMustBeSuccessfull, - - // parameters for special modes - sal_Bool bBlockMode, - Reference<XTextRange> & rInsertTextRange, - sal_Bool bFormatsOnly, - sal_uInt16 nStyleFamilyMask, - sal_Bool bMergeStyles, - sal_Bool bOrganizerMode, sal_Bool bEncrypted ) { DBG_ASSERT(xInputStream.is(), "input stream missing"); @@ -280,32 +269,6 @@ sal_Int32 ReadThroughComponent( Reference < XImporter > xImporter( xFilter, UNO_QUERY ); xImporter->setTargetDocument( xModelComponent ); - // prepare filter for special modes - if( bBlockMode || bFormatsOnly || rInsertTextRange.is() || bOrganizerMode ) - { - Reference<XUnoTunnel> xFilterTunnel( xFilter, UNO_QUERY ); - if (xFilterTunnel.is()) - { - SwXMLImport* pFilter = (SwXMLImport *)xFilterTunnel->getSomething( - SwXMLImport::getUnoTunnelId() ); - - if ( NULL != pFilter ) - { - // In formats only mode the reader's bInsertMode is set - if ( bFormatsOnly ) - pFilter->setStyleInsertMode( nStyleFamilyMask, - !bMergeStyles ); - if ( rInsertTextRange.is() ) - pFilter->setTextInsertMode( rInsertTextRange ); - - if ( bBlockMode ) - pFilter->setBlockMode(); - - if ( bOrganizerMode ) - pFilter->setOrganizerMode(); - } - } - } #ifdef TIMELOG // if we do profiling, we want to know the stream @@ -403,15 +366,7 @@ sal_Int32 ReadThroughComponent( const sal_Char* pFilterName, Sequence<Any> rFilterArguments, const OUString& rName, - sal_Bool bMustBeSuccessfull, - - // parameters for special modes - sal_Bool bBlockMode, - Reference<XTextRange> & rInsertTextRange, - sal_Bool bFormatsOnly, - sal_uInt16 nStyleFamilyMask, - sal_Bool bMergeStyles, - sal_Bool bOrganizerMode ) + sal_Bool bMustBeSuccessfull) { DBG_ASSERT(xStorage.is(), "Need storage!"); DBG_ASSERT(NULL != pStreamName, "Please, please, give me a name!"); @@ -479,8 +434,7 @@ sal_Int32 ReadThroughComponent( return ReadThroughComponent( xInputStream, xModelComponent, sStreamName, rFactory, pFilterName, rFilterArguments, - rName, bMustBeSuccessfull, bBlockMode, rInsertTextRange, bFormatsOnly, - nStyleFamilyMask, bMergeStyles, bOrganizerMode, bEncrypted ); + rName, bMustBeSuccessfull, bEncrypted ); } catch ( packages::WrongPasswordException& ) { @@ -591,6 +545,22 @@ sal_uInt32 XMLReader::Read( SwDoc &rDoc, SwPaM &rPaM, const String & rName ) { "StreamName", sizeof("StreamName")-1, 0, &::getCppuType( (OUString *)0 ), beans::PropertyAttribute::MAYBEVOID, 0 }, + // properties for insert modes + { "StyleInsertModeFamilies", sizeof("StyleInsertModeFamilies")-1, 0, + &::getCppuType((Sequence<OUString>*)0), + beans::PropertyAttribute::MAYBEVOID, 0 }, + { "StyleInsertModeOverwrite", sizeof("StyleInsertModeOverwrite")-1, 0, + &::getBooleanCppuType(), + beans::PropertyAttribute::MAYBEVOID, 0 }, + { "TextInsertModeRange", sizeof("TextInsertModeRange")-1, 0, + &::getCppuType( (Reference<text::XTextRange> *) 0), + beans::PropertyAttribute::MAYBEVOID, 0}, + { "AutoTextMode", sizeof("AutoTextMode")-1, 0, + &::getBooleanCppuType(), + beans::PropertyAttribute::MAYBEVOID, 0 }, + { "OrganizerMode", sizeof("OrganizerMode")-1, 0, + &::getBooleanCppuType(), + beans::PropertyAttribute::MAYBEVOID, 0 }, // --> OD 2004-08-10 #i28749# - Add property, which indicates, if the // shape position attributes are given in horizontal left-to-right layout. // This is the case for the OpenOffice.org file format. @@ -646,23 +616,53 @@ sal_uInt32 XMLReader::Read( SwDoc &rDoc, SwPaM &rPaM, const String & rName ) *pArgs++ <<= xStatusIndicator; // prepare for special modes - sal_uInt16 nStyleFamilyMask = 0U; - Reference<XTextRange> xInsertTextRange = NULL; if( aOpt.IsFmtsOnly() ) { + sal_Int32 nCount = + (aOpt.IsFrmFmts() ? 1 : 0) + + (aOpt.IsPageDescs() ? 1 : 0) + + (aOpt.IsTxtFmts() ? 2 : 0) + + (aOpt.IsNumRules() ? 1 : 0); + + Sequence< OUString> aFamiliesSeq( nCount ); + OUString *pSeq = aFamiliesSeq.getArray(); if( aOpt.IsFrmFmts() ) - nStyleFamilyMask |= SFX_STYLE_FAMILY_FRAME; + // SFX_STYLE_FAMILY_FRAME; + *pSeq++ = OUString::createFromAscii("FrameStyles"); if( aOpt.IsPageDescs() ) - nStyleFamilyMask |= SFX_STYLE_FAMILY_PAGE; + // SFX_STYLE_FAMILY_PAGE; + *pSeq++ = OUString::createFromAscii("PageStyles"); if( aOpt.IsTxtFmts() ) - nStyleFamilyMask |= (SFX_STYLE_FAMILY_CHAR|SFX_STYLE_FAMILY_PARA); + { + // (SFX_STYLE_FAMILY_CHAR|SFX_STYLE_FAMILY_PARA); + *pSeq++ = OUString::createFromAscii("CharacterStyles"); + *pSeq++ = OUString::createFromAscii("ParagraphStyles"); + } if( aOpt.IsNumRules() ) - nStyleFamilyMask |= SFX_STYLE_FAMILY_PSEUDO; + // SFX_STYLE_FAMILY_PSEUDO; + *pSeq++ = OUString::createFromAscii("NumberingStyles"); + + OUString sStyleInsertModeFamilies( + RTL_CONSTASCII_USTRINGPARAM("StyleInsertModeFamilies")); + xInfoSet->setPropertyValue( sStyleInsertModeFamilies, + makeAny(aFamiliesSeq) ); + + OUString sStyleInsertModeOverwrite( + RTL_CONSTASCII_USTRINGPARAM("StyleInsertModeOverwrite")); + sal_Bool bTmp = !aOpt.IsMerge(); + Any aAny; + aAny.setValue( &bTmp, ::getBooleanCppuType() ); + xInfoSet->setPropertyValue( sStyleInsertModeOverwrite, aAny ); } else if( bInsertMode ) { - xInsertTextRange = SwXTextRange::CreateTextRangeFromPosition( - &rDoc, *rPaM.GetPoint(), 0 ); + Reference<XTextRange> xInsertTextRange = + SwXTextRange::CreateTextRangeFromPosition( &rDoc, *rPaM.GetPoint(), + 0 ); + OUString sTextInsertModeRange( + RTL_CONSTASCII_USTRINGPARAM("TextInsertModeRange")); + xInfoSet->setPropertyValue( sTextInsertModeRange, + makeAny(xInsertTextRange) ); } else { @@ -670,6 +670,25 @@ sal_uInt32 XMLReader::Read( SwDoc &rDoc, SwPaM &rPaM, const String & rName ) rPaM.GetBound(false).nContent.Assign(0, 0); } + if( IsBlockMode() ) + { + OUString sAutoTextMode( + RTL_CONSTASCII_USTRINGPARAM("AutoTextMode")); + sal_Bool bTmp = sal_True; + Any aAny; + aAny.setValue( &bTmp, ::getBooleanCppuType() ); + xInfoSet->setPropertyValue( sAutoTextMode, aAny ); + } + if( IsOrganizerMode() ) + { + OUString sOrganizerMode( + RTL_CONSTASCII_USTRINGPARAM("OrganizerMode")); + sal_Bool bTmp = sal_True; + Any aAny; + aAny.setValue( &bTmp, ::getBooleanCppuType() ); + xInfoSet->setPropertyValue( sOrganizerMode, aAny ); + } + // Set base URI // there is ambiguity which medium should be used here // for now the own medium has a preference @@ -747,35 +766,27 @@ sal_uInt32 XMLReader::Read( SwDoc &rDoc, SwPaM &rPaM, const String & rName ) xStorage, xModelComp, "meta.xml", "Meta.xml", xServiceFactory, (bOASIS ? "com.sun.star.comp.Writer.XMLOasisMetaImporter" : "com.sun.star.comp.Writer.XMLMetaImporter"), - aEmptyArgs, rName, sal_False, IsBlockMode(), xInsertTextRange, - aOpt.IsFmtsOnly(), nStyleFamilyMask, aOpt.IsMerge(), - sal_False ); + aEmptyArgs, rName, sal_False ); nWarn2 = ReadThroughComponent( xStorage, xModelComp, "settings.xml", NULL, xServiceFactory, (bOASIS ? "com.sun.star.comp.Writer.XMLOasisSettingsImporter" : "com.sun.star.comp.Writer.XMLSettingsImporter"), - aFilterArgs, rName, sal_False, IsBlockMode(), xInsertTextRange, - aOpt.IsFmtsOnly(), nStyleFamilyMask, aOpt.IsMerge(), - IsOrganizerMode() ); + aFilterArgs, rName, sal_False ); } nRet = ReadThroughComponent( xStorage, xModelComp, "styles.xml", NULL, xServiceFactory, (bOASIS ? "com.sun.star.comp.Writer.XMLOasisStylesImporter" : "com.sun.star.comp.Writer.XMLStylesImporter"), - aFilterArgs, rName, sal_True, IsBlockMode(), xInsertTextRange, - aOpt.IsFmtsOnly(), nStyleFamilyMask, aOpt.IsMerge(), - IsOrganizerMode() ); + aFilterArgs, rName, sal_True ); if( !nRet && !(IsOrganizerMode() || aOpt.IsFmtsOnly()) ) nRet = ReadThroughComponent( xStorage, xModelComp, "content.xml", "Content.xml", xServiceFactory, (bOASIS ? "com.sun.star.comp.Writer.XMLOasisContentImporter" : "com.sun.star.comp.Writer.XMLContentImporter"), - aFilterArgs, rName, sal_True, IsBlockMode(), xInsertTextRange, - aOpt.IsFmtsOnly(), nStyleFamilyMask, aOpt.IsMerge(), - sal_False ); + aFilterArgs, rName, sal_True ); if( !(IsOrganizerMode() || IsBlockMode() || bInsertMode || aOpt.IsFmtsOnly() ) ) |