Desktop: improve recognition of HTML-notes

To recognize HTML-notes the text was scanned for <div> tags. But
apparently the planner notes do not feature such a thing. Therefore
extend recognition of HTML to <table> tags.

Note we can't use the <html> or <span> tags, because these are
*always* produced by the QTextEdit::toHtml() function.

Fixes #2265

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2019-08-29 23:16:38 +02:00 committed by Dirk Hohndel
parent 98d171630c
commit 009f47c5dc
2 changed files with 9 additions and 4 deletions

View file

@ -1,3 +1,4 @@
- Desktop: Don't destroy format of planner notes when editing dive notes [#2265]
- Desktop: fix crash when saving subtitles or profile picture
---
* Always add new entries at the very top of this file above other existing entries and this note.

View file

@ -369,11 +369,15 @@ bool MainTab::isEditing()
return editMode != NONE;
}
static bool isHtml(const QString &s)
{
return s.contains("<div", Qt::CaseInsensitive) || s.contains("<table", Qt::CaseInsensitive);
}
void MainTab::updateNotes(const struct dive *d)
{
QString tmp(d->notes);
if (tmp.indexOf("<div") != -1) {
tmp.replace(QString("\n"), QString("<br>"));
if (isHtml(tmp)) {
ui.notes->setHtml(tmp);
} else {
ui.notes->setPlainText(tmp);
@ -881,8 +885,8 @@ void MainTab::on_notes_editingFinished()
if (!currentTrip && !current_dive)
return;
QString notes = ui.notes->toHtml().indexOf("<div") != -1 ?
ui.notes->toHtml() : ui.notes->toPlainText();
QString html = ui.notes->toHtml();
QString notes = isHtml(html) ? html : ui.notes->toPlainText();
if (currentTrip)
Command::editTripNotes(currentTrip, notes);