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.cpp27
1 files changed, 17 insertions, 10 deletions
diff --git a/examples/quickcontrols2/texteditor/documenthandler.cpp b/examples/quickcontrols2/texteditor/documenthandler.cpp
index 090e0684..72608910 100644
--- a/examples/quickcontrols2/texteditor/documenthandler.cpp
+++ b/examples/quickcontrols2/texteditor/documenthandler.cpp
@@ -53,6 +53,7 @@
#include <QFile>
#include <QFileInfo>
#include <QFileSelector>
+#include <QMimeDatabase>
#include <QQmlFile>
#include <QQmlFileSelector>
#include <QQuickTextDocument>
@@ -293,19 +294,25 @@ 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)) {
- if (QTextDocument *doc = textDocument())
- doc->setModified(false);
-
QByteArray data = file.readAll();
- auto encoding = QStringConverter::encodingForHtml(data.constData(), data.size());
- if (encoding) {
- QStringDecoder decoder(*encoding);
- emit loaded(decoder(data));
- } else {
- // fall back to utf8
- emit loaded(QString::fromUtf8(data));
+ 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);
+ }
+ }
}
reset();