Browse Source

Modify class: Fb2Handler::BaseHandler

Kandrashin Denis 13 năm trước cách đây
mục cha
commit
40fd95bcad
3 tập tin đã thay đổi với 37 bổ sung27 xóa
  1. 12 14
      source/fb2read.cpp
  2. 8 11
      source/fb2read.h
  3. 17 2
      source/res/style.css

+ 12 - 14
source/fb2read.cpp

@@ -130,7 +130,7 @@ bool Fb2Handler::BaseHandler::doStart(const QString &name, const QXmlAttributes
     if (m_handler) return m_handler->doStart(name, attributes);
     m_handler = NewTag(name, attributes); if (m_handler) return true;
 //    qCritical() << QObject::tr("Unknown XML child tag: <%1> <%2>").arg(m_name).arg(name);
-    m_handler = new BaseHandler(name);
+    m_handler = new BaseHandler(m_writer, name);
     return true;
 }
 
@@ -168,8 +168,7 @@ FB2_BEGIN_KEYHASH(RootHandler)
 FB2_END_KEYHASH
 
 Fb2Handler::RootHandler::RootHandler(Fb2HtmlWriter &writer, const QString &name)
-    : BaseHandler(name)
-    , m_writer(writer)
+    : BaseHandler(writer, name)
 {
     m_writer.writeStartElement("html");
     m_writer.writeStartElement("body");
@@ -197,8 +196,10 @@ void Fb2Handler::RootHandler::EndTag(const QString &name)
 //---------------------------------------------------------------------------
 
 FB2_BEGIN_KEYHASH(DescrHandler)
-    insert( "title-info"   , Title   );
-    insert( "publish-info" , Publish );
+    insert( "title-info"    , Title    );
+    insert( "document-info" , Document );
+    insert( "publish-info"  , Publish  );
+    insert( "custom-info"   , Custom   );
 FB2_END_KEYHASH
 
 Fb2Handler::BaseHandler * Fb2Handler::DescrHandler::NewTag(const QString &name, const QXmlAttributes &attributes)
@@ -206,7 +207,7 @@ Fb2Handler::BaseHandler * Fb2Handler::DescrHandler::NewTag(const QString &name,
     Q_UNUSED(attributes);
     switch (toKeyword(name)) {
         case Title   : return new HeaderHandler(m_writer, name);
-        case Publish : return new BaseHandler(name);
+        case Publish : return new BaseHandler(m_writer, name);
         default: return NULL;
     }
 }
@@ -229,8 +230,8 @@ Fb2Handler::BaseHandler * Fb2Handler::HeaderHandler::NewTag(const QString &name,
 {
     Q_UNUSED(attributes);
     switch (toKeyword(name)) {
-        case Title   : return new BaseHandler(name);
-        case Annot   : return new BaseHandler(name);
+        case Title   : return new BaseHandler(m_writer, name);
+        case Annot   : return new BaseHandler(m_writer, name);
         default: return NULL;
     }
 }
@@ -269,8 +270,7 @@ FB2_BEGIN_KEYHASH(BodyHandler)
 FB2_END_KEYHASH
 
 Fb2Handler::BodyHandler::BodyHandler(Fb2HtmlWriter &writer, const QString &name, const QXmlAttributes &attributes, const QString &tag, const QString &style)
-    : BaseHandler(name)
-    , m_writer(writer)
+    : BaseHandler(writer, name)
     , m_parent(NULL)
     , m_tag(tag)
     , m_style(style)
@@ -279,8 +279,7 @@ Fb2Handler::BodyHandler::BodyHandler(Fb2HtmlWriter &writer, const QString &name,
 }
 
 Fb2Handler::BodyHandler::BodyHandler(BodyHandler *parent, const QString &name, const QXmlAttributes &attributes, const QString &tag, const QString &style)
-    : BaseHandler(name)
-    , m_writer(parent->m_writer)
+    : BaseHandler(parent->m_writer, name)
     , m_parent(parent)
     , m_tag(tag)
     , m_style(style)
@@ -371,8 +370,7 @@ Fb2Handler::ImageHandler::ImageHandler(BodyHandler *parent, const QString &name,
 //---------------------------------------------------------------------------
 
 Fb2Handler::BinaryHandler::BinaryHandler(Fb2HtmlWriter &writer, const QString &name, const QXmlAttributes &attributes)
-    : BaseHandler(name)
-    , m_writer(writer)
+    : BaseHandler(writer, name)
     , m_file(Value(attributes, "id"))
 {
 }

+ 8 - 11
source/fb2read.h

@@ -73,7 +73,8 @@ private:
     class BaseHandler
     {
     public:
-        explicit BaseHandler(const QString &name) : m_name(name), m_handler(NULL), m_closed(false) {}
+        explicit BaseHandler(Fb2HtmlWriter &writer, const QString &name)
+            : m_writer(writer), m_name(name), m_handler(0), m_closed(false) {}
         virtual ~BaseHandler();
         bool doStart(const QString &name, const QXmlAttributes &attributes);
         bool doText(const QString &text);
@@ -87,6 +88,8 @@ private:
             { Q_UNUSED(name); }
         const QString & Name() const
             { return m_name; }
+    protected:
+        Fb2HtmlWriter &m_writer;
     private:
         const QString m_name;
         BaseHandler * m_handler;
@@ -106,22 +109,20 @@ private:
     protected:
         virtual BaseHandler * NewTag(const QString & name, const QXmlAttributes &attributes);
         virtual void EndTag(const QString &name);
-    private:
-        Fb2HtmlWriter &m_writer;
     };
 
     class DescrHandler : public BaseHandler
     {
         FB2_BEGIN_KEYLIST
             Title,
+            Document,
             Publish,
+            Custom,
         FB2_END_KEYLIST
     public:
-        explicit DescrHandler(Fb2HtmlWriter &writer, const QString &name) : BaseHandler(name), m_writer(writer) {}
+        explicit DescrHandler(Fb2HtmlWriter &writer, const QString &name) : BaseHandler(writer, name) {}
     protected:
         virtual BaseHandler * NewTag(const QString &name, const QXmlAttributes &attributes);
-    protected:
-        Fb2HtmlWriter &m_writer;
     };
 
     class HeaderHandler : public BaseHandler
@@ -136,11 +137,9 @@ private:
             Cover,
         FB2_END_KEYLIST
     public:
-        explicit HeaderHandler(Fb2HtmlWriter &writer, const QString &name) : BaseHandler(name), m_writer(writer) {}
+        explicit HeaderHandler(Fb2HtmlWriter &writer, const QString &name) : BaseHandler(writer, name) {}
     protected:
         virtual BaseHandler * NewTag(const QString &name, const QXmlAttributes &attributes);
-    protected:
-        Fb2HtmlWriter &m_writer;
     };
 
     class BodyHandler : public BaseHandler
@@ -170,7 +169,6 @@ private:
         void Init(const QXmlAttributes &attributes);
         bool isNotes() const;
     protected:
-        Fb2HtmlWriter &m_writer;
         BodyHandler *m_parent;
         QString m_tag;
         QString m_style;
@@ -196,7 +194,6 @@ private:
         virtual void TxtTag(const QString &text);
         virtual void EndTag(const QString &name);
     private:
-        Fb2HtmlWriter &m_writer;
         QString m_file;
         QString m_text;
     };

+ 17 - 2
source/res/style.css

@@ -2,11 +2,20 @@ body {
   font-family: serif;
 }
 
-div.description {
+div.description div {
   display: none;
 }
 
-div.annotation {
+div.description div.title-info {
+  display: block;
+}
+
+div.description div.title-info . {
+  display: none;
+}
+
+div.description div.title-info div.annotation {
+  display: block;
   padding-left: 10;
   padding-right: 10;
   border-width: thin;
@@ -45,6 +54,12 @@ div.subtitle {
   margin-right: 5%;
 }
 
+div.epigraph {
+  border-left: 2 dotted purple;
+  margin-left: 10%;
+  padding-left: 4;
+}
+
 div.cite {
   border-left: 2 dotted teal;
   margin-left: 5%;