summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@collabora.com>2015-02-15 17:07:31 +0100
committerLuboš Luňák <l.lunak@collabora.com>2015-02-26 16:39:01 +0100
commit7f88e26321d112e1a3ed43e2ac4cba8d6b374a09 (patch)
tree01bf9adeac5ae05fe59406b91362ea6a895f5340
parent44f40b82d52cfe60de3f18ed5aeae04171c9b197 (diff)
do not create temp file(s) during MM if not needed
Change-Id: I1360e215bff42dd866ab1d94a18a8f2f9ddc7c66
-rw-r--r--sw/source/ui/dbui/dbmgr.cxx28
1 files changed, 16 insertions, 12 deletions
diff --git a/sw/source/ui/dbui/dbmgr.cxx b/sw/source/ui/dbui/dbmgr.cxx
index fe9e339a40a5..79ebd0d1e252 100644
--- a/sw/source/ui/dbui/dbmgr.cxx
+++ b/sw/source/ui/dbui/dbmgr.cxx
@@ -981,6 +981,7 @@ sal_Bool SwNewDBMgr::MergeMailFiles(SwWrtShell* pSourceShell,
SwView* pTargetView = 0;
std::auto_ptr< utl::TempFile > aTempFile;
+ bool createTempFile = ( rMergeDescriptor.nMergeType == DBMGR_MERGE_EMAIL || rMergeDescriptor.nMergeType == DBMGR_MERGE_FILE );
String sModifiedStartingPageDesc;
String sStartingPageDesc;
sal_uInt16 nStartingPageNo = 0;
@@ -1095,7 +1096,7 @@ sal_Bool SwNewDBMgr::MergeMailFiles(SwWrtShell* pSourceShell,
}
// create a new temporary file name - only done once in case of bCreateSingleFile
- if( 1 == nDocNo || !rMergeDescriptor.bCreateSingleFile )
+ if( createTempFile && ( 1 == nDocNo || !rMergeDescriptor.bCreateSingleFile ))
{
INetURLObject aEntry(sPath);
String sLeading;
@@ -1111,23 +1112,25 @@ sal_Bool SwNewDBMgr::MergeMailFiles(SwWrtShell* pSourceShell,
new utl::TempFile(sLeading,&sExt,&sPath ));
if( rMergeDescriptor.bSubjectIsFilename )
aTempFile->EnableKillingFile();
+ if( !aTempFile->IsValid() )
+ {
+ ErrorHandler::HandleError( ERRCODE_IO_NOTSUPPORTED );
+ bNoError = false;
+ bCancel = true;
+ }
}
- if( !aTempFile->IsValid() )
- {
- ErrorHandler::HandleError( ERRCODE_IO_NOTSUPPORTED );
- bNoError = sal_False;
- bCancel = sal_True;
- }
- else
+ if( !bCancel )
{
- INetURLObject aTempFileURL(aTempFile->GetURL());
+ boost::scoped_ptr< INetURLObject > aTempFileURL;
+ if( createTempFile )
+ aTempFileURL.reset( new INetURLObject(aTempFile->GetURL()));
if (!IsMergeSilent()) {
if( bMergeShell )
((CreateMonitor*) pProgressDlg)->SetCurrentPosition( nDocNo );
else {
PrintMonitor *pPrintMonDlg = (PrintMonitor*) pProgressDlg;
- pPrintMonDlg->aPrinter.SetText( aTempFileURL.GetBase() );
+ pPrintMonDlg->aPrinter.SetText( createTempFile ? aTempFileURL->GetBase() : OUString( pSourceDocSh->GetTitle( 22 )));
OUString sStat(SW_RES(STR_STATSTR_LETTER)); // Brief
sStat += " ";
sStat += OUString::number( nDocNo );
@@ -1236,7 +1239,8 @@ sal_Bool SwNewDBMgr::MergeMailFiles(SwWrtShell* pSourceShell,
}
else
{
- String sFileURL = aTempFileURL.GetMainURL( INetURLObject::NO_DECODE );
+ assert( createTempFile );
+ String sFileURL = aTempFileURL->GetMainURL( INetURLObject::NO_DECODE );
SfxMedium* pDstMed = new SfxMedium(
sFileURL,
STREAM_STD_READWRITE );
@@ -1391,7 +1395,7 @@ sal_Bool SwNewDBMgr::MergeMailFiles(SwWrtShell* pSourceShell,
{
if( rMergeDescriptor.nMergeType != DBMGR_MERGE_PRINTER )
{
- OSL_ENSURE( aTempFile.get(), "Temporary file not available" );
+ assert( aTempFile.get());
INetURLObject aTempFileURL( rMergeDescriptor.bSubjectIsFilename ? sSubject : aTempFile->GetURL());
SfxMedium* pDstMed = new SfxMedium(
aTempFileURL.GetMainURL( INetURLObject::NO_DECODE ),