aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quickcontrols2/texteditor/documenthandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/quickcontrols2/texteditor/documenthandler.cpp')
-rw-r--r--examples/quickcontrols2/texteditor/documenthandler.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/examples/quickcontrols2/texteditor/documenthandler.cpp b/examples/quickcontrols2/texteditor/documenthandler.cpp
index e840d411..72608910 100644
--- a/examples/quickcontrols2/texteditor/documenthandler.cpp
+++ b/examples/quickcontrols2/texteditor/documenthandler.cpp
@@ -53,11 +53,12 @@
#include <QFile>
#include <QFileInfo>
#include <QFileSelector>
+#include <QMimeDatabase>
#include <QQmlFile>
#include <QQmlFileSelector>
#include <QQuickTextDocument>
#include <QTextCharFormat>
-#include <QTextCodec>
+#include <QStringDecoder>
#include <QTextDocument>
#include <QDebug>
@@ -293,14 +294,27 @@ void DocumentHandler::load(const QUrl &fileUrl)
const QUrl path = QQmlFileSelector::get(engine)->selector()->select(fileUrl);
const QString fileName = QQmlFile::urlToLocalFileOrQrc(path);
if (QFile::exists(fileName)) {
+ QMimeType mime = QMimeDatabase().mimeTypeForFile(fileName);
QFile file(fileName);
if (file.open(QFile::ReadOnly)) {
QByteArray data = file.readAll();
- QTextCodec *codec = QTextCodec::codecForHtml(data);
- if (QTextDocument *doc = textDocument())
+ if (QTextDocument *doc = textDocument()) {
+ doc->setBaseUrl(path.adjusted(QUrl::RemoveFilename));
doc->setModified(false);
+ if (mime.inherits("text/markdown")) {
+ emit loaded(QString::fromUtf8(data), Qt::MarkdownText);
+ } else {
+ auto encoding = QStringConverter::encodingForHtml(data.constData(), data.size());
+ if (encoding) {
+ QStringDecoder decoder(*encoding);
+ emit loaded(decoder(data), Qt::AutoText);
+ } else {
+ // fall back to utf8
+ emit loaded(QString::fromUtf8(data), Qt::AutoText);
+ }
+ }
+ }
- emit loaded(codec->toUnicode(data));
reset();
}
}