[Libreoffice-commits] core.git: editeng/source include/editeng sw/inc sw/source

Daniel Sikeler d.sikeler94 at gmail.com
Wed Nov 5 03:51:07 PST 2014


 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.sikeler94 at 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 <mstahl at redhat.com>
    Tested-by: Michael Stahl <mstahl at 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!)


More information about the Libreoffice-commits mailing list