Browse Source

Save FB2 style span

Kandrashin Denis 13 years ago
parent
commit
fd661b31e4
4 changed files with 38 additions and 0 deletions
  1. 14 0
      source/fb2read.cpp
  2. 6 0
      source/fb2read.hpp
  3. 11 0
      source/fb2save.cpp
  4. 7 0
      source/fb2save.hpp

+ 14 - 0
source/fb2read.cpp

@@ -296,6 +296,7 @@ Fb2XmlHandler::NodeHandler * Fb2ReadHandler::TextHandler::NewTag(const QString &
 {
     QString tag, style;
     switch (toKeyword(name)) {
+        case Style     : return new SpanHandler(this, name, atts);
         case Anchor    : return new AnchorHandler(this, name, atts);
         case Image     : return new ImageHandler(m_owner, name, atts);
         case Section   : tag = "div"; style = name; break;
@@ -330,6 +331,19 @@ bool Fb2ReadHandler::TextHandler::isNotes() const
     return m_parent ? m_parent->isNotes() : false;
 }
 
+//---------------------------------------------------------------------------
+//  Fb2ReadHandler::SpanHandler
+//---------------------------------------------------------------------------
+
+Fb2ReadHandler::SpanHandler::SpanHandler(TextHandler *parent, const QString &name, const QXmlAttributes &atts)
+    : TextHandler(parent, name, atts, "span")
+{
+    int count = atts.count();
+    for (int i = 0; i < count; i++) {
+        writer().writeAttribute("fb2:" + atts.qName(i), atts.value(i));
+    }
+}
+
 //---------------------------------------------------------------------------
 //  Fb2ReadHandler::AnchorHandler
 //---------------------------------------------------------------------------

+ 6 - 0
source/fb2read.hpp

@@ -154,6 +154,12 @@ private:
         QString m_style;
     };
 
+    class SpanHandler : public TextHandler
+    {
+    public:
+        explicit SpanHandler(TextHandler *parent, const QString &name, const QXmlAttributes &atts);
+    };
+
     class AnchorHandler : public TextHandler
     {
     public:

+ 11 - 0
source/fb2save.cpp

@@ -247,6 +247,7 @@ FB2_BEGIN_KEYHASH(Fb2SaveHandler::TextHandler)
     FB2_KEY( Parag   , "p"      );
     FB2_KEY( Strong  , "b"      );
     FB2_KEY( Emphas  , "i"      );
+    FB2_KEY( Span    , "span"   );
     FB2_KEY( Strike  , "strike" );
     FB2_KEY( Sub     , "sub"    );
     FB2_KEY( Sup     , "sup"    );
@@ -299,6 +300,7 @@ Fb2XmlHandler::NodeHandler * Fb2SaveHandler::TextHandler::NewTag(const QString &
         case Anchor    : return new AnchorHandler(this, name, atts);
         case Image     : return new ImageHandler(this, name, atts);
         case Parag     : return new ParagHandler(this, name, atts);
+        case Span      : return new SpanHandler(this, name, atts);
         case Strong    : tag = "strong"        ; break;
         case Emphas    : tag = "emphasis"      ; break;
         case Strike    : tag = "strikethrough" ; break;
@@ -359,6 +361,15 @@ void Fb2SaveHandler::BodyHandler::EndTag(const QString &name)
     TextHandler::EndTag(name);
 }
 
+//---------------------------------------------------------------------------
+//  Fb2SaveHandler::SpanHandler
+//---------------------------------------------------------------------------
+
+Fb2SaveHandler::SpanHandler::SpanHandler(TextHandler *parent, const QString &name, const QXmlAttributes &atts)
+    : TextHandler(parent, name, atts, "style")
+{
+}
+
 //---------------------------------------------------------------------------
 //  Fb2SaveHandler::AnchorHandler
 //---------------------------------------------------------------------------

+ 7 - 0
source/fb2save.hpp

@@ -98,6 +98,7 @@ private:
             Anchor,
             Table,
             Image,
+            Span,
             Parag,
             Strong,
             Emphas,
@@ -143,6 +144,12 @@ private:
         virtual void EndTag(const QString &name);
     };
 
+    class SpanHandler : public TextHandler
+    {
+    public:
+        explicit SpanHandler(TextHandler *parent, const QString &name, const QXmlAttributes &atts);
+    };
+
     class AnchorHandler : public TextHandler
     {
     public: