File indexing completed on 2024-05-12 05:39:52

0001 #ifndef TREEITEM_H
0002 #define TREEITEM_H
0003 
0004 #include <QJsonArray>
0005 #include <QJsonObject>
0006 #include <QObject>
0007 #include <QString>
0008 
0009 #include "network_global.h"
0010 /**
0011  * @brief The TreeItem class
0012  */
0013 class NETWORK_EXPORT TreeItem : public QObject
0014 {
0015     Q_OBJECT
0016     Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
0017     Q_PROPERTY(QString uuid READ uuid WRITE setUuid NOTIFY uuidChanged)
0018 public:
0019     TreeItem(QObject* parent= nullptr);
0020 
0021     virtual void appendChild();
0022     virtual bool isLeaf() const;
0023     virtual int childCount() const;
0024     virtual int addChild(TreeItem*);
0025     virtual TreeItem* getChildAt(int row);
0026 
0027     TreeItem* getParentItem() const;
0028     void setParentItem(TreeItem* parent);
0029 
0030     QString name() const;
0031     void setName(const QString& name);
0032 
0033     virtual int indexOf(TreeItem*)= 0;
0034     int rowInParent();
0035 
0036     QString uuid() const;
0037     void setUuid(const QString& id);
0038 
0039     virtual bool addChildInto(QString id, TreeItem* child);
0040 
0041     virtual void clear();
0042 
0043     virtual void kick(const QString& str, bool isAdmin, const QString& senderId);
0044 
0045     virtual TreeItem* getChildById(QString id);
0046     virtual bool removeChild(TreeItem*);
0047 
0048 signals:
0049     void itemChanged();
0050     void nameChanged();
0051     void uuidChanged();
0052 
0053 protected:
0054     QString m_id;
0055     QString m_name;
0056     TreeItem* m_parentItem= nullptr;
0057 };
0058 
0059 #endif // TREEITEM_H