diff options
author | Lars Knoll <lars.knoll@qt.io> | 2020-04-30 14:31:46 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2020-05-14 07:51:15 +0200 |
commit | ada608d46d7ab99b787e48003f8c94c1a11dab19 (patch) | |
tree | 90a6783d5ebd9c64c6cfa9daf6feb2f819fd8533 /examples/widgets/richtext/textedit | |
parent | 666b4a485b3ea87842fb475ce8520d2856d821c7 (diff) |
Get rid of QTextCodec in the textedit example
And refactor the code a bit to not convert to unicode twice and
use the mime database instead of Qt::mightBeRichText().
Change-Id: I56f9a732c8ad593e7f050eaad401be536bdf6f98
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'examples/widgets/richtext/textedit')
-rw-r--r-- | examples/widgets/richtext/textedit/textedit.cpp | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/examples/widgets/richtext/textedit/textedit.cpp b/examples/widgets/richtext/textedit/textedit.cpp index 9b5425240d..945869c88c 100644 --- a/examples/widgets/richtext/textedit/textedit.cpp +++ b/examples/widgets/richtext/textedit/textedit.cpp @@ -60,7 +60,6 @@ #include <QFontDatabase> #include <QMenu> #include <QMenuBar> -#include <QTextCodec> #include <QTextEdit> #include <QStatusBar> #include <QToolBar> @@ -417,20 +416,19 @@ bool TextEdit::load(const QString &f) return false; QByteArray data = file.readAll(); - QTextCodec *codec = Qt::codecForHtml(data); - QString str = codec->toUnicode(data); - if (Qt::mightBeRichText(str)) { + QMimeDatabase db; + if (db.mimeTypeForFileNameAndData(f, data).name() == QLatin1String("text/html")) { + auto encoding = QStringDecoder::encodingForHtml(data.constData(), data.size()); + QString str = QStringDecoder(encoding ? *encoding : QStringDecoder::Utf8)(data); QUrl baseUrl = (f.front() == QLatin1Char(':') ? QUrl(f) : QUrl::fromLocalFile(f)).adjusted(QUrl::RemoveFilename); textEdit->document()->setBaseUrl(baseUrl); textEdit->setHtml(str); - } else { #if QT_CONFIG(textmarkdownreader) - QMimeDatabase db; - if (db.mimeTypeForFileNameAndData(f, data).name() == QLatin1String("text/markdown")) - textEdit->setMarkdown(QString::fromUtf8(data)); - else + } else if (db.mimeTypeForFileNameAndData(f, data).name() == QLatin1String("text/markdown")) { + textEdit->setMarkdown(QString::fromUtf8(data)); #endif - textEdit->setPlainText(QString::fromUtf8(data)); + } else { + textEdit->setPlainText(QString::fromUtf8(data)); } setCurrentFileName(f); |