[Libreoffice-commits] core.git: sw/inc sw/source

Miklos Vajna vmiklos at collabora.co.uk
Wed May 6 02:34:10 PDT 2015


 sw/inc/swdbdata.hxx                          |    6 ++++--
 sw/source/core/doc/docfmt.cxx                |    1 +
 sw/source/filter/xml/xmlimp.cxx              |    5 +++++
 sw/source/uibase/uno/SwXDocumentSettings.cxx |   15 +++++++++++++++
 4 files changed, 25 insertions(+), 2 deletions(-)

New commits:
commit 7bd6f298b43732fd5d4a270f2493ae11eb20ad22
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Wed May 6 10:33:46 2015 +0200

    sw: add SwDBData::sEmbeddedName
    
    It is supposed to contain the name of a stream in the document storage
    (like "Object 1") that has an embedded database for mail merge data
    source definition purposes.
    
    It's just loaded / saved from ODF at the moment, it's not yet used for
    anything.
    
    Change-Id: Ida366478fd83aa51e66e958ac09d852332c227c9

diff --git a/sw/inc/swdbdata.hxx b/sw/inc/swdbdata.hxx
index 6d91e2b..02ccf68 100644
--- a/sw/inc/swdbdata.hxx
+++ b/sw/inc/swdbdata.hxx
@@ -28,14 +28,16 @@ struct SwDBData
     OUString     sDataSource;
     OUString     sCommand;       //table, query or statement
     sal_Int32           nCommandType; //com::sun::star::sdb::CommandType
+    /// Name of the embedded database that's included in the current document.
+    OUString     sEmbeddedName;
     SwDBData() :
         nCommandType(0){}
     void dumpAsXml(struct _xmlTextWriter* pWriter) const;
 
     bool operator !=(const SwDBData& rCmp) const
-        {return rCmp.sDataSource != sDataSource || rCmp.sCommand != sCommand || rCmp.nCommandType != nCommandType;}
+        {return rCmp.sDataSource != sDataSource || rCmp.sCommand != sCommand || rCmp.nCommandType != nCommandType || rCmp.sEmbeddedName != sEmbeddedName;}
     bool operator ==(const SwDBData& rCmp) const
-        {return rCmp.sDataSource == sDataSource && rCmp.sCommand == sCommand && rCmp.nCommandType == nCommandType;}
+        {return rCmp.sDataSource == sDataSource && rCmp.sCommand == sCommand && rCmp.nCommandType == nCommandType && rCmp.sEmbeddedName == sEmbeddedName;}
 };
 
 #endif
diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx
index c900a08..5e41a85 100644
--- a/sw/source/core/doc/docfmt.cxx
+++ b/sw/source/core/doc/docfmt.cxx
@@ -1957,6 +1957,7 @@ void SwDBData::dumpAsXml(xmlTextWriterPtr pWriter) const
     xmlTextWriterWriteAttribute(pWriter, BAD_CAST("sDataSource"), BAD_CAST(sDataSource.toUtf8().getStr()));
     xmlTextWriterWriteAttribute(pWriter, BAD_CAST("sCommand"), BAD_CAST(sCommand.toUtf8().getStr()));
     xmlTextWriterWriteAttribute(pWriter, BAD_CAST("nCommandType"), BAD_CAST(OString::number(nCommandType).getStr()));
+    xmlTextWriterWriteAttribute(pWriter, BAD_CAST("sEmbeddedName"), BAD_CAST(sEmbeddedName.toUtf8().getStr()));
 
     xmlTextWriterEndElement(pWriter);
 }
