summaryrefslogtreecommitdiff
path: root/sc/source/ui/docshell
diff options
context:
space:
mode:
authorJaskaran Singh <jvsg1303@gmail.com>2016-12-08 13:21:34 +0530
committerJaskaran singh <jvsg1303@gmail.com>2016-12-11 15:12:19 +0000
commit777c22bca071942a14f2db4b38d711a5a00df1b3 (patch)
tree84c6efd7b656cac15769d2b839f22818ef3f5acb /sc/source/ui/docshell
parentcc6da0af33380eb598ecfd47b4c4bde8db764289 (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.cxx58
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: */