diff options
author | Luboš Luňák <l.lunak@collabora.com> | 2015-02-15 17:07:31 +0100 |
---|---|---|
committer | Luboš Luňák <l.lunak@collabora.com> | 2015-02-26 16:39:01 +0100 |
commit | 7f88e26321d112e1a3ed43e2ac4cba8d6b374a09 (patch) | |
tree | 01bf9adeac5ae05fe59406b91362ea6a895f5340 | |
parent | 44f40b82d52cfe60de3f18ed5aeae04171c9b197 (diff) |
do not create temp file(s) during MM if not needed
Change-Id: I1360e215bff42dd866ab1d94a18a8f2f9ddc7c66
-rw-r--r-- | sw/source/ui/dbui/dbmgr.cxx | 28 |
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 ), |