fb2tree.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #ifndef FB2TREE_H
  2. #define FB2TREE_H
  3. #include <QAbstractItemModel>
  4. #include <QTextEdit>
  5. class Fb2TreeItem: public QObject
  6. {
  7. Q_OBJECT
  8. public:
  9. explicit Fb2TreeItem(QTextFrame *frame, Fb2TreeItem *parent = 0);
  10. virtual ~Fb2TreeItem();
  11. Fb2TreeItem * item(int index) const;
  12. int index(Fb2TreeItem * child) const {
  13. return m_list.indexOf(child);
  14. }
  15. int count() const {
  16. return m_list.size();
  17. }
  18. Fb2TreeItem * parent() const {
  19. return m_parent;
  20. }
  21. QTextFrame * frame() const {
  22. return m_frame;
  23. }
  24. QString text() const;
  25. private:
  26. QList<Fb2TreeItem*> m_list;
  27. QString m_text;
  28. QTextFrame * m_frame;
  29. Fb2TreeItem * m_parent;
  30. };
  31. class Fb2TreeModel: public QAbstractItemModel
  32. {
  33. Q_OBJECT
  34. public:
  35. explicit Fb2TreeModel(QTextEdit &text, QObject *parent = 0);
  36. virtual ~Fb2TreeModel();
  37. void select(const QModelIndex &index);
  38. public:
  39. virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
  40. virtual QModelIndex parent(const QModelIndex &child) const;
  41. virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
  42. virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;
  43. virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
  44. protected:
  45. Fb2TreeItem * item(const QModelIndex &index) const;
  46. private:
  47. QTextEdit & m_text;
  48. Fb2TreeItem * m_root;
  49. };
  50. #endif // FB2TREE_H