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

Kohei Yoshida kohei.yoshida at collabora.com
Mon Dec 30 16:39:26 PST 2013


 sc/source/ui/docshell/datastream.cxx    |   52 ++++++++------------------------
 sc/source/ui/inc/datastream.hxx         |    7 +++-
 sc/source/ui/miscdlgs/datastreamdlg.cxx |    5 +--
 3 files changed, 23 insertions(+), 41 deletions(-)

New commits:
commit fed8a0b291eca0565071da27d6fb7c7c5f331dcd
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Mon Dec 30 16:50:02 2013 -0500

    Display 3D address & honor current reference address convension.
    
    Change-Id: I0c0f03807ddfadb5b9c17c81eeb86d51c877d4b4

diff --git a/sc/source/ui/miscdlgs/datastreamdlg.cxx b/sc/source/ui/miscdlgs/datastreamdlg.cxx
index 8f8aee9..2b6f023 100644
--- a/sc/source/ui/miscdlgs/datastreamdlg.cxx
+++ b/sc/source/ui/miscdlgs/datastreamdlg.cxx
@@ -100,7 +100,7 @@ ScRange DataStreamDlg::GetStartRange()
     OUString aStr = m_pEdRange->GetText();
     ScDocument* pDoc = mpDocShell->GetDocument();
     ScRange aRange;
-    sal_uInt16 nRes = aRange.Parse(aStr, pDoc);
+    sal_uInt16 nRes = aRange.Parse(aStr, pDoc, pDoc->GetAddressConvention());
     if ((nRes & SCA_VALID) != SCA_VALID || !aRange.IsValid())
     {
         // Invalid range.
@@ -118,11 +118,12 @@ ScRange DataStreamDlg::GetStartRange()
 void DataStreamDlg::Init( const DataStream& rStrm )
 {
     m_pCbUrl->SetText(rStrm.GetURL());
+    ScDocument* pDoc = mpDocShell->GetDocument();
 
     ScRange aRange = rStrm.GetRange();
     ScRange aTopRange = aRange;
     aTopRange.aEnd.SetRow(aTopRange.aStart.Row());
-    OUString aStr = aTopRange.Format(SCA_VALID);
+    OUString aStr = aTopRange.Format(SCR_ABS_3D, pDoc, pDoc->GetAddressConvention());
     m_pEdRange->SetText(aStr);
     SCROW nRows = aRange.aEnd.Row() - aRange.aStart.Row() + 1;
 
commit 226f4f037c8492eca1050b0590169e85e61fb413
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Mon Dec 30 15:43:21 2013 -0500

    Remove CallerThread and use Timer to do the same, on the main thread.
    
    This makes the UI more responsive in general.
    
    Change-Id: I5f8a4fab84a73812af868262cc7daa9d92cb3777

diff --git a/sc/source/ui/docshell/datastream.cxx b/sc/source/ui/docshell/datastream.cxx
index 35665a2..04605e4 100644
--- a/sc/source/ui/docshell/datastream.cxx
+++ b/sc/source/ui/docshell/datastream.cxx
@@ -111,37 +111,6 @@ public:
 
 namespace datastreams {
 
-class CallerThread : public salhelper::Thread
-{
-    DataStream *mpDataStream;
-public:
-    osl::Condition maStart;
-    bool mbTerminate;
-
-    CallerThread(DataStream *pData):
-        Thread("CallerThread")
-        ,mpDataStream(pData)
-        ,mbTerminate(false)
-    {}
-
-private:
-    virtual void execute()
-    {
-        while (!mbTerminate)
-        {
-            // wait for a small amount of time, so that
-            // painting methods have a chance to be called.
-            // And also to make UI more responsive.
-            TimeValue const aTime = {0, 1000};
-            maStart.wait();
-            maStart.reset();
-            if (!mbTerminate)
-                while (mpDataStream->ImportData())
-                    wait(aTime);
-        };
-    }
-};
-
 void emptyLineQueue( std::queue<DataStream::LinesType*>& rQueue )
 {
     while (!rQueue.empty())
@@ -371,8 +340,8 @@ DataStream::DataStream(ScDocShell *pShell, const OUString& rURL, const ScRange&
     mfLastRefreshTime(0.0),
     mnCurRow(0)
 {
-    mxThread = new datastreams::CallerThread( this );
-    mxThread->launch();
+    maImportTimer.SetTimeout(0);
+    maImportTimer.SetTimeoutHdl( LINK(this, DataStream, ImportTimerHdl) );
 
     Decode(rURL, rRange, nLimit, eMove, nSettings);
 }
@@ -381,9 +350,7 @@ DataStream::~DataStream()
 {
     if (mbRunning)
         StopImport();
-    mxThread->mbTerminate = true;
-    mxThread->maStart.set();
-    mxThread->join();
+
     if (mxReaderThread.is())
     {
         mxReaderThread->endThread();
@@ -487,7 +454,8 @@ void DataStream::StartImport()
     }
     mbRunning = true;
     maDocAccess.reset();
-    mxThread->maStart.set();
+
+    maImportTimer.Start();
 }
 
 void DataStream::StopImport()
@@ -497,6 +465,7 @@ void DataStream::StopImport()
 
     mbRunning = false;
     Refresh();
+    maImportTimer.Stop();
 }
 
 void DataStream::SetRefreshOnEmptyLine( bool bVal )
@@ -618,7 +587,6 @@ void DataStream::Text2Doc() {}
 
 bool DataStream::ImportData()
 {
-    SolarMutexGuard aGuard;
     if (!mbValuesInLine)
         // We no longer support this mode. To be deleted later.
         return false;
@@ -630,6 +598,14 @@ bool DataStream::ImportData()
     return mbRunning;
 }
 
+IMPL_LINK_NOARG(DataStream, ImportTimerHdl)
+{
+    if (ImportData())
+        maImportTimer.Start();
+
+    return 0;
+}
+
 } // namespace sc
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/inc/datastream.hxx b/sc/source/ui/inc/datastream.hxx
index 5af2dc7..5600a09 100644
--- a/sc/source/ui/inc/datastream.hxx
+++ b/sc/source/ui/inc/datastream.hxx
@@ -14,6 +14,7 @@
 
 #include <rtl/ref.hxx>
 #include <rtl/ustring.hxx>
+#include <vcl/timer.hxx>
 #include <address.hxx>
 
 #include <boost/noncopyable.hpp>
@@ -102,6 +103,8 @@ private:
     void Text2Doc();
     void Refresh();
 
+    DECL_LINK( ImportTimerHdl, void* );
+
 private:
     ScDocShell* mpDocShell;
     ScDocument* mpDoc;
@@ -121,7 +124,9 @@ private:
     SCROW mnCurRow;
     ScRange maStartRange;
     ScRange maEndRange;
-    rtl::Reference<datastreams::CallerThread> mxThread;
+
+    Timer maImportTimer;
+
     rtl::Reference<datastreams::ReaderThread> mxReaderThread;
 };
 


More information about the Libreoffice-commits mailing list