From de933c7a4f69c680302b0c23158bb925659b1163 2017-07-19 10:06:16 From: mperrinel Date: 2017-07-19 10:06:16 Subject: [PATCH] Merge branch 'featureDownloadProgressMock' into develop --- diff --git a/gui/src/SqpApplication.cpp b/gui/src/SqpApplication.cpp index d926b28..de830b8 100644 --- a/gui/src/SqpApplication.cpp +++ b/gui/src/SqpApplication.cpp @@ -40,9 +40,13 @@ public: m_DataSourceController->moveToThread(&m_DataSourceControllerThread); + m_DataSourceControllerThread.setObjectName("DataSourceControllerThread"); m_NetworkController->moveToThread(&m_NetworkControllerThread); + m_NetworkControllerThread.setObjectName("NetworkControllerThread"); m_VariableController->moveToThread(&m_VariableControllerThread); + m_VariableControllerThread.setObjectName("VariableControllerThread"); m_VisualizationController->moveToThread(&m_VisualizationControllerThread); + m_VisualizationControllerThread.setObjectName("VsualizationControllerThread"); // Additionnal init diff --git a/plugins/mockplugin/include/CosinusProvider.h b/plugins/mockplugin/include/CosinusProvider.h index d28952f..44ae6c6 100644 --- a/plugins/mockplugin/include/CosinusProvider.h +++ b/plugins/mockplugin/include/CosinusProvider.h @@ -6,7 +6,9 @@ #include #include +#include +#include Q_DECLARE_LOGGING_CATEGORY(LOG_CosinusProvider) /** @@ -14,15 +16,18 @@ Q_DECLARE_LOGGING_CATEGORY(LOG_CosinusProvider) */ class SCIQLOP_MOCKPLUGIN_EXPORT CosinusProvider : public IDataProvider { public: + /// @sa IDataProvider::requestDataLoading(). The current impl isn't thread safe. void requestDataLoading(QUuid token, const DataProviderParameters ¶meters) override; + /// @sa IDataProvider::requestDataAborting(). The current impl isn't thread safe. void requestDataAborting(QUuid identifier) override; private: - /// @sa IDataProvider::retrieveData() - std::shared_ptr retrieveData(const SqpDateTime &dateTime) const; + std::shared_ptr retrieveData(QUuid token, const SqpDateTime &dateTime); + + QHash m_VariableToEnableProvider; }; #endif // SCIQLOP_COSINUSPROVIDER_H diff --git a/plugins/mockplugin/src/CosinusProvider.cpp b/plugins/mockplugin/src/CosinusProvider.cpp index b1dedae..eec2b6a 100644 --- a/plugins/mockplugin/src/CosinusProvider.cpp +++ b/plugins/mockplugin/src/CosinusProvider.cpp @@ -6,12 +6,15 @@ #include #include +#include #include +#include Q_LOGGING_CATEGORY(LOG_CosinusProvider, "CosinusProvider") -std::shared_ptr CosinusProvider::retrieveData(const SqpDateTime &dateTime) const +std::shared_ptr CosinusProvider::retrieveData(QUuid token, const SqpDateTime &dateTime) { + // TODO: Add Mutex auto dataIndex = 0; // Gets the timerange from the parameters @@ -28,26 +31,65 @@ std::shared_ptr CosinusProvider::retrieveData(const SqpDateTime &da auto scalarSeries = std::make_shared(end - start, Unit{QStringLiteral("t"), true}, Unit{}); + + int progress = 0; + auto progressEnd = end - start; for (auto time = start; time < end; ++time, ++dataIndex) { - const auto timeOnFreq = time / freq; - scalarSeries->setData(dataIndex, timeOnFreq, std::cos(timeOnFreq)); + auto it = m_VariableToEnableProvider.find(token); + if (it != m_VariableToEnableProvider.end() && it.value()) { + const auto timeOnFreq = time / freq; + scalarSeries->setData(dataIndex, timeOnFreq, std::cos(timeOnFreq)); + + // progression + int currentProgress = (time - start) * 100.0 / progressEnd; + if (currentProgress != progress) { + progress = currentProgress; + + emit dataProvidedProgress(token, progress); + } + } + else { + if (!it.value()) { + qCDebug(LOG_CosinusProvider()) + << "CosinusProvider::retrieveData: ARRET De l'acquisition detecté" + << end - time; + } + } } + emit dataProvidedProgress(token, 0.0); + + return scalarSeries; } void CosinusProvider::requestDataLoading(QUuid token, const DataProviderParameters ¶meters) { + // TODO: Add Mutex + m_VariableToEnableProvider[token] = true; qCDebug(LOG_CosinusProvider()) << "CosinusProvider::requestDataLoading" << QThread::currentThread()->objectName(); // NOTE: Try to use multithread if possible const auto times = parameters.m_Times; + for (const auto &dateTime : qAsConst(times)) { - auto scalarSeries = this->retrieveData(dateTime); - emit dataProvided(token, scalarSeries, dateTime); + if (m_VariableToEnableProvider[token]) { + auto scalarSeries = this->retrieveData(token, dateTime); + emit dataProvided(token, scalarSeries, dateTime); + } } } void CosinusProvider::requestDataAborting(QUuid identifier) { - // TODO + // TODO: Add Mutex + qCDebug(LOG_CosinusProvider()) << "CosinusProvider::requestDataAborting" << identifier + << QThread::currentThread()->objectName(); + auto it = m_VariableToEnableProvider.find(identifier); + if (it != m_VariableToEnableProvider.end()) { + it.value() = false; + } + else { + qCWarning(LOG_CosinusProvider()) + << tr("Aborting progression of inexistant identifier detected !!!"); + } }