[PATCH 1/3] qthelper.cpp: support line breaks for notes when printing

Lubomir I. Ivanov neolit123 at gmail.com
Sun Nov 15 13:01:17 PST 2015


From: "Lubomir I. Ivanov" <neolit123 at gmail.com>

The Dive::put_notes() does not handle HTML formatting or line
breaks properly. Apparently Grantlee supports HTML variables, but
the planned notes (which are HTML) look very bad when inserted in the
Grantlee template - e.g. the text is huge and the table box is cut
for some odd reason. I don't have a good solution for these issues
ATM; especially for the "table cell being cut part".

An important feature in the dive notes is to support line breaks.
This patch adds support for line breaks both in planned dive notes
and non-planned dive notes via the <br> tag. This makes the
planned dive notes look tolerable.

The next step would be to support the <br> tag, which has
to happen in the bundled templates them self.

Signed-off-by: Lubomir I. Ivanov <neolit123 at gmail.com>
---

Gehad did not add support for HTML text in the dive notes
and i couldn't find information about it.

apparently you need to do:
{{ some_grantlee_var|safe }} (note the 'safe' part)
to tell Grantlee that this variable is HTML escaped already.

The next patch in these series will add support for that
in the templates!
---
 subsurface-core/qthelper.cpp | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/subsurface-core/qthelper.cpp b/subsurface-core/qthelper.cpp
index 091e714..5b499b0 100644
--- a/subsurface-core/qthelper.cpp
+++ b/subsurface-core/qthelper.cpp
@@ -214,15 +214,25 @@ void Dive::put_temp()
 
 void Dive::put_notes()
 {
+	m_notes = QString::fromUtf8(dive->notes);
+	if (m_notes.isEmpty()) {
+		m_notes = "--";
+		return;
+	}
 	if (same_string(dive->dc.model, "planned dive")) {
 		QTextDocument notes;
-		notes.setHtml(QString::fromUtf8(dive->notes));
+		QString notesFormatted = m_notes;
+#define _NOTES_BR "&#92n"
+		notesFormatted = notesFormatted.replace("<thead>", "<thead>"_NOTES_BR);
+		notesFormatted = notesFormatted.replace("<br>", "<br>"_NOTES_BR);
+		notesFormatted = notesFormatted.replace("<tr>", "<tr>"_NOTES_BR);
+		notesFormatted = notesFormatted.replace("</tr>", "</tr>"_NOTES_BR);
+		notes.setHtml(notesFormatted);
 		m_notes = notes.toPlainText();
+		m_notes.replace(_NOTES_BR, "<br>");
+#undef _NOTES_BR
 	} else {
-		m_notes = QString::fromUtf8(dive->notes);
-	}
-	if (m_notes.isEmpty()) {
-		m_notes = "--";
+		m_notes.replace("\n", "<br>");
 	}
 }
 
-- 
1.7.11.msysgit.0



More information about the subsurface mailing list