summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sc/inc/refreshtimerprotector.hxx3
-rw-r--r--sc/source/filter/excel/xestream.cxx14
-rw-r--r--sc/source/ui/docshell/docsh.cxx3
-rw-r--r--sc/source/ui/inc/docsh.hxx5
4 files changed, 21 insertions, 4 deletions
diff --git a/sc/inc/refreshtimerprotector.hxx b/sc/inc/refreshtimerprotector.hxx
index d2169cdc090d..679586d22d46 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 2232f2cc1ef3..af7aa7846fc3 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 0760425ab6b0..1904f1b03d5b 100644
--- a/sc/source/ui/docshell/docsh.cxx
+++ b/sc/source/ui/docshell/docsh.cxx
@@ -108,6 +108,7 @@
#include "docshimp.hxx"
#include "sizedev.hxx"
+#include "refreshtimerprotector.hxx"
#include <officecfg/Office/Calc.hxx>
#include <comphelper/processfactory.hxx>
@@ -3024,7 +3025,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 818a63f502f6..7e103902fb1f 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;
@@ -462,7 +463,7 @@ SV_IMPL_REF(ScDocShell)
class SC_DLLPUBLIC ScDocShellModificator
{
ScDocShell& rDocShell;
- ScRefreshTimerProtector aProtector;
+ boost::scoped_ptr<ScRefreshTimerProtector> mpProtector;
bool bAutoCalcShellDisabled;
bool bIdleEnabled;