test_sdk/core/gtl_analog_data.h

75 lines
1.8 KiB
C
Raw Normal View History

#ifndef ANALOG_DATA_H
#define ANALOG_DATA_H
#include <QObject>
#include <QJsonArray>
#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<qreal>
{
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<std::vector<qreal>> data);
virtual void set_data(std::vector<qreal>::iterator begin, std::vector<qreal>::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<qreal> _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