Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/lintest/fb2edit.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKandrashin Denis <mail@lintest.ru>2012-10-21 00:30:14 +0400
committerKandrashin Denis <mail@lintest.ru>2012-10-21 00:30:14 +0400
commitb08d59484a4a32657d8c5d6264b3bc4a53a6c8f4 (patch)
treeb9853e29a3bbe2a2007e226f83597ab972a23986
parent14d5c3d1cd72c1a7143305ae637425b589cc7399 (diff)
Save tag <stylesheet> by lines
-rw-r--r--source/fb2save.cpp23
-rw-r--r--source/fb2save.hpp12
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: