writerfilter/source/dmapper/DomainMapper_Impl.cxx |   37 +++++++++++++++++++---
 1 file changed, 33 insertions(+), 4 deletions(-)

New commits:
commit 94a9bce4fb61aeeece8809eec1cbdc37101bdd22
Author: Cédric Bosdonnat <cedric.bosdon...@free.fr>
Date:   Wed Jul 3 17:43:33 2013 +0200

    n#825976: writerfilter initial support of SEQ fields
    
    No switch and no numeric formatting is taken into account ATM, just the
    defaults, but at least we have the fields properly created.
    
    Change-Id: Ib17c5e93199044a05005e4648c7e4cc81baf51dd

diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx 
b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 0cd81c3..10ed343 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -3142,7 +3142,37 @@ void DomainMapper_Impl::CloseFieldCommand()
                     break;
                     case FIELD_SECTION      : break;
                     case FIELD_SECTIONPAGES : break;
-                    case FIELD_SEQ          : break;
+                    case FIELD_SEQ          :
+                    {
+                        OUString sIdentifier = 
lcl_ExtractParameter(pContext->GetCommand(), sizeof(" SEQ") );
+                        if (xFieldProperties.is() && !sIdentifier.isEmpty())
+                        {
+                            uno::Reference< beans::XPropertySet >xMaster = 
FindOrCreateFieldMaster(
+                                    
"com.sun.star.text.fieldmaster.SetExpression", sIdentifier);
+
+                            // SubType 1 makes the difference between range 
and normal SetExpression
+                            xMaster->setPropertyValue(
+                                    rPropNameSupplier.GetName(PROP_SUB_TYPE),
+                                    uno::makeAny(sal_Int8(1)));
+
+                            uno::Reference< text::XDependentTextField > 
xDependentField(
+                                    xFieldInterface, uno::UNO_QUERY_THROW );
+                            xDependentField->attachTextFieldMaster( xMaster );
+
+                            // TODO This formula may change with the flags of 
the SEQ field
+                            rtl::OUString sFormula = sIdentifier + "+1";
+                            xFieldProperties->setPropertyValue(
+                                    rPropNameSupplier.GetName(PROP_CONTENT),
+                                    uno::makeAny(sFormula));
+
+                            // TODO Take care of the numeric formatting 
definition, default is Arabic
+                            xFieldProperties->setPropertyValue(
+                                    
rPropNameSupplier.GetName(PROP_NUMBERING_TYPE),
+                                    
uno::makeAny(style::NumberingType::ARABIC));
+                        }
+
+                    }
+                    break;
                     case FIELD_SET          : break;
                     case FIELD_SKIPIF       : break;
                     case FIELD_STYLEREF     : break;
@@ -3218,15 +3248,14 @@ void DomainMapper_Impl::CloseFieldCommand()
                             rPropNameSupplier.GetName(PROP_NUMBERING_TYPE),
                             uno::makeAny( 
lcl_ParseNumberingType(pContext->GetCommand()) ));
                     break;
-
                 }
             }
             //set the text field if there is any
             pContext->SetTextField( uno::Reference< text::XTextField >( 
xFieldInterface, uno::UNO_QUERY ) );
         }
-        catch( const uno::Exception& )
+        catch( const uno::Exception& e )
         {
-            OSL_FAIL( "Exception in CloseFieldCommand()" );
+            SAL_WARN( "writerfilter", "Exception in CloseFieldCommand(): " << 
e.Message );
         }
         pContext->SetCommandCompleted();
     }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to