[Libreoffice-commits] core.git: sc/inc sc/source

Kohei Yoshida kohei.yoshida at collabora.com
Wed Dec 11 09:34:33 PST 2013


 sc/inc/refreshtimerprotector.hxx    |    3 ++-
 sc/source/filter/excel/xestream.cxx |   14 ++++++++++++++
 sc/source/ui/docshell/docsh.cxx     |    3 ++-
 sc/source/ui/inc/docsh.hxx          |    5 +++--
 4 files changed, 21 insertions(+), 4 deletions(-)

New commits:
commit da1392934e043bfd12b94dab7b874ddf940f097b
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Wed Dec 11 12:19:44 2013 -0500

    Let's use a status indicator while exporting to xlsx.
    
    And reduce header dependency on docsh.hxx which a lot of files include
    directly or indirectly...
    
    Change-Id: I2de25380f8b634456e0add940fbb775ac11414cd

diff --git a/sc/inc/refreshtimerprotector.hxx b/sc/inc/refreshtimerprotector.hxx
index d2169cd..679586d 100644
--- a/sc/inc/refreshtimerprotector.hxx
+++ b/sc/inc/refreshtimerprotector.hxx
@@ -11,10 +11,11 @@
 #define SC_REFRESHTIMERPROTECTOR_HXX
 
 #include <sal/config.h>
+#include "scdllapi.h"
 
 class ScRefreshTimerControl;
 
-class ScRefreshTimerProtector
+class SC_DLLPUBLIC ScRefreshTimerProtector
 {
     ScRefreshTimerControl * const * ppControl;
 
diff --git a/sc/source/filter/excel/xestream.cxx b/sc/source/filter/excel/xestream.cxx
index 2232f2c..af7aa78 100644
--- a/sc/source/filter/excel/xestream.cxx
+++ b/sc/source/filter/excel/xestream.cxx
@@ -39,6 +39,8 @@
 #include "compiler.hxx"
 #include "formulacell.hxx"
 #include "tokenarray.hxx"
+#include "refreshtimerprotector.hxx"
+#include "globstr.hrc"
 
 #include <../../ui/inc/docsh.hxx>
 #include <../../ui/inc/viewdata.hxx>
@@ -53,6 +55,8 @@
 #include <sfx2/objsh.hxx>
 #include <sfx2/app.hxx>
 
+#include <com/sun/star/task/XStatusIndicator.hpp>
+
 #define DEBUG_XL_ENCRYPTION 0
 
 using ::com::sun::star::embed::XStorage;
@@ -64,6 +68,7 @@ using ::com::sun::star::uno::XInterface;
 using ::utl::OStreamWrapper;
 using ::std::vector;
 
+using namespace com::sun::star;
 using namespace ::com::sun::star::beans;
 using namespace ::com::sun::star::io;
 using namespace ::com::sun::star::lang;
@@ -1089,6 +1094,12 @@ bool XclExpXmlStream::exportDocument() throw()
 {
     ScDocShell* pShell = getDocShell();
     ScDocument* pDoc = pShell->GetDocument();
+    ScRefreshTimerProtector aProt(pDoc->GetRefreshTimerControlAddress());
+
+    uno::Reference<task::XStatusIndicator> xStatusIndicator = getStatusIndicator();
+
+    xStatusIndicator->start(ScGlobal::GetRscString(STR_SAVE_DOC), 100);
+
     // NOTE: Don't use SotStorage or SvStream any more, and never call
     // SfxMedium::GetOutStream() anywhere in the xlsx export filter code!
     // Instead, write via XOutputStream instance.
@@ -1120,10 +1131,13 @@ bool XclExpXmlStream::exportDocument() throw()
     // destruct at the end of the block
     {
         ExcDocument aDocRoot( aRoot );
+        xStatusIndicator->setValue(10);
         aDocRoot.ReadDoc();
+        xStatusIndicator->setValue(40);
         aDocRoot.WriteXml( *this );
     }
 
+    xStatusIndicator->end();
     mpRoot = NULL;
     return true;
 }
diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx
index 9726cab..ca39e78 100644
--- a/sc/source/ui/docshell/docsh.cxx
+++ b/sc/source/ui/docshell/docsh.cxx
@@ -108,6 +108,7 @@
 #include "docparam.hxx"
 #include "docshimp.hxx"
 #include "sizedev.hxx"
+#include "refreshtimerprotector.hxx"
 
 #include <officecfg/Office/Calc.hxx>
 #include <comphelper/processfactory.hxx>
@@ -3038,7 +3039,7 @@ void ScDocShell::UseSheetSaveEntries()
 ScDocShellModificator::ScDocShellModificator( ScDocShell& rDS )
         :
         rDocShell( rDS ),
-        aProtector( rDS.GetDocument()->GetRefreshTimerControlAddress() )
+        mpProtector(new ScRefreshTimerProtector(rDS.GetDocument()->GetRefreshTimerControlAddress()))
 {
     ScDocument* pDoc = rDocShell.GetDocument();
     bAutoCalcShellDisabled = pDoc->IsAutoCalcShellDisabled();
diff --git a/sc/source/ui/inc/docsh.hxx b/sc/source/ui/inc/docsh.hxx
index 0b157e7..9bff2f0 100644
--- a/sc/source/ui/inc/docsh.hxx
+++ b/sc/source/ui/inc/docsh.hxx
@@ -33,15 +33,16 @@
 #include "appoptio.hxx"
 #include "formulaopt.hxx"
 #include "shellids.hxx"
-#include "refreshtimerprotector.hxx"
 #include "optutil.hxx"
 #include "docuno.hxx"
 
 #include <boost/unordered_map.hpp>
+#include <boost/scoped_ptr.hpp>
 #include <cppuhelper/implbase1.hxx>
 
 #include <config_telepathy.h>
 
+class ScRefreshTimerProtector;
 class ScEditEngineDefaulter;
 class SfxStyleSheetBasePool;
 class SfxStyleSheetHint;
@@ -467,7 +468,7 @@ SV_IMPL_REF(ScDocShell)
 class SC_DLLPUBLIC ScDocShellModificator
 {
             ScDocShell&     rDocShell;
-    ScRefreshTimerProtector aProtector;
+    boost::scoped_ptr<ScRefreshTimerProtector> mpProtector;
             bool            bAutoCalcShellDisabled;
             bool            bIdleEnabled;
 


More information about the Libreoffice-commits mailing list