summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@suse.cz>2012-01-24 16:05:37 +0100
committerMichael Stahl <mstahl@redhat.com>2012-01-24 16:33:53 +0100
commit17ccd3cfc9dd86e2911a0a31f6dcbba8d7e7950a (patch)
tree044cc1390b9fd07692af4e1023c3a6c937e51631
parent3eff3abb4ea327b884a35e20bcaa3d371ce526f0 (diff)
order database properties so that opening it in writer works (bnc#740032)
http://lists.freedesktop.org/archives/libreoffice/2012-January/024380.html (cherry picked from commit db0f839920c38973f8448df0f74de7c4c95c832c) Signed-off-by: Michael Stahl <mstahl@redhat.com>
-rw-r--r--sw/source/filter/xml/xmlimp.cxx30
-rw-r--r--sw/source/ui/uno/SwXDocumentSettings.cxx6
2 files changed, 35 insertions, 1 deletions
diff --git a/sw/source/filter/xml/xmlimp.cxx b/sw/source/filter/xml/xmlimp.cxx
index 36643e43e430..ca700d0a1349 100644
--- a/sw/source/filter/xml/xmlimp.cxx
+++ b/sw/source/filter/xml/xmlimp.cxx
@@ -1189,6 +1189,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 )
@@ -1213,7 +1220,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 );
}
}
@@ -1268,6 +1283,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 a56f5841f5b7..7b4b7385b5f4 100644
--- a/sw/source/ui/uno/SwXDocumentSettings.cxx
+++ b/sw/source/ui/uno/SwXDocumentSettings.cxx
@@ -470,6 +470,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 );
}
@@ -477,6 +479,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 );
}