Enhance FictionBook support: book annotation, text-author for the cite, section subtitles

BUG: 340134
remotes/origin/work/aacid/okular_focus_actions
Yuri Chornoivan 5 years ago committed by Albert Astals Cid
parent 3f923aa7b5
commit 272b386f58
  1. 49
      generators/fictionbook/converter.cpp
  2. 1
      generators/fictionbook/converter.h

@ -34,6 +34,7 @@ public:
QStringList mGenres;
QString mAuthor;
QString mTitle;
QString mAnnotation;
QStringList mKeywords;
QDate mDate;
QDomElement mCoverPage;
@ -163,6 +164,19 @@ QTextDocument *Converter::convert(const QString &fileName)
mCursor->insertBlock();
}
if (mTitleInfo && !mTitleInfo->mAnnotation.isEmpty()) {
frameFormat.setBorder(0);
mCursor->insertFrame(frameFormat);
QTextCharFormat charFormat;
charFormat.setFontPointSize(10);
charFormat.setFontItalic(true);
mCursor->insertText(mTitleInfo->mAnnotation, charFormat);
mCursor->setPosition(topFrame->lastPosition());
mCursor->insertBlock();
}
mCursor->insertBlock();
if (!convertBody(element)) {
@ -287,6 +301,9 @@ bool Converter::convertTitleInfo(const QDomElement &element)
return false;
mTitleInfo->mKeywords = keywords.split(QLatin1Char(' '), QString::SkipEmptyParts);
} else if (child.tagName() == QLatin1String("annotation")) {
if (!convertAnnotation(child, mTitleInfo->mAnnotation))
return false;
} else if (child.tagName() == QLatin1String("date")) {
if (!convertDate(child, mTitleInfo->mDate))
return false;
@ -384,6 +401,20 @@ bool Converter::convertDate(const QDomElement &element, QDate &date)
return true;
}
bool Converter::convertAnnotation(const QDomElement &element, QString &data)
{
QDomElement child = element.firstChildElement();
while (!child.isNull()) {
QString text = child.text();
if (!text.isNull())
data = child.text();
child = child.nextSiblingElement();
}
return true;
}
bool Converter::convertSection(const QDomElement &element)
{
if (element.hasAttribute(QStringLiteral("id")))
@ -657,6 +688,12 @@ bool Converter::convertEpigraph(const QDomElement &element)
} else if (child.tagName() == QLatin1String("empty-line")) {
if (!convertEmptyLine(child))
return false;
} else if (child.tagName() == QLatin1String("text-author")) {
QTextBlockFormat format;
format.setTextIndent(10);
mCursor->insertBlock(format);
if (!convertParagraph(child))
return false;
}
child = child.nextSiblingElement();
@ -681,6 +718,12 @@ bool Converter::convertPoem(const QDomElement &element)
} else if (child.tagName() == QLatin1String("stanza")) {
if (!convertStanza(child))
return false;
} else if (child.tagName() == QLatin1String("text-author")) {
QTextBlockFormat format;
format.setTextIndent(10);
mCursor->insertBlock(format);
if (!convertParagraph(child))
return false;
}
child = child.nextSiblingElement();
@ -723,6 +766,12 @@ bool Converter::convertCite(const QDomElement &element)
} else if (child.tagName() == QLatin1String("poem")) {
if (!convertParagraph(child))
return false;
} else if (child.tagName() == QLatin1String("text-author")) {
QTextBlockFormat format;
format.setTextIndent(10);
mCursor->insertBlock(format);
if (!convertParagraph(child))
return false;
} else if (child.tagName() == QLatin1String("empty-line")) {
if (!convertEmptyLine(child))
return false;

@ -63,6 +63,7 @@ private:
bool convertAuthor(const QDomElement &element, QString &firstName, QString &middleName, QString &lastName, QString &email, QString &nickname);
bool convertDate(const QDomElement &element, QDate &date);
bool convertTextNode(const QDomElement &element, QString &data);
bool convertAnnotation(const QDomElement &element, QString &data);
QTextDocument *mTextDocument;
QTextCursor *mCursor;

Loading…
Cancel
Save