Selaa lähdekoodia

Optimize class Fb2SaveHandler

Kandrashin Denis 13 vuotta sitten
vanhempi
commit
36c0a31845
2 muutettua tiedostoa jossa 29 lisäystä ja 7 poistoa
  1. 20 7
      source/fb2save.cpp
  2. 9 0
      source/fb2save.h

+ 20 - 7
source/fb2save.cpp

@@ -22,6 +22,11 @@ Fb2SaveWriter::~Fb2SaveWriter()
     writeEndDocument();
     writeEndDocument();
 }
 }
 
 
+QString Fb2SaveWriter::getFile(const QString &path)
+{
+    return QString();
+}
+
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 //  Fb2SaveHandler::BodyHandler
 //  Fb2SaveHandler::BodyHandler
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
@@ -101,6 +106,17 @@ void Fb2SaveHandler::BodyHandler::EndTag(const QString &name)
     m_writer.writeEndElement();
     m_writer.writeEndElement();
 }
 }
 
 
+//---------------------------------------------------------------------------
+//  Fb2SaveHandler::RootHandler
+//---------------------------------------------------------------------------
+
+Fb2SaveHandler::RootHandler::RootHandler(Fb2SaveWriter &writer, const QString &name, const QXmlAttributes &atts)
+    : BodyHandler(writer, name, atts, "FictionBook")
+{
+    m_writer.writeAttribute("xmlns", "http://www.gribuser.ru/xml/fictionbook/2.0");
+    m_writer.writeAttribute("xmlns:l", "http://www.w3.org/1999/xlink");
+}
+
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 //  Fb2SaveHandler::AnchorHandler
 //  Fb2SaveHandler::AnchorHandler
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
@@ -109,7 +125,7 @@ Fb2SaveHandler::AnchorHandler::AnchorHandler(BodyHandler *parent, const QString
     : BodyHandler(parent, name, atts, "a")
     : BodyHandler(parent, name, atts, "a")
 {
 {
     QString href = Value(atts, "href");
     QString href = Value(atts, "href");
-    m_writer.writeAttribute("href", href);
+    m_writer.writeAttribute("l:href", href);
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
@@ -119,13 +135,10 @@ Fb2SaveHandler::AnchorHandler::AnchorHandler(BodyHandler *parent, const QString
 Fb2SaveHandler::ImageHandler::ImageHandler(BodyHandler *parent, const QString &name, const QXmlAttributes &atts)
 Fb2SaveHandler::ImageHandler::ImageHandler(BodyHandler *parent, const QString &name, const QXmlAttributes &atts)
     : BodyHandler(parent, name, atts, "image")
     : BodyHandler(parent, name, atts, "image")
 {
 {
-/*
     QString href = Value(atts, "href");
     QString href = Value(atts, "href");
-    while (href.left(1) == "#") href.remove(0, 1);
     QString path = m_writer.getFile(href);
     QString path = m_writer.getFile(href);
-    m_writer.writeAttribute("src", path);
-    m_writer.writeAttribute("alt", href);
-*/
+    m_writer.writeAttribute("l:href", path);
+    m_writer.writeEndElement();
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
@@ -181,7 +194,7 @@ Fb2SaveHandler::Fb2SaveHandler(Fb2WebView &view, QIODevice &device)
 
 
 Fb2XmlHandler::NodeHandler * Fb2SaveHandler::CreateRoot(const QString &name, const QXmlAttributes &atts)
 Fb2XmlHandler::NodeHandler * Fb2SaveHandler::CreateRoot(const QString &name, const QXmlAttributes &atts)
 {
 {
-    if (name == "body") return new BodyHandler(m_writer, name, atts, "fictionbook");
+    if (name == "body") return new RootHandler(m_writer, name, atts);
     m_error = QObject::tr("The tag <body> was not found.");
     m_error = QObject::tr("The tag <body> was not found.");
     return 0;
     return 0;
 }
 }

+ 9 - 0
source/fb2save.h

@@ -16,6 +16,7 @@ class Fb2SaveWriter : public QXmlStreamWriter
 public:
 public:
     explicit Fb2SaveWriter(Fb2WebView &view, QIODevice &device);
     explicit Fb2SaveWriter(Fb2WebView &view, QIODevice &device);
     virtual ~Fb2SaveWriter();
     virtual ~Fb2SaveWriter();
+    QString getFile(const QString &path);
 private:
 private:
     Fb2WebView &m_view;
     Fb2WebView &m_view;
 };
 };
@@ -57,6 +58,12 @@ private:
         QString m_style;
         QString m_style;
     };
     };
 
 
+    class RootHandler : public BodyHandler
+    {
+    public:
+        explicit RootHandler(Fb2SaveWriter &writer, const QString &name, const QXmlAttributes &atts);
+    };
+
     class AnchorHandler : public BodyHandler
     class AnchorHandler : public BodyHandler
     {
     {
     public:
     public:
@@ -67,6 +74,8 @@ private:
     {
     {
     public:
     public:
         explicit ImageHandler(BodyHandler *parent, const QString &name, const QXmlAttributes &atts);
         explicit ImageHandler(BodyHandler *parent, const QString &name, const QXmlAttributes &atts);
+    protected:
+        virtual void EndTag(const QString &name) { Q_UNUSED(name); }
     };
     };
 
 
     class ParagHandler : public BodyHandler
     class ParagHandler : public BodyHandler