fb2tree.h 1.5 KB

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