diff options
author | Kandrashin Denis <mail@lintest.ru> | 2012-10-21 00:30:14 +0400 |
---|---|---|
committer | Kandrashin Denis <mail@lintest.ru> | 2012-10-21 00:30:14 +0400 |
commit | b08d59484a4a32657d8c5d6264b3bc4a53a6c8f4 (patch) | |
tree | b9853e29a3bbe2a2007e226f83597ab972a23986 | |
parent | 14d5c3d1cd72c1a7143305ae637425b589cc7399 (diff) |
Save tag <stylesheet> by lines
-rw-r--r-- | source/fb2save.cpp | 23 | ||||
-rw-r--r-- | source/fb2save.hpp | 12 |
2 files changed, 26 insertions, 9 deletions
diff --git a/source/fb2save.cpp b/source/fb2save.cpp index 93214f1..5e5f870 100644 --- a/source/fb2save.cpp +++ b/source/fb2save.cpp @@ -137,6 +137,9 @@ FbSaveWriter::FbSaveWriter(FbTextEdit &view, QByteArray *array) : QXmlStreamWriter(array) , m_view(view) { + if (QWebFrame * frame = m_view.page()->mainFrame()) { + m_style = frame->findFirstElement("html>head>style").toPlainText(); + } } FbSaveWriter::FbSaveWriter(FbTextEdit &view, QIODevice *device) @@ -210,6 +213,25 @@ QString FbSaveWriter::getFileName(const QString &path) } } +void FbSaveWriter::writeStyle() +{ + if (m_style.isEmpty()) return; + + const QString postfix = "\n "; + writeStartElement("stylesheet", 2); + writeAttribute("type", "text/css"); + writeCharacters(postfix); + + QStringList list = m_style.split("}", QString::SkipEmptyParts); + foreach (const QString &str, list) { + QString line = str.simplified(); + if (line.isEmpty()) continue; + writeCharacters(" " + line + "}" + postfix); + } + + QXmlStreamWriter::writeEndElement(); +} + void FbSaveWriter::writeFiles() { QStringListIterator it(m_names); @@ -363,6 +385,7 @@ FbSaveHandler::BodyHandler::BodyHandler(FbSaveWriter &writer, const QString &nam { m_writer.writeAttribute("xmlns", "http://www.gribuser.ru/xml/fictionbook/2.0"); m_writer.writeAttribute("xmlns:l", "http://www.w3.org/1999/xlink"); + m_writer.writeStyle(); } void FbSaveHandler::BodyHandler::EndTag(const QString &name) diff --git a/source/fb2save.hpp b/source/fb2save.hpp index fc58b3f..eafa763 100644 --- a/source/fb2save.hpp +++ b/source/fb2save.hpp @@ -76,12 +76,14 @@ public: void writeComment(const QString &ch); void writeLineEnd(); void writeFiles(); + void writeStyle(); private: QByteArray downloadFile(const QUrl &url); void writeContentType(const QString &name, QByteArray &data); private: FbTextEdit &m_view; QStringList m_names; + QString m_style; }; class FbSaveHandler : public FbHtmlHandler @@ -94,7 +96,7 @@ public: private: class TextHandler : public NodeHandler { - FB2_BEGIN_KEYLIST + FB2_BEGIN_KEYLIST Origin, Anchor, Table, @@ -137,14 +139,6 @@ private: FbSaveWriter &m_writer; }; - class HeadHandler : public TextHandler - { - public: - explicit HeadHandler(FbSaveWriter &writer, const QString &name, const QXmlAttributes &atts); - protected: - virtual void EndTag(const QString &name); - }; - class BodyHandler : public TextHandler { public: |