diff options
author | Jaskaran Singh <jvsg1303@gmail.com> | 2016-12-08 13:21:34 +0530 |
---|---|---|
committer | Jaskaran singh <jvsg1303@gmail.com> | 2016-12-11 15:12:19 +0000 |
commit | 777c22bca071942a14f2db4b38d711a5a00df1b3 (patch) | |
tree | 84c6efd7b656cac15769d2b839f22818ef3f5acb /sc/source/ui/docshell | |
parent | cc6da0af33380eb598ecfd47b4c4bde8db764289 (diff) |
Implement CSVDataProvider and perform some cleanup on it
Change-Id: Ic409bd4977fdf610294bd13b7ea83ef9a4c48667
Reviewed-on: https://gerrit.libreoffice.org/31750
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Jaskaran singh <jvsg1303@gmail.com>
Diffstat (limited to 'sc/source/ui/docshell')
-rw-r--r-- | sc/source/ui/docshell/dataprovider.cxx | 58 |
1 files changed, 57 insertions, 1 deletions
diff --git a/sc/source/ui/docshell/dataprovider.cxx b/sc/source/ui/docshell/dataprovider.cxx index 80a6b2b19774..7df702ca4d29 100644 --- a/sc/source/ui/docshell/dataprovider.cxx +++ b/sc/source/ui/docshell/dataprovider.cxx @@ -17,6 +17,10 @@ namespace sc { +DataProvider::~DataProvider() +{ +} + Cell::Cell() : mfValue(0.0), mbValue(true) {} Cell::Cell(const Cell& r) : mbValue(r.mbValue) @@ -68,9 +72,10 @@ public: } }; -CSVFetchThread::CSVFetchThread(SvStream *pData): +CSVFetchThread::CSVFetchThread(SvStream *pData, size_t nColCount): Thread("ReaderThread"), mpStream(pData), + mnColCount(nColCount), mbTerminate(false) { maConfig.delimiters.push_back(','); @@ -117,6 +122,57 @@ void CSVFetchThread::execute() RequestTerminate(); } +CSVDataProvider::CSVDataProvider(const OUString& rURL, const ScRange& rRange): + maURL(rURL), + mrRange(rRange), + mbImportUnderway(false) +{ +} + +CSVDataProvider::~CSVDataProvider() +{ + if(mbImportUnderway) + StopImport(); + + if (mxCSVFetchThread.is()) + { + mxCSVFetchThread->EndThread(); + mxCSVFetchThread->join(); + } +} + +void CSVDataProvider::StartImport() +{ + if (mbImportUnderway) + return; + + if (!mxCSVFetchThread.is()) + { + SvStream *pStream = nullptr; + pStream = new SvFileStream(maURL, StreamMode::READ); + mxCSVFetchThread = new CSVFetchThread(pStream, mrRange.aEnd.Col() - mrRange.aStart.Col() + 1); + mxCSVFetchThread->launch(); + } + mbImportUnderway = true; + + maImportTimer.Start(); +} + +void CSVDataProvider::StopImport() +{ + if (!mbImportUnderway) + return; + + mbImportUnderway = false; + Refresh(); + maImportTimer.Stop(); +} + +void CSVDataProvider::Refresh() +{ + +} + } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |