Ver código fonte

Tree view with images in <p> elements

Kandrashin Denis 13 anos atrás
pai
commit
3ceab0d3ed
2 arquivos alterados com 24 adições e 8 exclusões
  1. 21 8
      source/fb2tree.cpp
  2. 3 0
      source/fb2tree.h

+ 21 - 8
source/fb2tree.cpp

@@ -15,18 +15,15 @@ Fb2TreeItem::Fb2TreeItem(QWebElement &element, Fb2TreeItem *parent)
     QString style = element.attribute("class").toLower();
     if (!style.isEmpty()) m_name = style;
     if (style == "title") {
-        QString text = element.toPlainText().simplified().left(255);
-        if (m_parent) m_parent->m_text = text; else m_text = text;
+        m_text = element.toPlainText().simplified().left(255);
+        if (m_parent) m_parent->m_text += m_text += " ";
+    } else if (style == "subtitle") {
+        m_text = element.toPlainText().simplified().left(255);
     } else if (m_name == "img") {
         m_text = element.attribute("alt");
     }
     m_id = element.attribute("id");
-    QWebElement child = element.firstChild();
-    while (!child.isNull()) {
-        QString tag = child.tagName().toLower();
-        if (tag != "p") m_list << new Fb2TreeItem(child, this);
-        child = child.nextSibling();
-    }
+    addChildren(element);
 }
 
 Fb2TreeItem::~Fb2TreeItem()
@@ -36,6 +33,22 @@ Fb2TreeItem::~Fb2TreeItem()
     }
 }
 
+void Fb2TreeItem::addChildren(QWebElement &parent)
+{
+    QWebElement child = parent.firstChild();
+    while (!child.isNull()) {
+        QString tag = child.tagName().toLower();
+        if (tag == "div") {
+            m_list << new Fb2TreeItem(child, this);
+        } else if (tag == "img") {
+            m_list << new Fb2TreeItem(child, this);
+        } else {
+            addChildren(child);
+        }
+        child = child.nextSibling();
+    }
+}
+
 Fb2TreeItem * Fb2TreeItem::item(const QModelIndex &index) const
 {
     int row = index.row();

+ 3 - 0
source/fb2tree.h

@@ -40,6 +40,9 @@ public:
         return m_id;
     }
 
+private:
+    void addChildren(QWebElement &parent);
+
 private:
     QList<Fb2TreeItem*> m_list;
     QString m_name;