From 8e7c2aba9fae0bd242d0f11ec1d2f21e7e942cc5 Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Wed, 25 Aug 2021 15:25:51 +0200
Subject: [PATCH] BUILD: No more implicit conversions from `const char *` to
 `QString`, everything should be in UTF-8

---
 CMakeLists.txt                       |  2 +-
 src/Lib/Audio.cc                     |  2 +-
 src/Lib/Document/VivyDocument.cc     | 11 ++++-------
 src/Lib/Script/LuaContext.cc         |  3 +--
 src/Lib/Script/ScriptStore.cc        |  2 +-
 src/UI/AboutWindow.cc                |  6 +++---
 src/UI/DocumentViews/MpvContainer.cc |  4 ++--
 src/UI/MainWindow.cc                 |  2 +-
 src/UI/ScriptDocumentView.cc         |  2 +-
 src/UI/VivyDocumentView.cc           |  3 ++-
 src/VivyCli.cc                       |  2 +-
 11 files changed, 18 insertions(+), 21 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0b90ba61..472ec5de 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -121,7 +121,7 @@ target_link_libraries(Vivy PRIVATE -fopenmp)
 target_compile_definitions(Vivy PRIVATE
     QT_DISABLE_DEPRECATED_BEFORE=0x050F00
     QT_NO_CAST_TO_ASCII
-    #    QT_RESTRICTED_CAST_FROM_ASCII
+    QT_RESTRICTED_CAST_FROM_ASCII
     QTCREATOR_UTILS_STATIC_LIB
 )
 
diff --git a/src/Lib/Audio.cc b/src/Lib/Audio.cc
index 8c492175..23ad3e86 100644
--- a/src/Lib/Audio.cc
+++ b/src/Lib/Audio.cc
@@ -281,7 +281,7 @@ AudioContext::Stream::getDataSampleRate() const noexcept
 QString
 AudioContext::Stream::getName() const noexcept
 {
-    return QString(codec->name);
+    return QString::fromUtf8(codec->name);
 }
 
 // Get the codec's ID used to decode the stream
diff --git a/src/Lib/Document/VivyDocument.cc b/src/Lib/Document/VivyDocument.cc
index e5e4302e..eb39bd2d 100644
--- a/src/Lib/Document/VivyDocument.cc
+++ b/src/Lib/Document/VivyDocument.cc
@@ -92,7 +92,7 @@ VivyDocument::loadSaveJsonDocumentFile(const QJsonDocument &json)
 
     const QString savedVersion = savedVersionJson.toString();
     for (const auto &[version, callback] : loadFunctions) {
-        if (savedVersion == version)
+        if (savedVersion == QString::fromUtf8(version))
             return callback(this, json);
     }
 
@@ -264,14 +264,11 @@ VivyDocument::getDocumentCapabilitiesString() const noexcept
 {
     QStringList ret;
     if (documentType & AudioAble)
-        ret.push_back("AudioAble" +
-                      QString(audioDocument ? QStringLiteral("") : QStringLiteral("(ack)")));
+        ret.push_back("AudioAble" + QString::fromUtf8(audioDocument ? "" : "(ack)"));
     if (documentType & VideoAble)
-        ret.push_back("VideoAble" +
-                      QString(videoDocument ? QStringLiteral("") : QStringLiteral("(ack)")));
+        ret.push_back("VideoAble" + QString::fromUtf8(videoDocument ? "" : "(ack)"));
     if (documentType & AssAble)
-        ret.push_back("AssAble" +
-                      QString(assDocument ? QStringLiteral("") : QStringLiteral("(ack)")));
+        ret.push_back("AssAble" + QString::fromUtf8(assDocument ? "" : "(ack)"));
     return ret.join(", ");
 }
 
diff --git a/src/Lib/Script/LuaContext.cc b/src/Lib/Script/LuaContext.cc
index a7c26e65..f5b4d341 100644
--- a/src/Lib/Script/LuaContext.cc
+++ b/src/Lib/Script/LuaContext.cc
@@ -129,8 +129,7 @@ LuaContext::getLastLuaError() noexcept
         return QStringLiteral("No lua error detected...");
     }
 
-    const char *error = lua_tostring(L, -1);
-    QString ret       = QStringLiteral("%1").arg(error);
+    QString ret = QString::fromUtf8(lua_tostring(L, -1));
     lua_pop(L, 1);
     return ret;
 }
