You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by or...@apache.org on 2013/12/19 13:31:37 UTC
svn commit: r1552294 [2/2] - in /openoffice/trunk: ./
main/offapi/com/sun/star/text/textfield/ main/sw/inc/
main/sw/source/core/crsr/ main/sw/source/core/doc/
main/sw/source/core/fields/ main/sw/source/core/inc/
main/sw/source/core/text/ main/sw/source...
Modified: openoffice/trunk/main/sw/source/ui/shells/textfld.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sw/source/ui/shells/textfld.cxx?rev=1552294&r1=1552293&r2=1552294&view=diff
==============================================================================
--- openoffice/trunk/main/sw/source/ui/shells/textfld.cxx (original)
+++ openoffice/trunk/main/sw/source/ui/shells/textfld.cxx Thu Dec 19 12:31:35 2013
@@ -354,53 +354,61 @@ void SwTextShell::ExecField(SfxRequest &
GetView().GetPostItMgr()->Hide( pNoteItem->GetValue() );
}
break;
- case FN_POSTIT:
- {
- SwPostItField* pPostIt = dynamic_cast<SwPostItField*>(aFldMgr.GetCurFld());
- sal_Bool bNew = !(pPostIt && pPostIt->GetTyp()->Which() == RES_POSTITFLD);
- if (bNew || GetView().GetPostItMgr()->IsAnswer())
- {
- SvtUserOptions aUserOpt;
- String sAuthor;
- if( !(sAuthor = aUserOpt.GetFullName()).Len())
- if( !(sAuthor = aUserOpt.GetID()).Len() )
- sAuthor = String( SW_RES( STR_REDLINE_UNKNOWN_AUTHOR ));
- if( rSh.HasSelection() )
- {
- rSh.NormalizePam(true);
- rSh.KillPams();
- rSh.ClearMark();
- }
-
- // #120513# Inserting a comment into an autocompletion crashes
- // --> suggestion has to be removed before
- GetView().GetEditWin().StopQuickHelp();
-
- SwInsertFld_Data aData(TYP_POSTITFLD, 0, sAuthor, aEmptyStr, 0);
- aFldMgr.InsertFld(aData);
- rSh.Push();
- rSh.SwCrsrShell::Left(1, CRSR_SKIP_CHARS, sal_False);
- pPostIt = (SwPostItField*)aFldMgr.GetCurFld();
- rSh.Pop(sal_False); // Cursorpos restaurieren
- }
- if (pPostIt)
- {
- SwFieldType* pType = rSh.GetDoc()->GetFldType(RES_POSTITFLD, aEmptyStr,false);
- SwIterator<SwFmtFld,SwFieldType> aIter( *pType );
- SwFmtFld* pSwFmtFld = aIter.First();
- while( pSwFmtFld )
- {
- if ( pSwFmtFld->GetField() == pPostIt )
- {
- pSwFmtFld->Broadcast( SwFmtFldHint( 0, SWFMTFLD_FOCUS, &GetView() ) );
- break;
- }
- pSwFmtFld = aIter.Next();
- }
- }
- }
- break;
+ case FN_POSTIT:
+ {
+ SwPostItField* pPostIt = dynamic_cast<SwPostItField*>(aFldMgr.GetCurFld());
+ sal_Bool bNew = !(pPostIt && pPostIt->GetTyp()->Which() == RES_POSTITFLD);
+ if (bNew || GetView().GetPostItMgr()->IsAnswer())
+ {
+ SvtUserOptions aUserOpt;
+ String sAuthor;
+ if( !(sAuthor = aUserOpt.GetFullName()).Len())
+ if( !(sAuthor = aUserOpt.GetID()).Len() )
+ sAuthor = String( SW_RES( STR_REDLINE_UNKNOWN_AUTHOR ));
+
+ // Save the current selection, it will be required later for fieldmark insertion.
+ const SwPaM& rCurrPaM = rSh.GetCurrentShellCursor();
+ const SwPaM aSavedPaM( *rCurrPaM.GetPoint(), *rCurrPaM.GetMark() );
+
+ if( rSh.HasSelection() )
+ {
+ rSh.NormalizePam( sal_False );
+ rSh.KillPams();
+ rSh.ClearMark();
+ }
+
+ // #120513# Inserting a comment into an autocompletion crashes
+ // --> suggestion has to be removed before
+ GetView().GetEditWin().StopQuickHelp();
+
+ SwInsertFld_Data aData(TYP_POSTITFLD, 0, sAuthor, aEmptyStr, 0);
+ aFldMgr.InsertFld( aData, &aSavedPaM );
+
+ rSh.Push();
+ rSh.SwCrsrShell::Left(1, CRSR_SKIP_CHARS, sal_False);
+ pPostIt = (SwPostItField*)aFldMgr.GetCurFld();
+ rSh.Pop(sal_False); // Cursorpos restaurieren
+ }
+
+ if (pPostIt)
+ {
+ SwFieldType* pType = rSh.GetDoc()->GetFldType(RES_POSTITFLD, aEmptyStr,false);
+ SwIterator<SwFmtFld,SwFieldType> aIter( *pType );
+ SwFmtFld* pSwFmtFld = aIter.First();
+ while( pSwFmtFld )
+ {
+ if ( pSwFmtFld->GetField() == pPostIt )
+ {
+ pSwFmtFld->Broadcast( SwFmtFldHint( 0, SWFMTFLD_FOCUS, &GetView() ) );
+ break;
+ }
+ pSwFmtFld = aIter.Next();
+ }
+ }
+ }
+ break;
+
case FN_REDLINE_COMMENT:
{
/* this code can be used once we want redline comments in the margin, all other stuff can
Modified: openoffice/trunk/main/sw/source/ui/wrtsh/wrtsh2.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sw/source/ui/wrtsh/wrtsh2.cxx?rev=1552294&r1=1552293&r2=1552294&view=diff
==============================================================================
--- openoffice/trunk/main/sw/source/ui/wrtsh/wrtsh2.cxx (original)
+++ openoffice/trunk/main/sw/source/ui/wrtsh/wrtsh2.cxx Thu Dec 19 12:31:35 2013
@@ -65,6 +65,7 @@
#include "swabstdlg.hxx"
#include "fldui.hrc"
#include <SwRewriter.hxx>
+#include <xmloff/odffields.hxx>
#include <com/sun/star/document/XDocumentProperties.hpp>
#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
@@ -74,27 +75,41 @@
Beschreibung:
------------------------------------------------------------------------*/
-void SwWrtShell::Insert(SwField &rFld)
-{
- ResetCursorStack();
- if(!_CanInsert())
- return;
- StartAllAction();
+void SwWrtShell::Insert(
+ SwField& rFld,
+ const SwPaM* pCommentRange )
+{
+ ResetCursorStack();
+ if(!_CanInsert())
+ return;
+ StartAllAction();
SwRewriter aRewriter;
aRewriter.AddRule(UNDO_ARG1, rFld.GetDescription());
- StartUndo(UNDO_INSERT, &aRewriter);
+ StartUndo(UNDO_INSERT, &aRewriter);
+
+ if ( pCommentRange && GetDoc() )
+ {
+ // If an annotation field is inserted, take care of the relevant fieldmark.
+ IDocumentMarkAccess* pMarksAccess = GetDoc()->getIDocumentMarkAccess();
+ sw::mark::IFieldmark* pFieldmark =
+ pMarksAccess->makeFieldBookmark(
+ *pCommentRange,
+ ::rtl::OUString(),
+ ::rtl::OUString::createFromAscii( ODF_COMMENTRANGE ) );
+ ((SwPostItField&)rFld).SetName(pFieldmark->GetName());
+ }
bool bDeleted = false;
- if( HasSelection() )
+ if( HasSelection() )
{
bDeleted = DelRight() != 0;
}
SwEditShell::Insert2(rFld, bDeleted);
EndUndo();
- EndAllAction();
+ EndAllAction();
}
/*--------------------------------------------------------------------
Modified: openoffice/trunk/main/writerfilter/source/dmapper/DomainMapper.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/writerfilter/source/dmapper/DomainMapper.cxx?rev=1552294&r1=1552293&r2=1552294&view=diff
==============================================================================
--- openoffice/trunk/main/writerfilter/source/dmapper/DomainMapper.cxx (original)
+++ openoffice/trunk/main/writerfilter/source/dmapper/DomainMapper.cxx Thu Dec 19 12:31:35 2013
@@ -2074,6 +2074,15 @@ void DomainMapper::lcl_attribute(Id nNam
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
m_pImpl->SetCurrentRedlineId( nIntValue );
break;
+ case NS_ooxml::LN_CT_Comment_initials:
+ m_pImpl->SetCurrentRedlineInitials(sStringValue);
+ break;
+ case NS_ooxml::LN_EG_RangeMarkupElements_commentRangeStart:
+ m_pImpl->AddAnnotationPosition(true);
+ break;
+ case NS_ooxml::LN_EG_RangeMarkupElements_commentRangeEnd:
+ m_pImpl->AddAnnotationPosition(false);
+ break;
case NS_ooxml::LN_token:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
m_pImpl->SetCurrentRedlineToken( nIntValue );
Modified: openoffice/trunk/main/writerfilter/source/dmapper/DomainMapper_Impl.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/writerfilter/source/dmapper/DomainMapper_Impl.cxx?rev=1552294&r1=1552293&r2=1552294&view=diff
==============================================================================
--- openoffice/trunk/main/writerfilter/source/dmapper/DomainMapper_Impl.cxx (original)
+++ openoffice/trunk/main/writerfilter/source/dmapper/DomainMapper_Impl.cxx Thu Dec 19 12:31:35 2013
@@ -1276,9 +1276,32 @@ void DomainMapper_Impl::PopFootOrEndnote
void DomainMapper_Impl::PopAnnotation()
{
m_bIsInComments = false;
+
+ RemoveLastParagraph();
m_aTextAppendStack.pop();
- uno::Sequence< beans::PropertyValue > aEmptyProperties;
- appendTextContent( uno::Reference< text::XTextContent >( m_xAnnotationField, uno::UNO_QUERY_THROW ), aEmptyProperties );
+
+ // See if the annotation will be a single position or a range.
+ if ( !m_aAnnotationPosition.m_xStart.is()
+ || !m_aAnnotationPosition.m_xEnd.is() )
+ {
+ uno::Sequence< beans::PropertyValue > aEmptyProperties;
+ appendTextContent( uno::Reference< text::XTextContent >( m_xAnnotationField, uno::UNO_QUERY_THROW ), aEmptyProperties );
+ }
+ else
+ {
+ // Create a range that points to the annotation start/end.
+ uno::Reference<text::XText> xText = m_aAnnotationPosition.m_xStart->getText();
+ uno::Reference<text::XTextCursor> xCursor = xText->createTextCursorByRange(m_aAnnotationPosition.m_xStart);
+ xCursor->gotoRange(m_aAnnotationPosition.m_xEnd, true);
+ uno::Reference<text::XTextRange> xTextRange(xCursor, uno::UNO_QUERY_THROW);
+
+ // Attach the annotation to the range.
+ uno::Reference<text::XTextAppend> xTextAppend = m_aTextAppendStack.top().xTextAppend;
+ xTextAppend->insertTextContent(xTextRange, uno::Reference<text::XTextContent>(m_xAnnotationField, uno::UNO_QUERY_THROW), !xCursor->isCollapsed());
+ }
+
+ m_aAnnotationPosition.m_xStart.clear();
+ m_aAnnotationPosition.m_xEnd.clear();
m_xAnnotationField.clear();
}
@@ -2890,6 +2913,30 @@ void DomainMapper_Impl::handleToc
pContext->SetTOC( xTOC );
}
+void DomainMapper_Impl::AddAnnotationPosition(const bool bStart)
+{
+ if (m_aTextAppendStack.empty())
+ return;
+
+ // Create a cursor, pointing to the current position.
+ uno::Reference<text::XTextAppend> xTextAppend = m_aTextAppendStack.top().xTextAppend;
+ uno::Reference<text::XTextRange> xCurrent;
+ if (xTextAppend.is())
+ {
+ uno::Reference<text::XTextCursor> xCursor = xTextAppend->createTextCursorByRange(xTextAppend->getEnd());
+ xCurrent = xCursor->getStart();
+ }
+
+ // And save it, to be used by PopAnnotation() later.
+ if (bStart)
+ {
+ m_aAnnotationPosition.m_xStart = xCurrent;
+ }
+ else
+ {
+ m_aAnnotationPosition.m_xEnd = xCurrent;
+ }
+}
/*-- 29.01.2007 11:33:16---------------------------------------------------
//the field command has to be closed (0x14 appeared)
@@ -3727,6 +3774,16 @@ void DomainMapper_Impl::SetCurrentRedlin
pCurrent->m_sAuthor = sAuthor;
}
+void DomainMapper_Impl::SetCurrentRedlineInitials( rtl::OUString sInitials )
+{
+ if (m_xAnnotationField.is())
+ {
+ m_xAnnotationField->setPropertyValue(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Initials")),
+ uno::makeAny(sInitials) );
+ }
+}
+
void DomainMapper_Impl::SetCurrentRedlineDate( rtl::OUString sDate )
{
RedlineParamsPtr pCurrent( GetTopRedline( ) );
Modified: openoffice/trunk/main/writerfilter/source/dmapper/DomainMapper_Impl.hxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/writerfilter/source/dmapper/DomainMapper_Impl.hxx?rev=1552294&r1=1552293&r2=1552294&view=diff
==============================================================================
--- openoffice/trunk/main/writerfilter/source/dmapper/DomainMapper_Impl.hxx (original)
+++ openoffice/trunk/main/writerfilter/source/dmapper/DomainMapper_Impl.hxx Thu Dec 19 12:31:35 2013
@@ -232,6 +232,13 @@ struct BookmarkInsertPosition
{}
};
+/// Stores the start/end positions of an annotation before its insertion.
+struct AnnotationPosition
+{
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > m_xStart;
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > m_xEnd;
+};
+
struct RedlineParams
{
::rtl::OUString m_sAuthor;
@@ -346,6 +353,7 @@ private:
//annotation import
uno::Reference< beans::XPropertySet > m_xAnnotationField;
+ AnnotationPosition m_aAnnotationPosition;
void GetCurrentLocale(::com::sun::star::lang::Locale& rLocale);
void SetNumberFormat( const ::rtl::OUString& rCommand,
@@ -534,6 +542,8 @@ public:
void AddBookmark( const ::rtl::OUString& rBookmarkName, const ::rtl::OUString& rId );
+ void AddAnnotationPosition(const bool bStart);
+
DomainMapperTableManager& getTableManager()
{
boost::shared_ptr< DomainMapperTableManager > pMngr = m_aTableManagers.top();
@@ -585,7 +595,7 @@ public:
void AddNewRedline( );
RedlineParamsPtr GetTopRedline( );
-
+
sal_Int32 GetCurrentRedlineToken( );
void SetCurrentRedlineAuthor( rtl::OUString sAuthor );
void SetCurrentRedlineDate( rtl::OUString sDate );
@@ -593,7 +603,8 @@ public:
void SetCurrentRedlineToken( sal_Int32 nToken );
void RemoveCurrentRedline( );
void ResetParaRedline( );
-
+ void SetCurrentRedlineInitials( rtl::OUString sInitials );
+
void ApplySettingsTable();
SectionPropertyMap * GetSectionContext();
};
Modified: openoffice/trunk/main/writerfilter/source/ooxml/model.xml
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/writerfilter/source/ooxml/model.xml?rev=1552294&r1=1552293&r2=1552294&view=diff
==============================================================================
--- openoffice/trunk/main/writerfilter/source/ooxml/model.xml (original)
+++ openoffice/trunk/main/writerfilter/source/ooxml/model.xml Thu Dec 19 12:31:35 2013
@@ -14445,6 +14445,12 @@
</attribute>
<ref name="CT_MarkupRange"/>
</define>
+ <define name="CT_MarkupRangeCommentStart">
+ <ref name="CT_Markup"/>
+ </define>
+ <define name="CT_MarkupRangeCommentEnd">
+ <ref name="CT_Markup"/>
+ </define>
<define name="CT_BookmarkRange">
<ref name="CT_MarkupRangeBookmark"/>
<optional>
@@ -14608,10 +14614,10 @@
<ref name="CT_MarkupRange"/>
</element>
<element name="commentRangeStart">
- <ref name="CT_MarkupRange"/>
+ <ref name="CT_MarkupRangeCommentStart"/>
</element>
<element name="commentRangeEnd">
- <ref name="CT_MarkupRange"/>
+ <ref name="CT_MarkupRangeCommentEnd"/>
</element>
<element name="customXmlInsRangeStart">
<ref name="CT_TrackChange"/>
@@ -21829,6 +21835,12 @@
<resource name="CT_MarkupRangeBookmark" resource="Properties" tag="redline">
<attribute name="id" tokenid="rtf:IBKL"/>
</resource>
+ <resource name="CT_MarkupRangeCommentStart" resource="Properties" tag="content">
+ <attribute name="id" tokenid="ooxml:EG_RangeMarkupElements_commentRangeStart"/>
+ </resource>
+ <resource name="CT_MarkupRangeCommentEnd" resource="Properties" tag="content">
+ <attribute name="id" tokenid="ooxml:EG_RangeMarkupElements_commentRangeEnd"/>
+ </resource>
<resource name="CT_BookmarkRange" resource="Properties" tag="reference">
<type name="Bookmark"/>
<attribute name="colFirst" tokenid="ooxml:CT_BookmarkRange_colFirst"/>
Modified: openoffice/trunk/main/xmloff/inc/txtflde.hxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/xmloff/inc/txtflde.hxx?rev=1552294&r1=1552293&r2=1552294&view=diff
==============================================================================
--- openoffice/trunk/main/xmloff/inc/txtflde.hxx (original)
+++ openoffice/trunk/main/xmloff/inc/txtflde.hxx Thu Dec 19 12:31:35 2013
@@ -434,109 +434,104 @@ protected:
::com::sun::star::beans::XPropertySet > & xPropSet);
- /// explode a field master name into field type and field name
- sal_Bool ExplodeFieldMasterName(
- const ::rtl::OUString& sMasterName, /// name as returned by SO API
- ::rtl::OUString& sFieldType, /// out: field type
- ::rtl::OUString& sVarName); /// out: variable name
-
- /// make reference name for a foot- or endnote
- static ::rtl::OUString MakeFootnoteRefName(sal_Int16 nSeqNo);
-
- /// make reference name for a sequence field
- static ::rtl::OUString MakeSequenceRefName(sal_Int16 nSeqNo,
- const ::rtl::OUString& rSeqName);
-
-private:
- // constants
-
- // service names
- const ::rtl::OUString sServicePrefix;
- const ::rtl::OUString sFieldMasterPrefix;
- const ::rtl::OUString sPresentationServicePrefix;
-
- // property names
- const ::rtl::OUString sPropertyAdjust;
- const ::rtl::OUString sPropertyAuthor;
- const ::rtl::OUString sPropertyChapterFormat;
- const ::rtl::OUString sPropertyChapterNumberingLevel;
- const ::rtl::OUString sPropertyCharStyleNames;
- const ::rtl::OUString sPropertyCondition;
- const ::rtl::OUString sPropertyContent;
- const ::rtl::OUString sPropertyDataBaseName;
- const ::rtl::OUString sPropertyDataBaseURL;
- const ::rtl::OUString sPropertyDataColumnName;
- const ::rtl::OUString sPropertyDataCommandType;
- const ::rtl::OUString sPropertyDataTableName;
- const ::rtl::OUString sPropertyDate;
- const ::rtl::OUString sPropertyDateTime;
- const ::rtl::OUString sPropertyDateTimeValue;
- const ::rtl::OUString sPropertyDDECommandElement;
- const ::rtl::OUString sPropertyDDECommandFile;
- const ::rtl::OUString sPropertyDDECommandType;
- const ::rtl::OUString sPropertyDependentTextFields;
- const ::rtl::OUString sPropertyFalseContent;
- const ::rtl::OUString sPropertyFields;
- const ::rtl::OUString sPropertyFieldSubType;
- const ::rtl::OUString sPropertyFileFormat;
- const ::rtl::OUString sPropertyFullName;
- const ::rtl::OUString sPropertyHint;
- const ::rtl::OUString sPropertyInstanceName;
- const ::rtl::OUString sPropertyIsAutomaticUpdate;
- const ::rtl::OUString sPropertyIsConditionTrue;
- const ::rtl::OUString sPropertyIsDataBaseFormat;
- const ::rtl::OUString sPropertyIsDate;
- const ::rtl::OUString sPropertyIsExpression;
- const ::rtl::OUString sPropertyIsFixed;
- const ::rtl::OUString sPropertyIsFixedLanguage;
- const ::rtl::OUString sPropertyIsHidden;
- const ::rtl::OUString sPropertyIsInput;
- const ::rtl::OUString sPropertyIsShowFormula;
- const ::rtl::OUString sPropertyIsVisible;
- const ::rtl::OUString sPropertyItems;
- const ::rtl::OUString sPropertyLevel;
- const ::rtl::OUString sPropertyMacro;
- const ::rtl::OUString sPropertyMeasureKind;
- const ::rtl::OUString sPropertyName;
- const ::rtl::OUString sPropertyNumberFormat;
- const ::rtl::OUString sPropertyNumberingSeparator;
- const ::rtl::OUString sPropertyNumberingType;
- const ::rtl::OUString sPropertyOffset;
- const ::rtl::OUString sPropertyOn;
- const ::rtl::OUString sPropertyPlaceholder;
- const ::rtl::OUString sPropertyPlaceholderType;
- const ::rtl::OUString sPropertyReferenceFieldPart;
- const ::rtl::OUString sPropertyReferenceFieldSource;
- const ::rtl::OUString sPropertyReferenceFieldType;
- const ::rtl::OUString sPropertyRevision;
- const ::rtl::OUString sPropertyScriptType;
- const ::rtl::OUString sPropertySelectedItem;
- const ::rtl::OUString sPropertySequenceNumber;
- const ::rtl::OUString sPropertySequenceValue;
- const ::rtl::OUString sPropertySetNumber;
- const ::rtl::OUString sPropertySourceName;
- const ::rtl::OUString sPropertySubType;
- const ::rtl::OUString sPropertyTargetFrame;
- const ::rtl::OUString sPropertyTrueContent;
- const ::rtl::OUString sPropertyURL;
- const ::rtl::OUString sPropertyURLContent;
- const ::rtl::OUString sPropertyUserText;
- const ::rtl::OUString sPropertyValue;
- const ::rtl::OUString sPropertyVariableName;
- const ::rtl::OUString sPropertyVariableSubType;
+ /// explode a field master name into field type and field name
+ sal_Bool ExplodeFieldMasterName(
+ const ::rtl::OUString& sMasterName, /// name as returned by SO API
+ ::rtl::OUString& sFieldType, /// out: field type
+ ::rtl::OUString& sVarName); /// out: variable name
+
+ /// make reference name for a foot- or endnote
+ static ::rtl::OUString MakeFootnoteRefName(sal_Int16 nSeqNo);
+
+ /// make reference name for a sequence field
+ static ::rtl::OUString MakeSequenceRefName(
+ sal_Int16 nSeqNo,
+ const ::rtl::OUString& rSeqName );
+
+private:
+ // service names
+ const ::rtl::OUString sServicePrefix;
+ const ::rtl::OUString sFieldMasterPrefix;
+ const ::rtl::OUString sPresentationServicePrefix;
+
+ // property names
+ const ::rtl::OUString sPropertyAdjust;
+ const ::rtl::OUString sPropertyAuthor;
+ const ::rtl::OUString sPropertyChapterFormat;
+ const ::rtl::OUString sPropertyChapterNumberingLevel;
+ const ::rtl::OUString sPropertyCharStyleNames;
+ const ::rtl::OUString sPropertyCondition;
+ const ::rtl::OUString sPropertyContent;
+ const ::rtl::OUString sPropertyDataBaseName;
+ const ::rtl::OUString sPropertyDataBaseURL;
+ const ::rtl::OUString sPropertyDataColumnName;
+ const ::rtl::OUString sPropertyDataCommandType;
+ const ::rtl::OUString sPropertyDataTableName;
+ const ::rtl::OUString sPropertyDate;
+ const ::rtl::OUString sPropertyDateTime;
+ const ::rtl::OUString sPropertyDateTimeValue;
+ const ::rtl::OUString sPropertyDDECommandElement;
+ const ::rtl::OUString sPropertyDDECommandFile;
+ const ::rtl::OUString sPropertyDDECommandType;
+ const ::rtl::OUString sPropertyDependentTextFields;
+ const ::rtl::OUString sPropertyFalseContent;
+ const ::rtl::OUString sPropertyFields;
+ const ::rtl::OUString sPropertyFieldSubType;
+ const ::rtl::OUString sPropertyFileFormat;
+ const ::rtl::OUString sPropertyFullName;
+ const ::rtl::OUString sPropertyHint;
+ const ::rtl::OUString sPropertyInitials;
+ const ::rtl::OUString sPropertyInstanceName;
+ const ::rtl::OUString sPropertyIsAutomaticUpdate;
+ const ::rtl::OUString sPropertyIsConditionTrue;
+ const ::rtl::OUString sPropertyIsDataBaseFormat;
+ const ::rtl::OUString sPropertyIsDate;
+ const ::rtl::OUString sPropertyIsExpression;
+ const ::rtl::OUString sPropertyIsFixed;
+ const ::rtl::OUString sPropertyIsFixedLanguage;
+ const ::rtl::OUString sPropertyIsHidden;
+ const ::rtl::OUString sPropertyIsInput;
+ const ::rtl::OUString sPropertyIsShowFormula;
+ const ::rtl::OUString sPropertyIsVisible;
+ const ::rtl::OUString sPropertyItems;
+ const ::rtl::OUString sPropertyLevel;
+ const ::rtl::OUString sPropertyMacro;
+ const ::rtl::OUString sPropertyMeasureKind;
+ const ::rtl::OUString sPropertyName;
+ const ::rtl::OUString sPropertyNumberFormat;
+ const ::rtl::OUString sPropertyNumberingSeparator;
+ const ::rtl::OUString sPropertyNumberingType;
+ const ::rtl::OUString sPropertyOffset;
+ const ::rtl::OUString sPropertyOn;
+ const ::rtl::OUString sPropertyPlaceholder;
+ const ::rtl::OUString sPropertyPlaceholderType;
+ const ::rtl::OUString sPropertyReferenceFieldPart;
+ const ::rtl::OUString sPropertyReferenceFieldSource;
+ const ::rtl::OUString sPropertyReferenceFieldType;
+ const ::rtl::OUString sPropertyRevision;
+ const ::rtl::OUString sPropertyScriptType;
+ const ::rtl::OUString sPropertySelectedItem;
+ const ::rtl::OUString sPropertySequenceNumber;
+ const ::rtl::OUString sPropertySequenceValue;
+ const ::rtl::OUString sPropertySetNumber;
+ const ::rtl::OUString sPropertySourceName;
+ const ::rtl::OUString sPropertySubType;
+ const ::rtl::OUString sPropertyTargetFrame;
+ const ::rtl::OUString sPropertyTrueContent;
+ const ::rtl::OUString sPropertyURL;
+ const ::rtl::OUString sPropertyURLContent;
+ const ::rtl::OUString sPropertyUserText;
+ const ::rtl::OUString sPropertyValue;
+ const ::rtl::OUString sPropertyVariableName;
+ const ::rtl::OUString sPropertyVariableSubType;
const ::rtl::OUString sPropertyHelp;
const ::rtl::OUString sPropertyTooltip;
const ::rtl::OUString sPropertyTextRange;
- const ::rtl::OUString sEmpty;
+ const ::rtl::OUString sEmpty;
- XMLPropertyState* pCombinedCharactersPropertyState;
+ XMLPropertyState* pCombinedCharactersPropertyState;
};
-
-
-
-
-
#endif
Modified: openoffice/trunk/main/xmloff/inc/txtfldi.hxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/xmloff/inc/txtfldi.hxx?rev=1552294&r1=1552293&r2=1552294&view=diff
==============================================================================
--- openoffice/trunk/main/xmloff/inc/txtfldi.hxx (original)
+++ openoffice/trunk/main/xmloff/inc/txtfldi.hxx Thu Dec 19 12:31:35 2013
@@ -1342,30 +1342,40 @@ protected:
};
-/** Import an annotation field (<text:annotation>) */
+/** Import an annotation field (<office:annotation>) */
class XMLAnnotationImportContext : public XMLTextFieldImportContext
{
- const ::rtl::OUString sPropertyAuthor;
- const ::rtl::OUString sPropertyContent;
- const ::rtl::OUString sPropertyDate;
- const ::rtl::OUString sPropertyTextRange;
-
- ::rtl::OUStringBuffer aAuthorBuffer;
- ::rtl::OUStringBuffer aTextBuffer;
- ::rtl::OUStringBuffer aDateBuffer;
-
- com::sun::star::uno::Reference < com::sun::star::beans::XPropertySet > mxField;
- com::sun::star::uno::Reference < com::sun::star::text::XTextCursor > mxCursor;
- com::sun::star::uno::Reference < com::sun::star::text::XTextCursor > mxOldCursor;
+ const ::rtl::OUString sPropertyName;
+ const ::rtl::OUString sPropertyAuthor;
+ const ::rtl::OUString sPropertyInitials;
+ const ::rtl::OUString sPropertyContent;
+ const ::rtl::OUString sPropertyDate;
+ const ::rtl::OUString sPropertyTextRange;
+
+ ::rtl::OUString aName;
+
+ ::rtl::OUStringBuffer aAuthorBuffer;
+ ::rtl::OUStringBuffer aInitialsBuffer;
+ ::rtl::OUStringBuffer aTextBuffer;
+ ::rtl::OUStringBuffer aDateBuffer;
+
+ com::sun::star::uno::Reference < com::sun::star::beans::XPropertySet > mxField;
+ com::sun::star::uno::Reference < com::sun::star::text::XTextCursor > mxCursor;
+ com::sun::star::uno::Reference < com::sun::star::text::XTextCursor > mxOldCursor;
+ /// If this is an annotation end, then position of the start.
+ com::sun::star::uno::Reference < com::sun::star::text::XTextContent > m_xStart;
+ const sal_uInt16 m_nToken;
public:
- TYPEINFO();
+ TYPEINFO();
- XMLAnnotationImportContext(SvXMLImport& rImport,
- XMLTextImportHelper& rHlp,
- sal_uInt16 nPrfx,
- const ::rtl::OUString& sLocalName);
+ XMLAnnotationImportContext(
+ SvXMLImport& rImport,
+ XMLTextImportHelper& rHlp,
+ sal_uInt16 nToken,
+ sal_uInt16 nPrfx,
+ const ::rtl::OUString& sLocalName);
protected:
Modified: openoffice/trunk/main/xmloff/inc/xmloff/odffields.hxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/xmloff/inc/xmloff/odffields.hxx?rev=1552294&r1=1552293&r2=1552294&view=diff
==============================================================================
--- openoffice/trunk/main/xmloff/inc/xmloff/odffields.hxx (original)
+++ openoffice/trunk/main/xmloff/inc/xmloff/odffields.hxx Thu Dec 19 12:31:35 2013
@@ -46,4 +46,6 @@
#define ODF_PAGEREF "vnd.oasis.opendocument.field.PAGEREF"
+#define ODF_COMMENTRANGE "vnd.oasis.opendocument.field.COMMENTRANGE"
+
#endif /* _ODFFIELDS_HXX */
Modified: openoffice/trunk/main/xmloff/inc/xmloff/txtimp.hxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/xmloff/inc/xmloff/txtimp.hxx?rev=1552294&r1=1552293&r2=1552294&view=diff
==============================================================================
--- openoffice/trunk/main/xmloff/inc/xmloff/txtimp.hxx (original)
+++ openoffice/trunk/main/xmloff/inc/xmloff/txtimp.hxx Thu Dec 19 12:31:35 2013
@@ -224,7 +224,9 @@ enum XMLTextPElemTokens
XML_TOK_TEXT_SHEET_NAME,
XML_TOK_TEXT_BIBLIOGRAPHY_MARK,
XML_TOK_TEXT_ANNOTATION,
- XML_TOK_TEXT_SCRIPT,
+ XML_TOK_TEXT_ANNOTATION_END,
+ XML_TOK_TEXT_NAME,
+ XML_TOK_TEXT_SCRIPT,
XML_TOK_TEXT_TABLE_FORMULA,
XML_TOK_TEXT_DROPDOWN,
Modified: openoffice/trunk/main/xmloff/inc/xmloff/xmltoken.hxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/xmloff/inc/xmloff/xmltoken.hxx?rev=1552294&r1=1552293&r2=1552294&view=diff
==============================================================================
--- openoffice/trunk/main/xmloff/inc/xmloff/xmltoken.hxx (original)
+++ openoffice/trunk/main/xmloff/inc/xmloff/xmltoken.hxx Thu Dec 19 12:31:35 2013
@@ -227,6 +227,7 @@ namespace xmloff { namespace token {
XML_ANIMATION_STOP_INSIDE,
XML_ANIMATIONS,
XML_ANNOTATION,
+ XML_ANNOTATION_END,
XML_ANNOTATIONS,
XML_ANNOTE,
XML_APPEAR,
Modified: openoffice/trunk/main/xmloff/source/core/xmltoken.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/xmloff/source/core/xmltoken.cxx?rev=1552294&r1=1552293&r2=1552294&view=diff
==============================================================================
--- openoffice/trunk/main/xmloff/source/core/xmltoken.cxx (original)
+++ openoffice/trunk/main/xmloff/source/core/xmltoken.cxx Thu Dec 19 12:31:35 2013
@@ -235,6 +235,7 @@ namespace xmloff { namespace token {
TOKEN( "animation-stop-inside", XML_ANIMATION_STOP_INSIDE ),
TOKEN( "animations", XML_ANIMATIONS ),
TOKEN( "annotation", XML_ANNOTATION ),
+ TOKEN( "annotation-end", XML_ANNOTATION_END ),
TOKEN( "annotations", XML_ANNOTATIONS ),
TOKEN( "annote", XML_ANNOTE ),
TOKEN( "appear", XML_APPEAR ),
Modified: openoffice/trunk/main/xmloff/source/text/txtflde.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/xmloff/source/text/txtflde.cxx?rev=1552294&r1=1552293&r2=1552294&view=diff
==============================================================================
--- openoffice/trunk/main/xmloff/source/text/txtflde.cxx (original)
+++ openoffice/trunk/main/xmloff/source/text/txtflde.cxx Thu Dec 19 12:31:35 2013
@@ -311,6 +311,7 @@ XMLTextFieldExport::XMLTextFieldExport(
sPropertyFileFormat(RTL_CONSTASCII_USTRINGPARAM("FileFormat")),
sPropertyFullName(RTL_CONSTASCII_USTRINGPARAM("FullName")),
sPropertyHint(RTL_CONSTASCII_USTRINGPARAM("Hint")),
+ sPropertyInitials(RTL_CONSTASCII_USTRINGPARAM("Initials")),
sPropertyInstanceName(RTL_CONSTASCII_USTRINGPARAM("InstanceName")),
sPropertyIsAutomaticUpdate(RTL_CONSTASCII_USTRINGPARAM("IsAutomaticUpdate")),
sPropertyIsConditionTrue(RTL_CONSTASCII_USTRINGPARAM("IsConditionTrue")),
@@ -1730,13 +1731,18 @@ void XMLTextFieldExport::ExportFieldHelp
DBG_ASSERT(sPresentation.equals(sEmpty),
"Unexpected presentation for annotation field");
- // annotation element + content
- SvXMLElementExport aElem(GetExport(), XML_NAMESPACE_OFFICE,
- XML_ANNOTATION, sal_False, sal_True);
+ // annotation element + content
+ OUString aAnnotationName;
+ rPropSet->getPropertyValue(sPropertyName) >>= aAnnotationName;
+ if ( aAnnotationName.getLength() > 0 )
+ {
+ GetExport().AddAttribute( XML_NAMESPACE_OFFICE, XML_NAME, aAnnotationName );
+ }
+ SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_OFFICE, XML_ANNOTATION, sal_False, sal_True );
// author
OUString aAuthor( GetStringProperty(sPropertyAuthor, rPropSet) );
- if( aAuthor.getLength() )
+ if ( aAuthor.getLength() > 0 )
{
SvXMLElementExport aCreatorElem( GetExport(), XML_NAMESPACE_DC,
XML_CREATOR, sal_True,
@@ -1757,6 +1763,21 @@ void XMLTextFieldExport::ExportFieldHelp
GetExport().Characters(aBuffer.makeStringAndClear());
}
+ // initials
+ {
+ OUString aInitials( GetStringProperty(sPropertyInitials, rPropSet) );
+ if ( aInitials.getLength() > 0 )
+ {
+ SvXMLElementExport aCreatorElem(
+ GetExport(),
+ XML_NAMESPACE_TEXT,
+ XML_SENDER_INITIALS,
+ sal_True,
+ sal_False );
+ GetExport().Characters(aInitials);
+ }
+ }
+
com::sun::star::uno::Reference < com::sun::star::text::XText > xText;
try
{
Modified: openoffice/trunk/main/xmloff/source/text/txtfldi.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/xmloff/source/text/txtfldi.cxx?rev=1552294&r1=1552293&r2=1552294&view=diff
==============================================================================
--- openoffice/trunk/main/xmloff/source/text/txtfldi.cxx (original)
+++ openoffice/trunk/main/xmloff/source/text/txtfldi.cxx Thu Dec 19 12:31:35 2013
@@ -153,6 +153,7 @@ const sal_Char sAPI_is_fixed[] = "IsFi
const sal_Char sAPI_content[] = "Content";
const sal_Char sAPI_value[] = "Value";
const sal_Char sAPI_author[] = "Author";
+const sal_Char sAPI_initials[] = "Initials";
const sal_Char sAPI_full_name[] = "FullName";
const sal_Char sAPI_place_holder_type[] = "PlaceHolderType";
const sal_Char sAPI_place_holder[] = "PlaceHolder";
@@ -560,10 +561,11 @@ XMLTextFieldImportContext::CreateTextFie
nPrefix, rName );
break;
- case XML_TOK_TEXT_ANNOTATION:
- pContext = new XMLAnnotationImportContext( rImport, rHlp,
- nPrefix, rName);
- break;
+ case XML_TOK_TEXT_ANNOTATION:
+ case XML_TOK_TEXT_ANNOTATION_END:
+ pContext =
+ new XMLAnnotationImportContext( rImport, rHlp, nToken, nPrefix, rName);
+ break;
case XML_TOK_TEXT_SCRIPT:
pContext = new XMLScriptImportContext( rImport, rHlp,
@@ -3629,19 +3631,21 @@ const sal_Char* XMLBibliographyFieldImpo
TYPEINIT1(XMLAnnotationImportContext, XMLTextFieldImportContext);
XMLAnnotationImportContext::XMLAnnotationImportContext(
- SvXMLImport& rImport,
- XMLTextImportHelper& rHlp,
- sal_uInt16 nPrfx,
- const OUString& sLocalName) :
- XMLTextFieldImportContext(rImport, rHlp, sAPI_annotation,
- nPrfx, sLocalName),
- sPropertyAuthor(RTL_CONSTASCII_USTRINGPARAM(sAPI_author)),
- sPropertyContent(RTL_CONSTASCII_USTRINGPARAM(sAPI_content)),
- // why is there no UNO_NAME_DATE_TIME, but only UNO_NAME_DATE_TIME_VALUE?
- sPropertyDate(RTL_CONSTASCII_USTRINGPARAM(sAPI_date_time_value)),
- sPropertyTextRange(RTL_CONSTASCII_USTRINGPARAM(sAPI_TextRange))
+ SvXMLImport& rImport,
+ XMLTextImportHelper& rHlp,
+ sal_uInt16 nToken,
+ sal_uInt16 nPrfx,
+ const OUString& sLocalName)
+ : XMLTextFieldImportContext(rImport, rHlp, sAPI_annotation, nPrfx, sLocalName)
+ , sPropertyName(RTL_CONSTASCII_USTRINGPARAM(sAPI_name))
+ , sPropertyAuthor(RTL_CONSTASCII_USTRINGPARAM(sAPI_author))
+ , sPropertyInitials(RTL_CONSTASCII_USTRINGPARAM(sAPI_initials))
+ , sPropertyContent(RTL_CONSTASCII_USTRINGPARAM(sAPI_content))
+ , sPropertyDate(RTL_CONSTASCII_USTRINGPARAM(sAPI_date_time_value))
+ , sPropertyTextRange(RTL_CONSTASCII_USTRINGPARAM(sAPI_TextRange))
+ , m_nToken( nToken )
{
- bValid = sal_True;
+ bValid = sal_True;
// remember old list item and block (#91964#) and reset them
// for the text frame
@@ -3649,139 +3653,214 @@ XMLAnnotationImportContext::XMLAnnotatio
GetImport().GetTextImport()->PushListContext();
}
-void XMLAnnotationImportContext::ProcessAttribute(
- sal_uInt16,
- const OUString& )
-{
- // ignore
+void XMLAnnotationImportContext::ProcessAttribute(
+ sal_uInt16 nToken,
+ const OUString& rValue )
+ {
+ if ( nToken == XML_TOK_TEXT_NAME )
+ {
+ aName = rValue;
+ }
}
SvXMLImportContext* XMLAnnotationImportContext::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const Reference<XAttributeList >& xAttrList )
+ sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const Reference<XAttributeList >& xAttrList )
{
- SvXMLImportContext *pContext = 0;
- if( XML_NAMESPACE_DC == nPrefix )
- {
- if( IsXMLToken( rLocalName, XML_CREATOR ) )
- pContext = new XMLStringBufferImportContext(GetImport(), nPrefix,
- rLocalName, aAuthorBuffer);
- else if( IsXMLToken( rLocalName, XML_DATE ) )
- pContext = new XMLStringBufferImportContext(GetImport(), nPrefix,
- rLocalName, aDateBuffer);
- }
+ SvXMLImportContext *pContext = 0;
+ if( XML_NAMESPACE_DC == nPrefix )
+ {
+ if( IsXMLToken( rLocalName, XML_CREATOR ) )
+ {
+ pContext =
+ new XMLStringBufferImportContext( GetImport(), nPrefix, rLocalName, aAuthorBuffer);
+ }
+ else if( IsXMLToken( rLocalName, XML_DATE ) )
+ {
+ pContext =
+ new XMLStringBufferImportContext( GetImport(), nPrefix, rLocalName, aDateBuffer);
+ }
+ }
+ else if ( XML_NAMESPACE_TEXT == nPrefix )
+ {
+ if( IsXMLToken( rLocalName, XML_SENDER_INITIALS ) )
+ {
+ pContext =
+ new XMLStringBufferImportContext( GetImport(), nPrefix, rLocalName, aInitialsBuffer);
+ }
+ }
- if( !pContext )
- {
- try
- {
- if ( !mxField.is() )
- CreateField( mxField, sServicePrefix + GetServiceName() );
- Any aAny = mxField->getPropertyValue( sPropertyTextRange );
- Reference< XText > xText;
- aAny >>= xText;
- if( xText.is() )
- {
- UniReference < XMLTextImportHelper > xTxtImport = GetImport().GetTextImport();
- if( !mxCursor.is() )
- {
- mxOldCursor = xTxtImport->GetCursor();
- mxCursor = xText->createTextCursor();
- }
+ if( !pContext )
+ {
+ try
+ {
+ if ( !mxField.is() )
+ CreateField( mxField, sServicePrefix + GetServiceName() );
+ Any aAny = mxField->getPropertyValue( sPropertyTextRange );
+ Reference< XText > xText;
+ aAny >>= xText;
+ if( xText.is() )
+ {
+ UniReference < XMLTextImportHelper > xTxtImport = GetImport().GetTextImport();
+ if( !mxCursor.is() )
+ {
+ mxOldCursor = xTxtImport->GetCursor();
+ mxCursor = xText->createTextCursor();
+ }
- if( mxCursor.is() )
- {
- xTxtImport->SetCursor( mxCursor );
- pContext = xTxtImport->CreateTextChildContext( GetImport(), nPrefix, rLocalName, xAttrList );
- }
- }
- }
- catch ( Exception& )
- {}
+ if( mxCursor.is() )
+ {
+ xTxtImport->SetCursor( mxCursor );
+ pContext = xTxtImport->CreateTextChildContext( GetImport(), nPrefix, rLocalName, xAttrList );
+ }
+ }
+ }
+ catch ( Exception& )
+ {}
- if( !pContext )
- pContext = new XMLStringBufferImportContext(GetImport(), nPrefix, rLocalName, aTextBuffer);
- }
+ if( !pContext )
+ pContext = new XMLStringBufferImportContext(GetImport(), nPrefix, rLocalName, aTextBuffer);
+ }
- return pContext;
+ return pContext;
}
void XMLAnnotationImportContext::EndElement()
{
- DBG_ASSERT(GetServiceName().getLength()>0, "no service name for element!");
- if( mxCursor.is() )
- {
- // delete addition newline
- const OUString aEmpty;
- mxCursor->gotoEnd( sal_False );
- mxCursor->goLeft( 1, sal_True );
- mxCursor->setString( aEmpty );
+ DBG_ASSERT(GetServiceName().getLength()>0, "no service name for element!");
+ if( mxCursor.is() )
+ {
+ // delete addition newline
+ const OUString aEmpty;
+ mxCursor->gotoEnd( sal_False );
+ mxCursor->goLeft( 1, sal_True );
+ mxCursor->setString( aEmpty );
- // reset cursor
- GetImport().GetTextImport()->ResetCursor();
- }
+ // reset cursor
+ GetImport().GetTextImport()->ResetCursor();
+ }
- if( mxOldCursor.is() )
- GetImport().GetTextImport()->SetCursor( mxOldCursor );
+ if( mxOldCursor.is() )
+ GetImport().GetTextImport()->SetCursor( mxOldCursor );
// reinstall old list item #91964#
GetImport().GetTextImport()->PopListContext();
- if ( bValid )
- {
- if ( mxField.is() || CreateField( mxField, sServicePrefix + GetServiceName() ) )
- {
- // set field properties
- PrepareField( mxField );
+ if ( bValid )
+ {
+ if ( mxField.is() || CreateField( mxField, sServicePrefix + GetServiceName() ) )
+ {
+ // set field properties
+ PrepareField( mxField );
- // attach field to document
- Reference < XTextContent > xTextContent( mxField, UNO_QUERY );
+ // attach field to document
+ Reference < XTextContent > xTextContent( mxField, UNO_QUERY );
- // workaround for #80606#
- try
- {
- GetImportHelper().InsertTextContent( xTextContent );
- }
- catch (lang::IllegalArgumentException)
- {
- // ignore
- }
- }
- }
- else
- GetImportHelper().InsertString(GetContent());
+ // workaround for #80606#
+ try
+ {
+ if ( m_nToken == XML_TOK_TEXT_ANNOTATION_END
+ && m_xStart.is() )
+ {
+ // So we are ending a previous annotation,
+ // let's create a text range covering the start and the current position.
+ uno::Reference<text::XText> xText = GetImportHelper().GetText();
+ uno::Reference<text::XTextCursor> xCursor = xText->createTextCursorByRange(m_xStart->getAnchor());
+ xCursor->gotoRange(GetImportHelper().GetCursorAsRange(), true);
+ uno::Reference<text::XTextRange> xTextRange(xCursor, uno::UNO_QUERY);
+ xText->insertTextContent( xTextRange, xTextContent, !xCursor->isCollapsed() );
+
+ // Now we can delete the annotation at the start position.
+ uno::Reference<lang::XComponent>(m_xStart, uno::UNO_QUERY)->dispose();
+ }
+ else
+ {
+ GetImportHelper().InsertTextContent( xTextContent );
+ }
+ }
+ catch (lang::IllegalArgumentException)
+ {
+ // ignore
+ }
+ }
+ }
+ else
+ GetImportHelper().InsertString(GetContent());
}
-void XMLAnnotationImportContext::PrepareField(
- const Reference<XPropertySet> & xPropertySet)
+void XMLAnnotationImportContext::PrepareField(
+ const Reference<XPropertySet> & xPropertySet)
{
- // import (possibly empty) author
- OUString sAuthor( aAuthorBuffer.makeStringAndClear() );
- xPropertySet->setPropertyValue(sPropertyAuthor, makeAny(sAuthor));
-
- DateTime aDateTime;
- if (SvXMLUnitConverter::convertDateTime(aDateTime,
- aDateBuffer.makeStringAndClear()))
- {
- /*
- Date aDate;
- aDate.Year = aDateTime.Year;
- aDate.Month = aDateTime.Month;
- aDate.Day = aDateTime.Day;
- xPropertySet->setPropertyValue(sPropertyDate, makeAny(aDate));
- */
- xPropertySet->setPropertyValue(sPropertyDate, makeAny(aDateTime));
- }
-
- OUString sBuffer = aTextBuffer.makeStringAndClear();
- if ( sBuffer.getLength() )
- {
- // delete last paragraph mark (if necessary)
- if (sal_Char(0x0a) == sBuffer.getStr()[sBuffer.getLength()-1])
- sBuffer = sBuffer.copy(0, sBuffer.getLength()-1);
- xPropertySet->setPropertyValue(sPropertyContent, makeAny(sBuffer));
- }
+ if ( m_nToken == XML_TOK_TEXT_ANNOTATION_END
+ && aName.getLength() > 0 )
+ {
+ // Search for a previous annotation with the same name.
+ Reference<XTextFieldsSupplier> xTextFieldsSupplier(GetImport().GetModel(), UNO_QUERY);
+ uno::Reference<container::XEnumerationAccess> xFieldsAccess(xTextFieldsSupplier->getTextFields());
+ uno::Reference<container::XEnumeration> xFields(xFieldsAccess->createEnumeration());
+ uno::Reference<beans::XPropertySet> xPrevField;
+ while (xFields->hasMoreElements())
+ {
+ uno::Reference<beans::XPropertySet> xCurrField(xFields->nextElement(), uno::UNO_QUERY);
+ OUString aFieldName;
+ xCurrField->getPropertyValue(sPropertyName) >>= aFieldName;
+ if ( aFieldName == aName )
+ {
+ xPrevField = xCurrField;
+ break;
+ }
+ }
+ if (xPrevField.is())
+ {
+ // copy over the properties.
+ xPropertySet->setPropertyValue(sPropertyAuthor, xPrevField->getPropertyValue(sPropertyAuthor));
+ xPropertySet->setPropertyValue(sPropertyInitials, xPrevField->getPropertyValue(sPropertyInitials));
+ xPropertySet->setPropertyValue(sPropertyDate, xPrevField->getPropertyValue(sPropertyDate));
+ xPropertySet->setPropertyValue(sPropertyName, xPrevField->getPropertyValue(sPropertyName));
+ xPropertySet->setPropertyValue(sPropertyContent, xPrevField->getPropertyValue(sPropertyContent));
+
+ // And save a reference to it, so we can delete it later.
+ m_xStart.set(xPrevField, uno::UNO_QUERY);
+ return;
+ }
+ }
+
+ // import (possibly empty) author
+ OUString sAuthor( aAuthorBuffer.makeStringAndClear() );
+ xPropertySet->setPropertyValue(sPropertyAuthor, makeAny(sAuthor));
+
+ // import (possibly empty) initials
+ OUString sInitials( aInitialsBuffer.makeStringAndClear() );
+ xPropertySet->setPropertyValue(sPropertyInitials, makeAny(sInitials));
+
+ DateTime aDateTime;
+ if (SvXMLUnitConverter::convertDateTime(aDateTime,
+ aDateBuffer.makeStringAndClear()))
+ {
+ /*
+ Date aDate;
+ aDate.Year = aDateTime.Year;
+ aDate.Month = aDateTime.Month;
+ aDate.Day = aDateTime.Day;
+ xPropertySet->setPropertyValue(sPropertyDate, makeAny(aDate));
+ */
+ xPropertySet->setPropertyValue(sPropertyDate, makeAny(aDateTime));
+ }
+
+ OUString sBuffer = aTextBuffer.makeStringAndClear();
+ if ( sBuffer.getLength() > 0 )
+ {
+ // delete last paragraph mark (if necessary)
+ if (sal_Char(0x0a) == sBuffer.getStr()[sBuffer.getLength()-1])
+ sBuffer = sBuffer.copy(0, sBuffer.getLength()-1);
+ xPropertySet->setPropertyValue(sPropertyContent, makeAny(sBuffer));
+ }
+
+ if ( aName.getLength() > 0 )
+ {
+ xPropertySet->setPropertyValue(sPropertyName, makeAny(aName));
+ }
}
Modified: openoffice/trunk/main/xmloff/source/text/txtimp.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/xmloff/source/text/txtimp.cxx?rev=1552294&r1=1552293&r2=1552294&view=diff
==============================================================================
--- openoffice/trunk/main/xmloff/source/text/txtimp.cxx (original)
+++ openoffice/trunk/main/xmloff/source/text/txtimp.cxx Thu Dec 19 12:31:35 2013
@@ -87,13 +87,9 @@
#include "XMLCalculationSettingsContext.hxx"
#include <xmloff/formsimp.hxx>
#include "XMLNumberStylesImport.hxx"
-// --> OD 2006-10-12 #i69629#
#include <com/sun/star/beans/XPropertyState.hpp>
-// <--
-// --> OD 2008-04-25 #refactorlists#
#include <txtlists.hxx>
-// <--
#include <xmloff/odffields.hxx>
#include <comphelper/stlunosequence.hxx>
@@ -202,16 +198,13 @@ static __FAR_DATA SvXMLTokenMapEntry aTe
{ XML_NAMESPACE_TEXT, XML_SENDER_TITLE, XML_TOK_TEXT_SENDER_TITLE },
{ XML_NAMESPACE_TEXT, XML_SENDER_POSITION, XML_TOK_TEXT_SENDER_POSITION },
{ XML_NAMESPACE_TEXT, XML_SENDER_EMAIL, XML_TOK_TEXT_SENDER_EMAIL },
- { XML_NAMESPACE_TEXT, XML_SENDER_PHONE_PRIVATE,
- XML_TOK_TEXT_SENDER_PHONE_PRIVATE },
+ { XML_NAMESPACE_TEXT, XML_SENDER_PHONE_PRIVATE, XML_TOK_TEXT_SENDER_PHONE_PRIVATE },
{ XML_NAMESPACE_TEXT, XML_SENDER_FAX, XML_TOK_TEXT_SENDER_FAX },
{ XML_NAMESPACE_TEXT, XML_SENDER_COMPANY, XML_TOK_TEXT_SENDER_COMPANY },
- { XML_NAMESPACE_TEXT, XML_SENDER_PHONE_WORK,
- XML_TOK_TEXT_SENDER_PHONE_WORK },
+ { XML_NAMESPACE_TEXT, XML_SENDER_PHONE_WORK, XML_TOK_TEXT_SENDER_PHONE_WORK },
{ XML_NAMESPACE_TEXT, XML_SENDER_STREET, XML_TOK_TEXT_SENDER_STREET },
{ XML_NAMESPACE_TEXT, XML_SENDER_CITY, XML_TOK_TEXT_SENDER_CITY },
- { XML_NAMESPACE_TEXT, XML_SENDER_POSTAL_CODE,
- XML_TOK_TEXT_SENDER_POSTAL_CODE },
+ { XML_NAMESPACE_TEXT, XML_SENDER_POSTAL_CODE, XML_TOK_TEXT_SENDER_POSTAL_CODE },
{ XML_NAMESPACE_TEXT, XML_SENDER_COUNTRY, XML_TOK_TEXT_SENDER_COUNTRY },
{ XML_NAMESPACE_TEXT, XML_SENDER_STATE_OR_PROVINCE,
XML_TOK_TEXT_SENDER_STATE_OR_PROVINCE },
@@ -275,10 +268,8 @@ static __FAR_DATA SvXMLTokenMapEntry aTe
// misc fields
{ XML_NAMESPACE_TEXT, XML_PLACEHOLDER, XML_TOK_TEXT_PLACEHOLDER },
{ XML_NAMESPACE_TEXT, XML_HIDDEN_TEXT, XML_TOK_TEXT_HIDDEN_TEXT },
- { XML_NAMESPACE_TEXT, XML_HIDDEN_PARAGRAPH,
- XML_TOK_TEXT_HIDDEN_PARAGRAPH },
- { XML_NAMESPACE_TEXT, XML_CONDITIONAL_TEXT,
- XML_TOK_TEXT_CONDITIONAL_TEXT },
+ { XML_NAMESPACE_TEXT, XML_HIDDEN_PARAGRAPH, XML_TOK_TEXT_HIDDEN_PARAGRAPH },
+ { XML_NAMESPACE_TEXT, XML_CONDITIONAL_TEXT, XML_TOK_TEXT_CONDITIONAL_TEXT },
{ XML_NAMESPACE_TEXT, XML_FILE_NAME, XML_TOK_TEXT_FILENAME },
{ XML_NAMESPACE_TEXT, XML_CHAPTER, XML_TOK_TEXT_CHAPTER },
{ XML_NAMESPACE_TEXT, XML_TEMPLATE_NAME, XML_TOK_TEXT_TEMPLATENAME },
@@ -297,10 +288,10 @@ static __FAR_DATA SvXMLTokenMapEntry aTe
{ XML_NAMESPACE_TEXT, XML_BOOKMARK_REF, XML_TOK_TEXT_BOOKMARK_REF },
{ XML_NAMESPACE_TEXT, XML_SEQUENCE_REF, XML_TOK_TEXT_SEQUENCE_REF },
{ XML_NAMESPACE_TEXT, XML_NOTE_REF, XML_TOK_TEXT_NOTE_REF },
- { XML_NAMESPACE_TEXT, XML_BIBLIOGRAPHY_MARK,
- XML_TOK_TEXT_BIBLIOGRAPHY_MARK },
+ { XML_NAMESPACE_TEXT, XML_BIBLIOGRAPHY_MARK, XML_TOK_TEXT_BIBLIOGRAPHY_MARK },
{ XML_NAMESPACE_OFFICE, XML_ANNOTATION, XML_TOK_TEXT_ANNOTATION },
- { XML_NAMESPACE_TEXT, XML_SCRIPT, XML_TOK_TEXT_SCRIPT },
+ { XML_NAMESPACE_OFFICE, XML_ANNOTATION_END, XML_TOK_TEXT_ANNOTATION_END },
+ { XML_NAMESPACE_TEXT, XML_SCRIPT, XML_TOK_TEXT_SCRIPT },
{ XML_NAMESPACE_TEXT, XML_TABLE_FORMULA, XML_TOK_TEXT_TABLE_FORMULA },
{ XML_NAMESPACE_TEXT, XML_DROPDOWN, XML_TOK_TEXT_DROPDOWN },
@@ -516,6 +507,7 @@ static __FAR_DATA SvXMLTokenMapEntry aTe
{ XML_NAMESPACE_TEXT, XML_CURRENT_VALUE,
XML_TOK_TEXTFIELD_CURRENT_VALUE },
{ XML_NAMESPACE_TEXT, XML_TABLE_TYPE, XML_TOK_TEXTFIELD_TABLE_TYPE },
+ { XML_NAMESPACE_OFFICE, XML_NAME, XML_TOK_TEXT_NAME },
XML_TOKEN_MAP_END
};
Modified: openoffice/trunk/main/xmloff/source/text/txtparae.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/xmloff/source/text/txtparae.cxx?rev=1552294&r1=1552293&r2=1552294&view=diff
==============================================================================
--- openoffice/trunk/main/xmloff/source/text/txtparae.cxx (original)
+++ openoffice/trunk/main/xmloff/source/text/txtparae.cxx Thu Dec 19 12:31:35 2013
@@ -110,6 +110,7 @@
#include <basegfx/polygon/b2dpolypolygon.hxx>
#include <basegfx/polygon/b2dpolypolygontools.hxx>
#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <xmloff/odffields.hxx>
using ::rtl::OUString;
using ::rtl::OUStringBuffer;
@@ -2215,156 +2216,182 @@ void XMLTextParagraphExport::exportParag
}
void XMLTextParagraphExport::exportTextRangeEnumeration(
- const Reference < XEnumeration > & rTextEnum,
- sal_Bool bAutoStyles, sal_Bool bIsProgress,
- sal_Bool bPrvChrIsSpc )
+ const Reference < XEnumeration > & rTextEnum,
+ sal_Bool bAutoStyles,
+ sal_Bool bIsProgress,
+ sal_Bool bPrvChrIsSpc )
{
static OUString sMeta(RTL_CONSTASCII_USTRINGPARAM("InContentMetadata"));
- sal_Bool bPrevCharIsSpace = bPrvChrIsSpc;
-
- while( rTextEnum->hasMoreElements() )
- {
- Reference<XPropertySet> xPropSet(rTextEnum->nextElement(), UNO_QUERY);
+ sal_Bool bPrevCharIsSpace = bPrvChrIsSpc;
+ bool bAnnotationStarted = false;
+
+ while( rTextEnum->hasMoreElements() )
+ {
+ Reference<XPropertySet> xPropSet(rTextEnum->nextElement(), UNO_QUERY);
Reference < XTextRange > xTxtRange(xPropSet, uno::UNO_QUERY);
- Reference<XPropertySetInfo> xPropInfo(xPropSet->getPropertySetInfo());
+ Reference<XPropertySetInfo> xPropInfo(xPropSet->getPropertySetInfo());
- if (xPropInfo->hasPropertyByName(sTextPortionType))
- {
+ if (xPropInfo->hasPropertyByName(sTextPortionType))
+ {
rtl::OUString sType;
- xPropSet->getPropertyValue(sTextPortionType) >>= sType;
+ xPropSet->getPropertyValue(sTextPortionType) >>= sType;
- if( sType.equals(sText))
- {
- exportTextRange( xTxtRange, bAutoStyles,
- bPrevCharIsSpace );
- }
- else if( sType.equals(sTextField))
- {
- exportTextField( xTxtRange, bAutoStyles, bIsProgress );
- bPrevCharIsSpace = sal_False;
- }
- else if( sType.equals( sFrame ) )
- {
- Reference < XEnumeration> xContentEnum;
- Reference < XContentEnumerationAccess > xCEA( xTxtRange,
- UNO_QUERY );
- if( xCEA.is() )
- xContentEnum.set(xCEA->createContentEnumeration(
- sTextContentService ));
- // frames are never in sections
- Reference<XTextSection> xSection;
- if( xContentEnum.is() )
- exportTextContentEnumeration( xContentEnum,
- bAutoStyles,
- xSection, bIsProgress, sal_True,
- &xPropSet );
+ if( sType.equals(sText))
+ {
+ exportTextRange( xTxtRange, bAutoStyles, bPrevCharIsSpace );
+ }
+ else if( sType.equals(sTextField))
+ {
+ if ( bAnnotationStarted )
+ {
+ bAnnotationStarted = false;
+ }
+ else
+ {
+ exportTextField( xTxtRange, bAutoStyles, bIsProgress );
+ bPrevCharIsSpace = false;
+ }
+ }
+ else if( sType.equals( sFrame ) )
+ {
+ Reference < XEnumeration> xContentEnum;
+ Reference < XContentEnumerationAccess > xCEA( xTxtRange, UNO_QUERY );
+ if( xCEA.is() )
+ xContentEnum.set(xCEA->createContentEnumeration( sTextContentService ));
+ // frames are never in sections
+ Reference<XTextSection> xSection;
+ if( xContentEnum.is() )
+ exportTextContentEnumeration(
+ xContentEnum,
+ bAutoStyles,
+ xSection,
+ bIsProgress,
+ sal_True,
+ &xPropSet );
- bPrevCharIsSpace = sal_False;
- }
- else if (sType.equals(sFootnote))
- {
- exportTextFootnote(xPropSet,
- xTxtRange->getString(),
- bAutoStyles, bIsProgress );
- bPrevCharIsSpace = sal_False;
- }
- else if (sType.equals(sBookmark))
- {
- exportTextMark(xPropSet,
- sBookmark,
- lcl_XmlBookmarkElements,
- bAutoStyles);
- }
- else if (sType.equals(sReferenceMark))
- {
- exportTextMark(xPropSet,
- sReferenceMark,
- lcl_XmlReferenceElements,
- bAutoStyles);
- }
- else if (sType.equals(sDocumentIndexMark))
- {
- pIndexMarkExport->ExportIndexMark(xPropSet, bAutoStyles);
- }
- else if (sType.equals(sRedline))
- {
- if (NULL != pRedlineExport)
- pRedlineExport->ExportChange(xPropSet, bAutoStyles);
- }
- else if (sType.equals(sRuby))
- {
- exportRuby(xPropSet, bAutoStyles);
- }
+ bPrevCharIsSpace = sal_False;
+ }
+ else if (sType.equals(sFootnote))
+ {
+ exportTextFootnote( xPropSet, xTxtRange->getString(), bAutoStyles, bIsProgress );
+ bPrevCharIsSpace = sal_False;
+ }
+ else if (sType.equals(sBookmark))
+ {
+ exportTextMark( xPropSet, sBookmark, lcl_XmlBookmarkElements, bAutoStyles );
+ }
+ else if (sType.equals(sReferenceMark))
+ {
+ exportTextMark( xPropSet, sReferenceMark, lcl_XmlReferenceElements, bAutoStyles);
+ }
+ else if (sType.equals(sDocumentIndexMark))
+ {
+ pIndexMarkExport->ExportIndexMark( xPropSet, bAutoStyles);
+ }
+ else if (sType.equals(sRedline))
+ {
+ if (NULL != pRedlineExport)
+ pRedlineExport->ExportChange( xPropSet, bAutoStyles );
+ }
+ else if (sType.equals(sRuby))
+ {
+ exportRuby( xPropSet, bAutoStyles );
+ }
else if (sType.equals(sMeta))
{
- exportMeta(xPropSet, bAutoStyles, bIsProgress);
+ exportMeta( xPropSet, bAutoStyles, bIsProgress );
}
- else if (sType.equals(sTextFieldStart))
- {
- Reference<XNamed> xBookmark(xPropSet->getPropertyValue(sBookmark), UNO_QUERY);
- if (xBookmark.is())
+ else if (sType.equals(sTextFieldStart))
+ {
+ Reference< ::com::sun::star::text::XFormField > xFormField(xPropSet->getPropertyValue(sBookmark), UNO_QUERY);
+ if ( xFormField.is()
+ && xFormField->getFieldType().equalsAscii( ODF_COMMENTRANGE ) )
{
- GetExport().AddAttribute(XML_NAMESPACE_TEXT, XML_NAME, xBookmark->getName());
- }
- Reference< ::com::sun::star::text::XFormField > xFormField(xPropSet->getPropertyValue(sBookmark), UNO_QUERY);
- if (xFormField.is())
+ exportTextField( xTxtRange, bAutoStyles, bIsProgress );
+ bPrevCharIsSpace = false;
+ bAnnotationStarted = true;
+ }
+ else
{
- GetExport().AddAttribute(XML_NAMESPACE_FIELD, XML_TYPE, xFormField->getFieldType());
- }
- GetExport().StartElement(XML_NAMESPACE_FIELD, XML_FIELDMARK_START, sal_False);
- if (xFormField.is())
+ Reference<XNamed> xBookmark(xPropSet->getPropertyValue(sBookmark), UNO_QUERY);
+ if (xBookmark.is())
+ {
+ GetExport().AddAttribute(XML_NAMESPACE_TEXT, XML_NAME, xBookmark->getName());
+ }
+
+ if (xFormField.is())
+ {
+ GetExport().AddAttribute(XML_NAMESPACE_FIELD, XML_TYPE, xFormField->getFieldType());
+ }
+
+ GetExport().StartElement(XML_NAMESPACE_FIELD, XML_FIELDMARK_START, sal_False);
+ if (xFormField.is())
+ {
+ FieldParamExporter(&GetExport(), xFormField->getParameters()).Export();
+ }
+ GetExport().EndElement(XML_NAMESPACE_FIELD, XML_FIELDMARK_START, sal_False);
+ }
+ }
+ else if (sType.equals(sTextFieldEnd))
+ {
+ if (bAnnotationStarted)
{
- FieldParamExporter(&GetExport(), xFormField->getParameters()).Export();
- }
- GetExport().EndElement(XML_NAMESPACE_FIELD, XML_FIELDMARK_START, sal_False);
- }
- else if (sType.equals(sTextFieldEnd))
- {
- GetExport().StartElement(XML_NAMESPACE_FIELD, XML_FIELDMARK_END, sal_False);
- GetExport().EndElement(XML_NAMESPACE_FIELD, XML_FIELDMARK_END, sal_False);
- }
- else if (sType.equals(sTextFieldStartEnd))
- {
- Reference<XNamed> xBookmark(xPropSet->getPropertyValue(sBookmark), UNO_QUERY);
- if (xBookmark.is())
+ Reference<XNamed> xBookmark(xPropSet->getPropertyValue(sBookmark), UNO_QUERY);
+ const OUString& rName = xBookmark->getName();
+ if ( rName.getLength() > 0 )
+ {
+ GetExport().AddAttribute(XML_NAMESPACE_OFFICE, XML_NAME, rName);
+ }
+ SvXMLElementExport aElem( GetExport(), !bAutoStyles, XML_NAMESPACE_OFFICE, XML_ANNOTATION_END, sal_False, sal_False );
+ }
+ else
{
- GetExport().AddAttribute(XML_NAMESPACE_TEXT, XML_NAME, xBookmark->getName());
- }
- Reference< ::com::sun::star::text::XFormField > xFormField(xPropSet->getPropertyValue(sBookmark), UNO_QUERY);
- if (xFormField.is())
+ GetExport().StartElement(XML_NAMESPACE_FIELD, XML_FIELDMARK_END, sal_False);
+ GetExport().EndElement(XML_NAMESPACE_FIELD, XML_FIELDMARK_END, sal_False);
+ }
+ }
+ else if (sType.equals(sTextFieldStartEnd))
+ {
+ Reference<XNamed> xBookmark(xPropSet->getPropertyValue(sBookmark), UNO_QUERY);
+ if (xBookmark.is())
{
- GetExport().AddAttribute(XML_NAMESPACE_FIELD, XML_TYPE, xFormField->getFieldType());
- }
- GetExport().StartElement(XML_NAMESPACE_FIELD, XML_FIELDMARK, sal_False);
- if (xFormField.is())
+ GetExport().AddAttribute(XML_NAMESPACE_TEXT, XML_NAME, xBookmark->getName());
+ }
+ Reference< ::com::sun::star::text::XFormField > xFormField(xPropSet->getPropertyValue(sBookmark), UNO_QUERY);
+ if (xFormField.is())
+ {
+ GetExport().AddAttribute(XML_NAMESPACE_FIELD, XML_TYPE, xFormField->getFieldType());
+ }
+ GetExport().StartElement(XML_NAMESPACE_FIELD, XML_FIELDMARK, sal_False);
+ if (xFormField.is())
{
FieldParamExporter(&GetExport(), xFormField->getParameters()).Export();
- }
- GetExport().EndElement(XML_NAMESPACE_FIELD, XML_FIELDMARK, sal_False);
- }
- else if (sType.equals(sSoftPageBreak))
- {
- exportSoftPageBreak(xPropSet, bAutoStyles);
- }
- else {
- DBG_ERROR("unknown text portion type");
+ }
+ GetExport().EndElement(XML_NAMESPACE_FIELD, XML_FIELDMARK, sal_False);
}
- }
- else
- {
- Reference<XServiceInfo> xServiceInfo( xTxtRange, UNO_QUERY );
- if( xServiceInfo->supportsService( sTextFieldService ) )
- {
+ else if (sType.equals(sSoftPageBreak))
+ {
+ exportSoftPageBreak(xPropSet, bAutoStyles);
+ }
+ else {
+ DBG_ERROR("unknown text portion type");
+ }
+ }
+ else
+ {
+ Reference<XServiceInfo> xServiceInfo( xTxtRange, UNO_QUERY );
+ if( xServiceInfo->supportsService( sTextFieldService ) )
+ {
exportTextField( xTxtRange, bAutoStyles, bIsProgress );
- bPrevCharIsSpace = sal_False;
- }
- else
- {
- // no TextPortionType property -> non-Writer app -> text
- exportTextRange( xTxtRange, bAutoStyles, bPrevCharIsSpace );
- }
- }
- }
+ bPrevCharIsSpace = sal_False;
+ }
+ else
+ {
+ // no TextPortionType property -> non-Writer app -> text
+ exportTextRange( xTxtRange, bAutoStyles, bPrevCharIsSpace );
+ }
+ }
+ }
// now that there are nested enumerations for meta(-field), this may be valid!
// DBG_ASSERT( !bOpenRuby, "Red Alert: Ruby still open!" );