瀏覽代碼

Create ID for <description> element

Kandrashin Denis 13 年之前
父節點
當前提交
365d8491fa
共有 4 個文件被更改,包括 23 次插入10 次删除
  1. 12 0
      source/fb2read.cpp
  2. 2 2
      source/fb2read.h
  3. 9 7
      source/fb2tree.cpp
  4. 0 1
      source/fb2tree.h

+ 12 - 0
source/fb2read.cpp

@@ -232,6 +232,12 @@ FB2_BEGIN_KEYHASH(DescrHandler)
     insert( "custom-info"   , Custom   );
 FB2_END_KEYHASH
 
+Fb2Handler::DescrHandler::DescrHandler(Fb2HtmlWriter &writer, const QString &name)
+    : HeadHandler(writer, name)
+{
+    m_writer.writeAttribute("id", m_writer.newId());
+}
+
 Fb2Handler::BaseHandler * Fb2Handler::DescrHandler::NewTag(const QString &name, const QXmlAttributes &attributes)
 {
     Q_UNUSED(attributes);
@@ -251,6 +257,12 @@ Fb2Handler::BaseHandler * Fb2Handler::DescrHandler::NewTag(const QString &name,
 //  Fb2Handler::TitleHandler
 //---------------------------------------------------------------------------
 
+Fb2Handler::TitleHandler::TitleHandler(Fb2HtmlWriter &writer, const QString &name)
+    : HeadHandler(writer, name)
+{
+    m_writer.writeAttribute("id", m_writer.newId());
+}
+
 Fb2Handler::BaseHandler * Fb2Handler::TitleHandler::NewTag(const QString &name, const QXmlAttributes &attributes)
 {
     if (name == "annotation") return new BodyHandler(m_writer, name, attributes, "div", name);

+ 2 - 2
source/fb2read.h

@@ -130,7 +130,7 @@ private:
             Custom,
         FB2_END_KEYLIST
     public:
-        explicit DescrHandler(Fb2HtmlWriter &writer, const QString &name) : HeadHandler(writer, name) {}
+        explicit DescrHandler(Fb2HtmlWriter &writer, const QString &name);
     protected:
         virtual BaseHandler * NewTag(const QString &name, const QXmlAttributes &attributes);
     };
@@ -138,7 +138,7 @@ private:
     class TitleHandler : public HeadHandler
     {
     public:
-        explicit TitleHandler(Fb2HtmlWriter &writer, const QString &name) : HeadHandler(writer, name) {}
+        explicit TitleHandler(Fb2HtmlWriter &writer, const QString &name);
     protected:
         virtual BaseHandler * NewTag(const QString &name, const QXmlAttributes &attributes);
     };

+ 9 - 7
source/fb2tree.cpp

@@ -9,16 +9,17 @@
 Fb2TreeItem::Fb2TreeItem(QWebElement &element, Fb2TreeItem *parent)
     : QObject(parent)
     , m_parent(parent)
-    , m_element(element)
 {
     m_name = element.tagName().toLower();
     QString style = element.attribute("class").toLower();
     if (!style.isEmpty()) m_name = style;
-    if (style == "title") {
-        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);
+    if (m_name == "div") {
+        if (style == "title") {
+            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");
     }
@@ -39,7 +40,8 @@ void Fb2TreeItem::addChildren(QWebElement &parent)
     while (!child.isNull()) {
         QString tag = child.tagName().toLower();
         if (tag == "div") {
-            m_list << new Fb2TreeItem(child, this);
+            QString style = child.attribute("style");
+            if (style != "display:none") m_list << new Fb2TreeItem(child, this);
         } else if (tag == "img") {
             m_list << new Fb2TreeItem(child, this);
         } else {

+ 0 - 1
source/fb2tree.h

@@ -52,7 +52,6 @@ private:
     QString m_name;
     QString m_text;
     Fb2TreeItem * m_parent;
-    QWebElement m_element;
     QString m_id;
 };