#pragma once #include "ltsscripttimeline_export.h" #include "track_entry_painters.h" #include #include namespace LtsScriptTimeline { class LTSSCRIPTTIMELINE_EXPORT TrackEntry : public QObject { Q_OBJECT public: explicit TrackEntry(const TrackEntryType& tet = TrackEntryType::INVALID) : QObject(), m_topicId(-1), m_startTime(-1), m_length(-1), m_type(tet), isSet(false), index(-1), x(-1), y(-1), h(-1), w(-1) { } explicit TrackEntry(int topicId, int startTime, int length, LtsScriptTimeline::TrackEntryType type, const QJsonObject& detailData, const QString& channelName, const QString& description) : QObject(), m_topicId(topicId), m_startTime(startTime), m_length(length), m_type(type), isSet(false), index(-1), x(-1), y(-1), h(-1), w(-1), m_detailData(detailData), m_channelName(channelName) , m_description(description) { } explicit TrackEntry(const TrackEntry& te) : QObject(), m_topicId(te.m_topicId), m_startTime(te.m_startTime), m_length(te.m_length), m_type(te.m_type), isSet(te.isSet), index(te.index), x(te.x), y(te.y), h(te.h), w(te.w), m_detailData(te.m_detailData), m_channelName(te.m_channelName), m_description(te.m_description), m_filterParentChannel(te.m_filterParentChannel) { } explicit TrackEntry(TrackEntry* te) : QObject(), m_topicId(te->m_topicId), m_startTime(te->m_startTime), m_length(te->m_length), m_type(te->m_type), isSet(te->isSet), index(te->index), x(te->x), y(te->y), h(te->h), w(te->w), m_detailData(te->m_detailData), m_channelName(te->m_channelName), m_description(te->m_description), m_filterParentChannel(te->m_filterParentChannel) { } TrackEntry(const TrackEntryType& tet, int length) : QObject(), m_topicId(-1), m_startTime(-1), m_length(length), m_type(tet), isSet(false), index(-1), x(-1), y(-1), h(-1), w(-1) { } ~TrackEntry() {} TrackEntry& operator=(const TrackEntry& other) { this->m_topicId = other.m_topicId; this->m_startTime = other.m_startTime; this->m_length = other.m_length; this->m_type = other.m_type; this->isSet = other.isSet; this->index = other.index; this->x = other.x; this->y = other.y; this->h = other.h; this->w = other.w; this->m_detailData = other.m_detailData; this->m_channelName = other.m_channelName; this->m_filterParentChannel = other.m_filterParentChannel; this->m_description = other.m_description; return *this; } int m_topicId; int m_startTime; int m_length; TrackEntryType m_type; bool isSet; int index; double x; double y; double h; double w; QJsonObject m_detailData; QString m_channelName; QString m_description; QString m_filterParentChannel; QJsonObject toJson() const { return QJsonObject({{QStringLiteral("topicId"), m_topicId}, {QStringLiteral("startTime"), m_startTime}, {QStringLiteral("length"), m_length}, {QStringLiteral("type"), static_cast(m_type)}, {QStringLiteral("isSet"), isSet}, {QStringLiteral("index"), index}, {QStringLiteral("x"), x}, {QStringLiteral("y"), y}, {QStringLiteral("w"), w}, {QStringLiteral("h"), h}, {QStringLiteral("detailData"), m_detailData}, {QStringLiteral("channelName"), m_channelName}, {QStringLiteral("description"), m_description}, {QStringLiteral("filterParentChannel"), m_filterParentChannel}}); } void fromJson(const QJsonObject& obj) { m_topicId = obj[QStringLiteral("topicId")].toInt(); m_startTime = obj[QStringLiteral("startTime")].toInt(-1); m_length = obj[QStringLiteral("length")].toInt(-1); m_type = static_cast(obj[QStringLiteral("type")].toInt()); isSet = obj[QStringLiteral("isSet")].toBool(); index = obj[QStringLiteral("index")].toInt(); x = obj[QStringLiteral("x")].toDouble(); y = obj[QStringLiteral("y")].toDouble(); w = obj[QStringLiteral("w")].toDouble(); h = obj[QStringLiteral("h")].toDouble(); m_detailData = obj[QStringLiteral("detailData")].toObject(); m_channelName = obj[QStringLiteral("channelName")].toString(); m_description = obj[QStringLiteral("description")].toString(); m_filterParentChannel = obj[QStringLiteral("filterParentChannel")].toString(); } }; } // namespace LtsScriptTimeline