fb2tree.hpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #ifndef FB2TREE_H
  2. #define FB2TREE_H
  3. #include <QAbstractItemModel>
  4. #include <QWebElement>
  5. #include <QWebView>
  6. QT_BEGIN_NAMESPACE
  7. class QTreeView;
  8. QT_END_NAMESPACE
  9. class Fb2TreeItem: public QObject
  10. {
  11. Q_OBJECT
  12. public:
  13. explicit Fb2TreeItem(QWebElement &element, Fb2TreeItem *parent = 0);
  14. virtual ~Fb2TreeItem();
  15. Fb2TreeItem * item(const QModelIndex &index) const;
  16. Fb2TreeItem * item(int row) const;
  17. int index(Fb2TreeItem * child) const {
  18. return m_list.indexOf(child);
  19. }
  20. int count() const {
  21. return m_list.size();
  22. }
  23. Fb2TreeItem * parent() const {
  24. return m_parent;
  25. }
  26. QString text() const;
  27. const QString & name() const {
  28. return m_name;
  29. }
  30. QPoint pos() const {
  31. return m_element.geometry().topLeft();
  32. }
  33. QString selector() const;
  34. private:
  35. QString static title(const QWebElement &element);
  36. void addChildren(QWebElement &parent);
  37. private:
  38. QList<Fb2TreeItem*> m_list;
  39. QWebElement m_element;
  40. QString m_name;
  41. QString m_text;
  42. Fb2TreeItem * m_parent;
  43. };
  44. class Fb2TreeModel: public QAbstractItemModel
  45. {
  46. Q_OBJECT
  47. public:
  48. explicit Fb2TreeModel(QWebView &view, QObject *parent = 0);
  49. virtual ~Fb2TreeModel();
  50. void select(const QModelIndex &index);
  51. void expand(QTreeView *view);
  52. public:
  53. virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
  54. virtual QModelIndex parent(const QModelIndex &child) const;
  55. virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
  56. virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;
  57. virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
  58. protected:
  59. Fb2TreeItem * item(const QModelIndex &index) const;
  60. private:
  61. QWebView & m_view;
  62. Fb2TreeItem * m_root;
  63. };
  64. #endif // FB2TREE_H