diff options
author | Luboš Luňák <l.lunak@suse.cz> | 2012-01-24 16:05:37 +0100 |
---|---|---|
committer | Luboš Luňák <l.lunak@suse.cz> | 2012-01-24 16:11:30 +0100 |
commit | db0f839920c38973f8448df0f74de7c4c95c832c (patch) | |
tree | 683912492d116cad88eca4177315ef16fbc84213 /sw | |
parent | 74a356c3464b56e94c2174a0e7a1d63de8f7071e (diff) |
order database properties so that opening it in writer works (bnc#740032)
http://lists.freedesktop.org/archives/libreoffice/2012-January/024380.html
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/filter/xml/xmlimp.cxx | 30 | ||||
-rw-r--r-- | sw/source/ui/uno/SwXDocumentSettings.cxx | 6 |
2 files changed, 35 insertions, 1 deletions
diff --git a/sw/source/filter/xml/xmlimp.cxx b/sw/source/filter/xml/xmlimp.cxx index a59ebf727b3b..f19a20a8bcea 100644 --- a/sw/source/filter/xml/xmlimp.cxx +++ b/sw/source/filter/xml/xmlimp.cxx @@ -1188,6 +1188,13 @@ void SwXMLImport::SetConfigurationSettings(const Sequence < PropertyValue > & aC OUString sRedlineProtectionKey( RTL_CONSTASCII_USTRINGPARAM( "RedlineProtectionKey" ) ); + const PropertyValue* currentDatabaseDataSource = NULL; + const PropertyValue* currentDatabaseCommand = NULL; + const PropertyValue* currentDatabaseCommandType = NULL; + OUString currentDatabaseDataSourceKey( RTL_CONSTASCII_USTRINGPARAM( "CurrentDatabaseDataSource" )); + OUString currentDatabaseCommandKey( RTL_CONSTASCII_USTRINGPARAM( "CurrentDatabaseCommand" )); + OUString currentDatabaseCommandTypeKey( RTL_CONSTASCII_USTRINGPARAM( "CurrentDatabaseCommandType" )); + while( nCount-- ) { if( !bIsUserSetting ) @@ -1212,7 +1219,15 @@ void SwXMLImport::SetConfigurationSettings(const Sequence < PropertyValue > & aC } else { - xProps->setPropertyValue( pValues->Name, + // HACK: Setting these out of order does not work. + if( pValues->Name.equals( currentDatabaseDataSourceKey )) + currentDatabaseDataSource = pValues; + else if( pValues->Name.equals( currentDatabaseCommandKey )) + currentDatabaseCommand = pValues; + else if( pValues->Name.equals( currentDatabaseCommandTypeKey )) + currentDatabaseCommandType = pValues; + else + xProps->setPropertyValue( pValues->Name, pValues->Value ); } } @@ -1267,6 +1282,19 @@ void SwXMLImport::SetConfigurationSettings(const Sequence < PropertyValue > & aC pValues++; } + try + { + if( currentDatabaseDataSource != NULL ) + xProps->setPropertyValue( currentDatabaseDataSource->Name, currentDatabaseDataSource->Value ); + if( currentDatabaseCommand != NULL ) + xProps->setPropertyValue( currentDatabaseCommand->Name, currentDatabaseCommand->Value ); + if( currentDatabaseCommandType != NULL ) + xProps->setPropertyValue( currentDatabaseCommandType->Name, currentDatabaseCommandType->Value ); + } catch( Exception& ) + { + OSL_FAIL( "SwXMLImport::SetConfigurationSettings: Exception!" ); + } + // finally, treat the non-default cases // introduce boolean, that indicates a document, written by version prior SO8. const bool bDocumentPriorSO8 = !bConsiderWrapOnObjPos; diff --git a/sw/source/ui/uno/SwXDocumentSettings.cxx b/sw/source/ui/uno/SwXDocumentSettings.cxx index 7398dfd0f40d..c349631099f4 100644 --- a/sw/source/ui/uno/SwXDocumentSettings.cxx +++ b/sw/source/ui/uno/SwXDocumentSettings.cxx @@ -474,6 +474,8 @@ void SwXDocumentSettings::_setSingleValue( const comphelper::PropertyInfo & rInf case HANDLE_CURRENT_DATABASE_COMMAND: { SwDBData aData = mpDoc->GetDBData(); + SAL_WARN_IF( aData.sDataSource.isEmpty(), "sw.uno", + "\"CurrentDatabaseCommand\" property possibly set before \"CurrentDatabaseDataSource\"" ); if ( rValue >>= aData.sCommand ) mpDoc->ChgDBData( aData ); } @@ -481,6 +483,10 @@ void SwXDocumentSettings::_setSingleValue( const comphelper::PropertyInfo & rInf case HANDLE_CURRENT_DATABASE_COMMAND_TYPE: { SwDBData aData = mpDoc->GetDBData(); + SAL_WARN_IF( aData.sDataSource.isEmpty(), "sw.uno", + "\"CurrentDatabaseCommandType\" property possibly set before \"CurrentDatabaseDataSource\"" ); + SAL_WARN_IF( aData.sCommand.isEmpty(), "sw.uno", + "\"CurrentDatabaseCommandType\" property possibly set before \"CurrentDatabaseCommand\"" ); if ( rValue >>= aData.nCommandType ) mpDoc->ChgDBData( aData ); } |