test_sdk/core/gtl_data_model_node.h

96 lines
2.3 KiB
C
Raw Normal View History

#ifndef DATA_MODEL_NODE_H
#define DATA_MODEL_NODE_H
#include <QObject>
#include <QDomElement>
#include <QJsonObject>
#include "core_global.h"
namespace gtl
{
class CORE_EXPORT data_model_node : public QObject
{
Q_OBJECT
Q_PROPERTY(QString name READ name WRITE set_name NOTIFY name_changed)
public:
enum types
{
unknown,
device,
analog
};
public:
data_model_node(types type, data_model_node *parent = nullptr, bool is_hidden = false);
~data_model_node();
data_model_node* parent_node() const;
QString name() const;
int count();
int index_of(const data_model_node* child) const;
int index_of() const;
data_model_node* child(int idx);
virtual bool is_checkable() const = 0;
types type() const;
QString path() const;
virtual void save(QDomElement& root_element);
virtual void save_childs(QDomElement& root_element);
virtual void load(const QDomElement& root_element);
virtual void load_childs(const QDomElement& root_element);
virtual void get_state(QJsonObject& root);
bool remove(data_model_node* child);
void remove_children();
data_model_node* root();
bool is_child_name_exist(QString name);
void set_enabled(bool value);
bool is_enabled() const;
protected:
QString _name;
std::vector<data_model_node*> _children;
std::vector<data_model_node*> _hidden_children;
bool _is_enabled;
private:
types _type;
private:
void add_child(data_model_node* child);
void add_hidden_child(data_model_node* child);
public slots:
void set_name(QString name);
void deleting_hidden_child();
private slots:
void deleting_child();
signals:
void name_changed();
void node_name_changed(data_model_node*);
void deleting();
gtl::data_model_node* create_node(gtl::data_model_node* parent, QDomElement& node_element);
void begin_insert_children(gtl::data_model_node* parent, int begin, int end);
void end_insert_children();
void begin_remove_children(gtl::data_model_node* parent, int begin, int end);
void end_remove_children();
};
}
#endif // DATA_MODEL_NODE_H