editeng/source/misc/SvXMLAutoCorrectImport.cxx | 3 ++- editeng/source/misc/svxacorr.cxx | 7 +++++-- include/editeng/svxacorr.hxx | 5 +++-- sw/inc/swacorr.hxx | 9 +++++++-- sw/source/core/sw3io/swacorr.cxx | 16 ++++++++++------ 5 files changed, 27 insertions(+), 13 deletions(-)
New commits: commit 4404b718bdb547cb9b7b17c73a53574724cdeeb7 Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Thu Oct 30 14:53:48 2014 +0000 fdo#79761: parse BlockList.xml only once Change-Id: I3cfc5b66ee73b0e4d07a84c8255c5a006e4fbb25 Reviewed-on: https://gerrit.libreoffice.org/12210 Reviewed-by: Michael Stahl <mst...@redhat.com> Tested-by: Michael Stahl <mst...@redhat.com> diff --git a/editeng/source/misc/SvXMLAutoCorrectImport.cxx b/editeng/source/misc/SvXMLAutoCorrectImport.cxx index 8f2f69e..e68362e 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 9b840f3..6b235de 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 8ad8564..f227ff3 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 5bb3c93..33598c6 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 8472942..0a08b01 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!) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits