##// END OF EJS Templates
Fix the cosinus bug....
Fix the cosinus bug. The provider now works on the variable controller thread instead of the main thread. That means the visu is still usable during zoom operation

File last commit:

r276:3a08c66e4df2
r276:3a08c66e4df2
Show More
Variable.cpp
87 lines | 2.0 KiB | text/x-c | CppLexer
#include "Variable/Variable.h"
#include <Data/IDataSeries.h>
#include <Data/SqpDateTime.h>
Q_LOGGING_CATEGORY(LOG_Variable, "Variable")
struct Variable::VariablePrivate {
explicit VariablePrivate(const QString &name, const QString &unit, const QString &mission,
const SqpDateTime &dateTime)
: m_Name{name},
m_Unit{unit},
m_Mission{mission},
m_DateTime{dateTime},
m_DataSeries{nullptr}
{
}
QString m_Name;
QString m_Unit;
QString m_Mission;
SqpDateTime m_DateTime; // The dateTime available in the view and loaded. not the cache.
std::unique_ptr<IDataSeries> m_DataSeries;
};
Variable::Variable(const QString &name, const QString &unit, const QString &mission,
const SqpDateTime &dateTime)
: impl{spimpl::make_unique_impl<VariablePrivate>(name, unit, mission, dateTime)}
{
}
QString Variable::name() const noexcept
{
return impl->m_Name;
}
QString Variable::mission() const noexcept
{
return impl->m_Mission;
}
QString Variable::unit() const noexcept
{
return impl->m_Unit;
}
SqpDateTime Variable::dateTime() const noexcept
{
return impl->m_DateTime;
}
void Variable::setDateTime(const SqpDateTime &dateTime) noexcept
{
impl->m_DateTime = dateTime;
}
void Variable::setDataSeries(std::unique_ptr<IDataSeries> dataSeries) noexcept
{
if (!impl->m_DataSeries) {
impl->m_DataSeries = std::move(dataSeries);
}
}
void Variable::onAddDataSeries(std::shared_ptr<IDataSeries> dataSeries) noexcept
{
if (impl->m_DataSeries) {
impl->m_DataSeries->merge(dataSeries.get());
emit updated();
}
}
IDataSeries *Variable::dataSeries() const noexcept
{
return impl->m_DataSeries.get();
}
bool Variable::contains(const SqpDateTime &dateTime)
{
return impl->m_DateTime.contains(dateTime);
}
bool Variable::intersect(const SqpDateTime &dateTime)
{
return impl->m_DateTime.intersect(dateTime);
}