diff options
author | Daniel Sikeler <d.sikeler94@gmail.com> | 2014-10-30 14:53:48 +0000 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2014-11-05 11:50:42 +0000 |
commit | 4404b718bdb547cb9b7b17c73a53574724cdeeb7 (patch) | |
tree | 037ad212198f98bf7dc243cf5e86bebb58b4050f | |
parent | fc4d04d51b34cf81e0f69f7210071f795c81fee1 (diff) |
fdo#79761: parse BlockList.xml only once
Change-Id: I3cfc5b66ee73b0e4d07a84c8255c5a006e4fbb25
Reviewed-on: https://gerrit.libreoffice.org/12210
Reviewed-by: Michael Stahl <mstahl@redhat.com>
Tested-by: Michael Stahl <mstahl@redhat.com>
-rw-r--r-- | editeng/source/misc/SvXMLAutoCorrectImport.cxx | 3 | ||||
-rw-r--r-- | editeng/source/misc/svxacorr.cxx | 7 | ||||
-rw-r--r-- | include/editeng/svxacorr.hxx | 5 | ||||
-rw-r--r-- | sw/inc/swacorr.hxx | 9 | ||||
-rw-r--r-- | sw/source/core/sw3io/swacorr.cxx | 16 |
5 files changed, 27 insertions, 13 deletions
diff --git a/editeng/source/misc/SvXMLAutoCorrectImport.cxx b/editeng/source/misc/SvXMLAutoCorrectImport.cxx index 8f2f69e05fe2..e68362e472de 100644 --- a/editeng/source/misc/SvXMLAutoCorrectImport.cxx +++ b/editeng/source/misc/SvXMLAutoCorrectImport.cxx @@ -56,6 +56,7 @@ SvXMLWordListContext::SvXMLWordListContext( SvXMLImportContext ( rImport ), rLocalRef(rImport) { + rLocalRef.rAutoCorrect.refreshBlockList( rLocalRef.xStorage ); } com::sun::star::uno::Reference<XFastContextHandler> SAL_CALL SvXMLWordListContext::createFastChildContext( @@ -94,7 +95,7 @@ SvXMLWordContext::SvXMLWordContext( if( !bOnlyTxt ) { const OUString sLongSave( sRight ); - if( !rLocalRef.rAutoCorrect.GetLongText( rLocalRef.xStorage, sWrong, sRight ) && + if( !rLocalRef.rAutoCorrect.GetLongText( sWrong, sRight ) && !sLongSave.isEmpty() ) { sRight = sLongSave; diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx index 9b840f32ae8b..6b235de53de1 100644 --- a/editeng/source/misc/svxacorr.cxx +++ b/editeng/source/misc/svxacorr.cxx @@ -1627,12 +1627,15 @@ bool SvxAutoCorrect::MakeCombinedChanges( std::vector<SvxAutocorrWord>& aNewEntr // - return the replacement text (only for SWG-Format, all other // can be taken from the word list!) -bool SvxAutoCorrect::GetLongText( const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >&, - const OUString&, OUString& ) +bool SvxAutoCorrect::GetLongText( const OUString&, OUString& ) { return false; } +void SvxAutoCorrect::refreshBlockList( const uno::Reference< embed::XStorage >& ) +{ +} + // Text with attribution (only the SWG - SWG format!) bool SvxAutoCorrect::PutText( const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >&, const OUString&, const OUString&, SfxObjectShell&, OUString& ) diff --git a/include/editeng/svxacorr.hxx b/include/editeng/svxacorr.hxx index 8ad8564e699a..f227ff3db738 100644 --- a/include/editeng/svxacorr.hxx +++ b/include/editeng/svxacorr.hxx @@ -275,8 +275,9 @@ public: sal_Unicode GetQuote( sal_Unicode cInsChar, bool bSttQuote, LanguageType eLang ) const; - virtual bool GetLongText( const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& rStg, - const OUString& rShort, OUString& rLong ); + virtual bool GetLongText( const OUString& rShort, OUString& rLong ); + + virtual void refreshBlockList( const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& rStg); TYPEINFO(); diff --git a/sw/inc/swacorr.hxx b/sw/inc/swacorr.hxx index 5bb3c93474fc..33598c6dbc16 100644 --- a/sw/inc/swacorr.hxx +++ b/sw/inc/swacorr.hxx @@ -24,15 +24,20 @@ #include <com/sun/star/uno/Reference.h> #include <com/sun/star/embed/XStorage.hpp> +#include "SwXMLTextBlocks.hxx" + class SwAutoCorrect : public SvxAutoCorrect { using SvxAutoCorrect::PutText; + std::unique_ptr<SwXMLTextBlocks> m_pTextBlocks; + protected: // Return replacement text (only for SWG-format, all others can be obtained from wordlist!). // rShort is stream-name - encrypted! - virtual bool GetLongText( const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >&, - const OUString& rShort, OUString& rLong ) SAL_OVERRIDE; + virtual bool GetLongText( const OUString& rShort, OUString& rLong ) SAL_OVERRIDE; + + virtual void refreshBlockList( const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& ) SAL_OVERRIDE; // Text with attributes (only SWG-format!). // rShort is stream-name - encrypted! diff --git a/sw/source/core/sw3io/swacorr.cxx b/sw/source/core/sw3io/swacorr.cxx index 8472942872f0..0a08b012264b 100644 --- a/sw/source/core/sw3io/swacorr.cxx +++ b/sw/source/core/sw3io/swacorr.cxx @@ -37,20 +37,24 @@ TYPEINIT1( SwAutoCorrect, SvxAutoCorrect ); * * @param rShort - the stream name (encrypted) */ -bool SwAutoCorrect::GetLongText( const uno::Reference < embed::XStorage >& rStg, - const OUString& rShort, OUString& rLong ) +bool SwAutoCorrect::GetLongText( const OUString& rShort, OUString& rLong ) { sal_uLong nRet = 0; + assert( m_pTextBlocks ); + nRet = m_pTextBlocks->GetText( rShort, rLong ); + return !IsError( nRet ) && !rLong.isEmpty(); +} + +void SwAutoCorrect::refreshBlockList( const uno::Reference< embed::XStorage >& rStg ) +{ if (rStg.is()) { // mba: relative URLs don't make sense here - SwXMLTextBlocks aBlk( rStg, OUString() ); - nRet = aBlk.GetText( rShort, rLong ); + m_pTextBlocks.reset( new SwXMLTextBlocks( rStg, OUString() ) ); } else { - OSL_ENSURE( rStg.is(), "Someone passed SwAutoCorrect::GetLongText a dud storage!"); + OSL_ENSURE( rStg.is(), "Someone passed SwAutoCorrect::refreshBlockList a dud storage!"); } - return !IsError( nRet ) && !rLong.isEmpty(); } // - Text mit Attributierung (kann nur der SWG - SWG-Format!) |