diff --git a/src/Lib/Script/ScriptStore.cc b/src/Lib/Script/ScriptStore.cc
index 61a970d5..689dfc78 100644
--- a/src/Lib/Script/ScriptStore.cc
+++ b/src/Lib/Script/ScriptStore.cc
@@ -63,7 +63,7 @@ ScriptStore::executeScript(Uuid id) noexcept
         QRegExp errorDetect(QStringLiteral("^([^\\:]*)\\:(\\d+)\\:(.*)\\n?$"));
         while (std::getline(streamErr, buffer, '\n')) {
             std::cout << '\t' << buffer << '\n';
-            if (errorDetect.indexIn(buffer.c_str()) != -1) {
+            if (errorDetect.indexIn(QString::fromUtf8(buffer.c_str())) != -1) {
                 std::string errorDesc = errorDetect.cap(3).toStdString();
                 return std::tuple{ QString(errorDetect.cap(2)).toInt(), Utils::trim(errorDesc) };
             }
diff --git a/src/UI/AboutWindow.cc b/src/UI/AboutWindow.cc
index 4bb7e87b..85cb2e01 100644
--- a/src/UI/AboutWindow.cc
+++ b/src/UI/AboutWindow.cc
@@ -52,7 +52,7 @@ AboutWindow::SimpleLabel::SimpleLabel(QWidget *parent, const char *text)
     setTextFormat(Qt::RichText);
     setTextInteractionFlags(Qt::NoTextInteraction | Qt::LinksAccessibleByMouse |
                             Qt::LinksAccessibleByKeyboard);
-    setText(QString(text));
+    setText(QString::fromUtf8(text));
     setAlignment(Qt::AlignJustify | Qt::AlignTop);
     setWordWrap(true);
 }
@@ -78,8 +78,8 @@ AboutWindow::LicenceLabel::LicenceLabel(QWidget *parent, const QString &url,
 
     switch (format) {
     case Qt::PlainText:
-    case Qt::RichText: setText(QString(content.readAll())); break;
-    case Qt::MarkdownText: setMarkdown(content.readAll()); break;
+    case Qt::RichText: setText(QString::fromUtf8(content.readAll())); break;
+    case Qt::MarkdownText: setMarkdown(QString::fromUtf8(content.readAll())); break;
     case Qt::AutoText: qCritical() << "Invalid text format for LicenceLabel" << format;
     }
 }
diff --git a/src/UI/DocumentViews/MpvContainer.cc b/src/UI/DocumentViews/MpvContainer.cc
index ef64b08f..e7457ed8 100644
--- a/src/UI/DocumentViews/MpvContainer.cc
+++ b/src/UI/DocumentViews/MpvContainer.cc
@@ -106,7 +106,7 @@ MpvContainer::handleMpvEvent(mpv_event *event) noexcept
 
     case MPV_EVENT_LOG_MESSAGE:
         msg     = reinterpret_cast<mpv_event_log_message *>(event->data);
-        msgText = QString(msg->text);
+        msgText = QString::fromUtf8(msg->text);
         msgText.replace('\n', "");
         qDebug().nospace().noquote()
             << "MPV - MSG [" << msg->prefix << "] " << msg->level << ": " << msgText;
@@ -179,7 +179,7 @@ MpvContainer::getAssSid() const noexcept
 {
     bool conversionOk  = false;
     const char *result = mpv_get_property_string(mpv, "sid");
-    const int ret      = QString(result).toInt(&conversionOk);
+    const int ret      = QString::fromUtf8(result).toInt(&conversionOk);
     return (result == nullptr || !conversionOk) ? -1 : ret;
 }
 
diff --git a/src/UI/MainWindow.cc b/src/UI/MainWindow.cc
index ddf90b9e..b320ac79 100644
--- a/src/UI/MainWindow.cc
+++ b/src/UI/MainWindow.cc
@@ -333,7 +333,7 @@ MainWindow::openDocument() noexcept
 
             if (errorTuple.has_value()) {
                 const auto &[line, desc] = errorTuple.value();
-                emit newView->luaErrorFound(line, QString{ desc.c_str() });
+                emit newView->luaErrorFound(line, QString::fromUtf8(desc.c_str()));
             }
 
             addTab(newView);
diff --git a/src/UI/ScriptDocumentView.cc b/src/UI/ScriptDocumentView.cc
index b91e3830..a7ab4938 100644
--- a/src/UI/ScriptDocumentView.cc
+++ b/src/UI/ScriptDocumentView.cc
@@ -19,7 +19,7 @@ ScriptDocumentView::ScriptDocumentView(std::shared_ptr<ScriptDocument> ptr, QWid
         throw std::runtime_error("Failed to open script file");
     }
 
-    editor->setPlainText(textFile.readAll());
+    editor->setPlainText(QString::fromUtf8(textFile.readAll()));
     setCentralWidget(editor);
     editor->setFocus(Qt::OtherFocusReason);
 
diff --git a/src/UI/VivyDocumentView.cc b/src/UI/VivyDocumentView.cc
index a8272507..984ffbd4 100644
--- a/src/UI/VivyDocumentView.cc
+++ b/src/UI/VivyDocumentView.cc
@@ -61,7 +61,8 @@ VivyDocumentView::getDocument() const noexcept
 QString
 VivyDocumentView::getDocumentTabName() const noexcept
 {
-    return (document->checkDocumentOption(VivyDocument::UntouchedByDefault) ? "(*) " : "") +
+    return QString::fromUtf8(
+               document->checkDocumentOption(VivyDocument::UntouchedByDefault) ? "(*) " : "") +
            document->getName();
 }
 
diff --git a/src/VivyCli.cc b/src/VivyCli.cc
index 1305babc..87e54139 100644
--- a/src/VivyCli.cc
+++ b/src/VivyCli.cc
@@ -6,7 +6,7 @@ using namespace Vivy;
 VivyCli::VivyCli(int &argc, char **argv) noexcept
 {
     if (argc >= 2) {
-        selectedDoc = scriptStore.loadDocument(QString(argv[1]));
+        selectedDoc = scriptStore.loadDocument(QString::fromUtf8(argv[1]));
     }
 }
 
-- 
GitLab