diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2017-10-08 17:50:39 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2017-10-12 02:26:45 +0200 |
commit | 0448c3c9de5a5fe9f6bd7caa9b8502a276744df4 (patch) | |
tree | 85b514a0e779701553cc3010afd804482f9330a4 /sc/source/ui/dataprovider/csvdataprovider.cxx | |
parent | 2dd1645d7cd12e8f5d8e950af3d156f8df2fa417 (diff) |
adapt dataprovider to the requirements of the new UI
Change-Id: If10a68a27591f3195ef85c21ea98324903819b36
Reviewed-on: https://gerrit.libreoffice.org/43256
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Diffstat (limited to 'sc/source/ui/dataprovider/csvdataprovider.cxx')
-rw-r--r-- | sc/source/ui/dataprovider/csvdataprovider.cxx | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/sc/source/ui/dataprovider/csvdataprovider.cxx b/sc/source/ui/dataprovider/csvdataprovider.cxx index ed7302209896..28877c247b42 100644 --- a/sc/source/ui/dataprovider/csvdataprovider.cxx +++ b/sc/source/ui/dataprovider/csvdataprovider.cxx @@ -65,14 +65,14 @@ public: namespace sc { -CSVFetchThread::CSVFetchThread(ScDocument& rDoc, const OUString& mrURL, Idle* pIdle, +CSVFetchThread::CSVFetchThread(ScDocument& rDoc, const OUString& mrURL, std::function<void()> aImportFinishedHdl, const std::vector<std::shared_ptr<sc::DataTransformation>>& rDataTransformations): Thread("CSV Fetch Thread"), mrDocument(rDoc), maURL (mrURL), mbTerminate(false), maDataTransformations(rDataTransformations), - mpIdle(pIdle) + maImportFinishedHdl(aImportFinishedHdl) { maConfig.delimiters.push_back(','); maConfig.text_qualifier = '"'; @@ -116,16 +116,13 @@ void CSVFetchThread::execute() } SolarMutexGuard aGuard; - mpIdle->Start(); + maImportFinishedHdl(); } -CSVDataProvider::CSVDataProvider(ScDocument* pDoc, const OUString& rURL, ScDBDataManager* pBDDataManager): - maURL(rURL), - mpDocument(pDoc), - mpDBDataManager(pBDDataManager), - maIdle("CSVDataProvider CopyHandler") +CSVDataProvider::CSVDataProvider(ScDocument* pDoc, sc::ExternalDataSource& rDataSource): + DataProvider(rDataSource), + mpDocument(pDoc) { - maIdle.SetInvokeHandler(LINK(this, CSVDataProvider, ImportFinishedHdl)); } CSVDataProvider::~CSVDataProvider() @@ -145,7 +142,7 @@ void CSVDataProvider::Import() mpDoc.reset(new ScDocument(SCDOCMODE_CLIP)); mpDoc->ResetClip(mpDocument, (SCTAB)0); - mxCSVFetchThread = new CSVFetchThread(*mpDoc, maURL, &maIdle, mpDBDataManager->getDataTransformation()); + mxCSVFetchThread = new CSVFetchThread(*mpDoc, mrDataSource.getURL(), std::bind(&CSVDataProvider::ImportFinished, this), mrDataSource.getDataTransformation()); mxCSVFetchThread->launch(); if (mbDeterministic) @@ -155,10 +152,9 @@ void CSVDataProvider::Import() } } -IMPL_LINK_NOARG(CSVDataProvider, ImportFinishedHdl, Timer*, void) +void CSVDataProvider::ImportFinished() { - mpDBDataManager->WriteToDoc(*mpDoc); - mxCSVFetchThread.clear(); + mrDataSource.getDBManager()->WriteToDoc(*mpDoc); mpDoc.reset(); Refresh(); } @@ -166,7 +162,13 @@ IMPL_LINK_NOARG(CSVDataProvider, ImportFinishedHdl, Timer*, void) void CSVDataProvider::Refresh() { ScDocShell* pDocShell = static_cast<ScDocShell*>(mpDocument->GetDocumentShell()); - pDocShell->SetDocumentModified(); + if (pDocShell) + pDocShell->SetDocumentModified(); +} + +const OUString& CSVDataProvider::GetURL() const +{ + return mrDataSource.getURL(); } } |