summaryrefslogtreecommitdiff
path: root/sc/source/ui/dataprovider/csvdataprovider.cxx
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2017-10-08 17:50:39 +0200
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2017-10-12 02:26:45 +0200
commit0448c3c9de5a5fe9f6bd7caa9b8502a276744df4 (patch)
tree85b514a0e779701553cc3010afd804482f9330a4 /sc/source/ui/dataprovider/csvdataprovider.cxx
parent2dd1645d7cd12e8f5d8e950af3d156f8df2fa417 (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.cxx30
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();
}
}