96 lines
2.3 KiB
C
96 lines
2.3 KiB
C
|
#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
|