#ifndef ANALOG_DATA_H #define ANALOG_DATA_H #include #include #include "core_global.h" #include "core/gtl_data_model_node.h" namespace gtl { class CORE_EXPORT analog_data : public data_model_node, public std::vector { Q_OBJECT Q_PROPERTY(qreal rate READ get_rate WRITE set_rate NOTIFY rate_changed) Q_PROPERTY(int color READ color WRITE set_color NOTIFY color_changed) Q_PROPERTY(qreal reference READ reference NOTIFY reference_changed) Q_PROPERTY(qreal history READ history WRITE set_history) public: analog_data(data_model_node *parent, bool is_hidden = false); analog_data(analog_data *parent, bool is_hidden = false); analog_data(qreal rate); void get_data(std::back_insert_iterator> data); virtual void set_data(std::vector::iterator begin, std::vector::iterator end); qreal get_rate() const; void lock_device(); void unlock_device(); int color() const; virtual qreal reference() const; virtual void save(QDomElement& root_element); virtual void load(const QDomElement& root_element); virtual void get_state(QJsonObject& root); analog_data* analog_data_root(); protected: qreal _rate; int _color; private: std::vector _history; int _history_ptr; private: qreal history() const; void set_history(qreal value); protected: virtual bool is_checkable() const; public slots: virtual void set_rate(qreal value); void set_color(int value); QJsonArray getHistoryArray(); signals: void data_changed(); void rate_changed(); void color_changed(); void reference_changed(); }; } #endif // ANALOG_DATA_H