1
0
Эх сурвалжийг харах

Fix pType elements: <subtitle> and <text-author>

Kandrashin Denis 12 жил өмнө
parent
commit
397346510e

+ 11 - 5
source/fb2read.cpp

@@ -177,6 +177,8 @@ FB2_BEGIN_KEYHASH(FbReadHandler::TextHandler)
     FB2_KEY( Origin  , "tr"            );
     FB2_KEY( Origin  , "tr"            );
 
 
     FB2_KEY( Parag   , "empty-line"    );
     FB2_KEY( Parag   , "empty-line"    );
+    FB2_KEY( Parag   , "text-author"   );
+    FB2_KEY( Parag   , "subtitle"      );
     FB2_KEY( Parag   , "p"             );
     FB2_KEY( Parag   , "p"             );
     FB2_KEY( Parag   , "v"             );
     FB2_KEY( Parag   , "v"             );
 
 
@@ -221,9 +223,8 @@ void FbReadHandler::TextHandler::Init(const QString &name, const QXmlAttributes
         }
         }
         writer().writeAttribute(name, atts.value(i));
         writer().writeAttribute(name, atts.value(i));
     }
     }
-    if (name == "empty-line") {
-        writer().writeEmptyElement("br");
-        m_empty = false;
+    if (m_tag == "p" && (name == "text-author" || name == "subtitle")) {
+        writer().writeAttribute("fb:class", name);
     }
     }
 }
 }
 
 
@@ -256,8 +257,13 @@ void FbReadHandler::TextHandler::TxtTag(const QString &text)
 
 
 void FbReadHandler::TextHandler::EndTag(const QString &name)
 void FbReadHandler::TextHandler::EndTag(const QString &name)
 {
 {
-    Q_UNUSED(name);
-    if (m_empty) writer().writeCharacters(" ");
+    if (m_empty) {
+        if (name == "p") {
+            writer().writeEmptyElement("br");
+        } else {
+            writer().writeCharacters(" ");
+        }
+    }
     writer().writeEndElement();
     writer().writeEndElement();
 }
 }
 
 

+ 14 - 3
source/fb2save.cpp

@@ -427,7 +427,13 @@ FbSaveHandler::ParagHandler::ParagHandler(TextHandler *parent, const QString &na
 {
 {
     int count = atts.count();
     int count = atts.count();
     for (int i = 0; i < count; i++) {
     for (int i = 0; i < count; i++) {
-        m_atts.append(atts.qName(i), atts.uri(i), atts.localName(i), atts.value(i));
+        QString qName = atts.qName(i);
+        QString value = atts.value(i);
+        if (qName == "fb:class") {
+            m_class = value;
+        } else {
+            m_atts.append(qName, "", "", value);
+        }
     }
     }
 }
 }
 
 
@@ -456,7 +462,12 @@ void FbSaveHandler::ParagHandler::EndTag(const QString &name)
 void FbSaveHandler::ParagHandler::start()
 void FbSaveHandler::ParagHandler::start()
 {
 {
     if (!m_empty) return;
     if (!m_empty) return;
-    QString tag = m_parent == "stanza" ? "v" : "p";
+    QString tag = "p";
+    if (m_class.isEmpty()) {
+        if (m_parent == "stanza") tag = "v";
+    } else {
+        tag = m_class;
+    }
     m_writer.writeStartElement(tag, m_level);
     m_writer.writeStartElement(tag, m_level);
     writeAtts(m_atts);
     writeAtts(m_atts);
     m_empty = false;
     m_empty = false;
@@ -490,7 +501,7 @@ void FbSaveHandler::setDocumentInfo(QWebFrame * frame)
 {
 {
     QString info1 = qApp->applicationName() += QString(" ") += qApp->applicationVersion();
     QString info1 = qApp->applicationName() += QString(" ") += qApp->applicationVersion();
     QDateTime now = QDateTime::currentDateTime();
     QDateTime now = QDateTime::currentDateTime();
-    QString info2 = now.toString("dd MMMM yyyy");
+    QString info2 = now.toString("dd MMM yyyy");
     QString value = now.toString("yyyy-MM-dd hh:mm:ss");
     QString value = now.toString("yyyy-MM-dd hh:mm:ss");
 
 
     FbTextElement parent = frame->documentElement().findFirst("body");
     FbTextElement parent = frame->documentElement().findFirst("body");

+ 1 - 0
source/fb2save.hpp

@@ -167,6 +167,7 @@ private:
     private:
     private:
         const QString m_parent;
         const QString m_parent;
         QXmlAttributes m_atts;
         QXmlAttributes m_atts;
+        QString m_class;
         bool m_empty;
         bool m_empty;
     };
     };
 
 

+ 15 - 10
source/res/style.css

@@ -39,16 +39,6 @@ fb\:section fb\:title {
   font-size: 100%;
   font-size: 100%;
 }
 }
 
 
-fb\:subtitle {
-  display: block;
-  color: white;
-  background: #d8a903;
-  text-align: center;
-  font-family: sans-serif;
-  margin-left: 2%;
-  margin-right: 2%;
-}
-
 fb\:epigraph {
 fb\:epigraph {
   display: block;
   display: block;
   border-left: 2 dotted purple;
   border-left: 2 dotted purple;
@@ -86,6 +76,21 @@ fb\:poem p {
   margin-bottom: 0;
   margin-bottom: 0;
 }
 }
 
 
+p[fb\:class=subtitle] {
+  color: white;
+  background: #d8a903;
+  text-align: center;
+  font-family: sans-serif;
+  margin-left: 2%;
+  margin-right: 2%;
+}
+
+p[fb\:class=text-author] {
+  color: blue;
+  text-align: right;
+  margin-left: 40%;
+}
+
 fb\:body[name=notes] {
 fb\:body[name=notes] {
   border-top: none;
   border-top: none;
   border-bottom: none;
   border-bottom: none;