diff --git a/sw/source/filter/xml/xmlimp.cxx b/sw/source/filter/xml/xmlimp.cxx
index eb806ed..08ab57c 100644
--- a/sw/source/filter/xml/xmlimp.cxx
+++ b/sw/source/filter/xml/xmlimp.cxx
@@ -1159,6 +1159,7 @@ void SwXMLImport::SetConfigurationSettings(const Sequence < PropertyValue > & aC
     const PropertyValue* currentDatabaseDataSource = NULL;
     const PropertyValue* currentDatabaseCommand = NULL;
     const PropertyValue* currentDatabaseCommandType = NULL;
+    const PropertyValue* embeddedDatabaseName = 0;
 
     while( nCount-- )
     {
@@ -1189,6 +1190,8 @@ void SwXMLImport::SetConfigurationSettings(const Sequence < PropertyValue > & aC
                             currentDatabaseCommand = pValues;
                         else if( pValues->Name == "CurrentDatabaseCommandType" )
                             currentDatabaseCommandType = pValues;
+                        else if (pValues->Name == "EmbeddedDatabaseName")
+                            embeddedDatabaseName = pValues;
                         else
                             xProps->setPropertyValue( pValues->Name,
                                                   pValues->Value );
@@ -1263,6 +1266,8 @@ void SwXMLImport::SetConfigurationSettings(const Sequence < PropertyValue > & aC
             xProps->setPropertyValue( currentDatabaseCommand->Name, currentDatabaseCommand->Value );
         if( currentDatabaseCommandType != NULL )
             xProps->setPropertyValue( currentDatabaseCommandType->Name, currentDatabaseCommandType->Value );
+        if (embeddedDatabaseName)
+            xProps->setPropertyValue(embeddedDatabaseName->Name, embeddedDatabaseName->Value);
     } catch( Exception& )
     {
         OSL_FAIL( "SwXMLImport::SetConfigurationSettings: Exception!" );
diff --git a/sw/source/uibase/uno/SwXDocumentSettings.cxx b/sw/source/uibase/uno/SwXDocumentSettings.cxx
index 7d222ae..f57cf50 100644
--- a/sw/source/uibase/uno/SwXDocumentSettings.cxx
+++ b/sw/source/uibase/uno/SwXDocumentSettings.cxx
@@ -72,6 +72,7 @@ enum SwDocumentSettingsPropertyHandles
     HANDLE_CURRENT_DATABASE_DATA_SOURCE,
     HANDLE_CURRENT_DATABASE_COMMAND,
     HANDLE_CURRENT_DATABASE_COMMAND_TYPE,
+    HANDLE_EMBEDDED_DATABASE_NAME,
     HANDLE_SAVE_VERSION_ON_CLOSE,
     HANDLE_IS_GRID_VISIBLE,
     HANDLE_IS_SNAP_TO_GRID,
@@ -151,6 +152,7 @@ static MasterPropertySetInfo * lcl_createSettingsInfo()
         { OUString("CurrentDatabaseDataSource"),  HANDLE_CURRENT_DATABASE_DATA_SOURCE,    cppu::UnoType<OUString>::get(),          0,   0},
         { OUString("CurrentDatabaseCommand"),     HANDLE_CURRENT_DATABASE_COMMAND,        cppu::UnoType<OUString>::get(),          0,   0},
         { OUString("CurrentDatabaseCommandType"), HANDLE_CURRENT_DATABASE_COMMAND_TYPE,   cppu::UnoType<sal_Int32>::get(),             0,   0},
+        { OUString("EmbeddedDatabaseName"),       HANDLE_EMBEDDED_DATABASE_NAME,          cppu::UnoType<OUString>::get(),              0,   0},
         { OUString("SaveVersionOnClose"),         HANDLE_SAVE_VERSION_ON_CLOSE,           cppu::UnoType<bool>::get(),           0,   0},
         { OUString("UpdateFromTemplate"),         HANDLE_UPDATE_FROM_TEMPLATE,            cppu::UnoType<bool>::get(),           0,   0},
 
@@ -504,6 +506,13 @@ void SwXDocumentSettings::_setSingleValue( const comphelper::PropertyInfo & rInf
                 "\"CurrentDatabaseCommandType\" property possibly set before \"CurrentDatabaseCommand\"" );
         }
         break;
+        case HANDLE_EMBEDDED_DATABASE_NAME:
+        {
+            SwDBData aData = mpDoc->GetDBData();
+            if (rValue >>= aData.sEmbeddedName)
+                mpDoc->ChgDBData(aData);
+        }
+        break;
         case HANDLE_SAVE_VERSION_ON_CLOSE:
         {
             mpDocSh->SetSaveVersionOnClose( *static_cast<sal_Bool const *>(rValue.getValue()) );
@@ -977,6 +986,12 @@ void SwXDocumentSettings::_getSingleValue( const comphelper::PropertyInfo & rInf
             rValue <<= rData.nCommandType;
         }
         break;
+        case HANDLE_EMBEDDED_DATABASE_NAME:
+        {
+            const SwDBData& rData = mpDoc->GetDBDesc();
+            rValue <<= rData.sEmbeddedName;
+        }
+        break;
         case HANDLE_SAVE_VERSION_ON_CLOSE:
         {
             rValue <<= mpDocSh->IsSaveVersionOnClose();


More information about the Libreoffice-commits mailing list