00001 #ifndef TREEITEM_H 00002 #define TREEITEM_H 00003 00004 #include <QList> 00005 #include <QVariant> 00006 #include <QVector> 00007 #include <QStringList> 00008 #include <QDomElement> 00009 #include <QDomDocument> 00010 00011 #include "recordtabledata.h" 00012 00013 class TreeItem 00014 { 00015 public: 00016 TreeItem(const QMap<QString, QString> &data, TreeItem *parent = 0); 00017 ~TreeItem(); 00018 00019 // Возвращение ссылки на потомка, который хранится в списке childItems 00020 // под указанным номером 00021 TreeItem *child(int number); 00022 00023 // Возвращение количества потомков (т.е. количество записей в списке childItems) 00024 int childCount() const; 00025 00026 // Возвращение количества полей, которые хранит данный элемент. 00027 int fieldCount() const; 00028 00029 // Получение значение поля с указанным именем 00030 QVariant data(QString name); 00031 00032 // Заполнение указанного поля 00033 void setData(QString n,QString v); 00034 00035 // Добавление потомка (потомков) к текущему элементу 00036 // position - после какой позиции массива childItems вставить 00037 // count - сколько потомков вставить (обычно 1, но можно и несколько) 00038 // columns - сколько столбцов должен содержать потомок 00039 bool insertChildren(int position, int count, int columns); 00040 00041 // Добавление нового подчиненного элемента 00042 // в конец списка подчиненных элементов 00043 bool addChildren(void); 00044 00045 // Возвращение ссылки на родительский элемент 00046 TreeItem *parent(); 00047 00048 // Удаление потомков, начиная с позиции position массива childItems 00049 bool removeChildren(int position, int count); 00050 00051 // Возвращает номер, под которым данный объект хранится 00052 // в массиве childItems своего родителя 00053 int childNumber() const; 00054 00055 bool move_up(void); 00056 bool move_dn(void); 00057 00058 // Возвращает id путь (список идентификаторов от корня до текущего элемента) 00059 QStringList get_path(void); 00060 00061 // Возвращает путь в виде названий веток дерева 00062 QStringList get_path_as_name(void); 00063 00064 // Возвращает массив путей всех подветок, которые содержит ветка 00065 QList<QStringList> get_all_children_path(void); 00066 00067 // Первичное заполнение таблицы конечных записей, "промежуточный" метод 00068 void recordtable_init(QDomElement dommodel); 00069 00070 // Взятие количества записей в таблице конечных записей, "промежуточный" метод 00071 int recordtable_getrowcount(void); 00072 00073 // Удаление всех элементов в таблице конечных записей, "промежуточный" метод 00074 void recordtable_clear(void); 00075 00076 // Преобразование таблицы конечных записей в DOM представление, "промежуточный" метод 00077 QDomDocument recordtable_export_data_to_dom(void); 00078 00079 // Взятие ссылки на данные конечных записей 00080 recordtabledata *recordtable_gettabledata(void); 00081 00082 private: 00083 bool removeChildrenLink(int position, int count); 00084 QList<QStringList> get_all_children_path_recurse(TreeItem *item,int mode); 00085 QStringList get_path_as_field(QString field); 00086 00087 QList<TreeItem*> childItems; // Список ссылок на потомков 00088 TreeItem *parentItem; // Ссылка на родителя 00089 00090 // Таблица полей 00091 QMap<QString, QString> fieldtable; 00092 00093 // Каждый элемент может содержать данные таблицы конечных записей 00094 recordtabledata rtable; 00095 }; 00096 00097 #endif