aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorIvan Komissarov <abbapoh@gmail.com>2020-11-08 18:19:54 +0100
committerIvan Komissarov <ABBAPOH@gmail.com>2020-11-09 18:21:37 +0000
commit21ff28bd5a0e0f3d16a09885df45e045a515b450 (patch)
treea87e72f15510f5709128b83d6e4146d49eae5d44 /src
parentbf272e348b0b45dd2b1af11d56819047dce3c85a (diff)
qt6: do not use QTextStream::setCodec method
...it is gone now Change-Id: Ie636dd6812fda4df0c149de240662d39ac63b86a Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/app/config/configcommandexecutor.cpp4
-rw-r--r--src/app/qbs-create-project/createproject.cpp2
-rw-r--r--src/lib/corelib/jsextensions/process.cpp42
-rw-r--r--src/lib/corelib/jsextensions/textfile.cpp41
-rw-r--r--src/lib/corelib/language/itemreadervisitorstate.cpp2
-rw-r--r--src/lib/corelib/language/moduleloader.cpp2
-rw-r--r--src/lib/corelib/language/scriptengine.cpp2
-rw-r--r--src/lib/corelib/parser/qmlerror.cpp6
-rw-r--r--src/lib/corelib/tools/qttools.h9
9 files changed, 64 insertions, 46 deletions
diff --git a/src/app/config/configcommandexecutor.cpp b/src/app/config/configcommandexecutor.cpp
index f2d9fc59e..0a6883aa7 100644
--- a/src/app/config/configcommandexecutor.cpp
+++ b/src/app/config/configcommandexecutor.cpp
@@ -128,7 +128,7 @@ void ConfigCommandExecutor::exportSettings(const QString &filename)
.arg(QDir::toNativeSeparators(filename), file.errorString()));
}
QTextStream stream(&file);
- stream.setCodec("UTF-8");
+ setupDefaultCodec(stream);
const auto keys = m_settings->allKeys(m_scope);
for (const QString &key : keys)
stream << key << ": " << qbs::settingsValueToRepresentation(m_settings->value(key, m_scope))
@@ -148,7 +148,7 @@ void ConfigCommandExecutor::importSettings(const QString &filename)
m_settings->remove(key);
QTextStream stream(&file);
- stream.setCodec("UTF-8");
+ setupDefaultCodec(stream);
while (!stream.atEnd()) {
QString line = stream.readLine();
int colon = line.indexOf(QLatin1Char(':'));
diff --git a/src/app/qbs-create-project/createproject.cpp b/src/app/qbs-create-project/createproject.cpp
index 20338be98..cb6229ce3 100644
--- a/src/app/qbs-create-project/createproject.cpp
+++ b/src/app/qbs-create-project/createproject.cpp
@@ -103,7 +103,7 @@ void ProjectCreator::serializeProject(const ProjectCreator::Project &project)
.arg(projectFile.fileName(), projectFile.errorString()));
}
QTextStream fileContents(&projectFile);
- fileContents.setCodec("UTF-8");
+ qbs::setupDefaultCodec(fileContents);
fileContents << "import qbs\n\n";
if (!project.fileNames.empty() || m_projectStructure == ProjectStructure::Flat) {
fileContents << "Product {\n";
diff --git a/src/lib/corelib/jsextensions/process.cpp b/src/lib/corelib/jsextensions/process.cpp
index a91084b4a..8ddb48acd 100644
--- a/src/lib/corelib/jsextensions/process.cpp
+++ b/src/lib/corelib/jsextensions/process.cpp
@@ -46,10 +46,13 @@
#include <QtCore/qobject.h>
#include <QtCore/qprocess.h>
-#include <QtCore/qtextcodec.h>
#include <QtCore/qtextstream.h>
#include <QtCore/qvariant.h>
-
+#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
+#include <QtCore5Compat/qtextcodec.h>
+#else
+#include <QtCore/qtextcodec.h>
+#endif
#include <QtScript/qscriptable.h>
#include <QtScript/qscriptengine.h>
#include <QtScript/qscriptvalue.h>
@@ -100,10 +103,10 @@ private:
// ResourceAcquiringScriptObject implementation
void releaseResources() override;
- QProcess *m_qProcess;
+ QProcess *m_qProcess = nullptr;
QProcessEnvironment m_environment;
QString m_workingDirectory;
- QTextStream *m_textStream;
+ QTextCodec *m_codec = nullptr;
};
QScriptValue Process::ctor(QScriptContext *context, QScriptEngine *engine)
@@ -143,7 +146,6 @@ QScriptValue Process::ctor(QScriptContext *context, QScriptEngine *engine)
Process::~Process()
{
- delete m_textStream;
delete m_qProcess;
}
@@ -153,7 +155,7 @@ Process::Process(QScriptContext *context)
Q_ASSERT(thisObject().engine() == engine());
m_qProcess = new QProcess;
- m_textStream = new QTextStream(m_qProcess);
+ m_codec = QTextCodec::codecForName("UTF-8");
}
QString Process::getEnv(const QString &name)
@@ -188,7 +190,7 @@ bool Process::start(const QString &program, const QStringList &arguments)
m_qProcess->setWorkingDirectory(m_workingDirectory);
m_qProcess->setProcessEnvironment(m_environment);
- m_qProcess->start(findExecutable(program), arguments);
+ m_qProcess->start(findExecutable(program), arguments, QIODevice::ReadWrite | QIODevice::Text);
return m_qProcess->waitForStarted();
}
@@ -234,8 +236,6 @@ void Process::close()
if (!m_qProcess)
return;
Q_ASSERT(thisObject().engine() == engine());
- delete m_textStream;
- m_textStream = nullptr;
delete m_qProcess;
m_qProcess = nullptr;
}
@@ -262,32 +262,36 @@ void Process::kill()
void Process::setCodec(const QString &codec)
{
Q_ASSERT(thisObject().engine() == engine());
- m_textStream->setCodec(qPrintable(codec));
+ const auto newCodec = QTextCodec::codecForName(qPrintable(codec));
+ if (newCodec)
+ m_codec = newCodec;
}
QString Process::readLine()
{
- return m_textStream->readLine();
+ auto result = m_codec->toUnicode(m_qProcess->readLine());
+ if (!result.isEmpty() && result.back() == QLatin1Char('\n'))
+ result.chop(1);
+ return result;
}
bool Process::atEnd() const
{
- return m_textStream->atEnd();
+ return m_qProcess->atEnd();
}
QString Process::readStdOut()
{
- return m_textStream->readAll();
+ return m_codec->toUnicode(m_qProcess->readAllStandardOutput());
}
QString Process::readStdErr()
{
- return m_textStream->codec()->toUnicode(m_qProcess->readAllStandardError());
+ return m_codec->toUnicode(m_qProcess->readAllStandardError());
}
void Process::closeWriteChannel()
{
- m_textStream->flush();
m_qProcess->closeWriteChannel();
}
@@ -310,15 +314,13 @@ void Process::releaseResources()
void Process::write(const QString &str)
{
- (*m_textStream) << str;
+ m_qProcess->write(m_codec->fromUnicode(str));
}
void Process::writeLine(const QString &str)
{
- (*m_textStream) << str;
- if (HostOsInfo::isWindowsHost())
- (*m_textStream) << '\r';
- (*m_textStream) << '\n';
+ m_qProcess->write(m_codec->fromUnicode(str));
+ m_qProcess->putChar('\n');
}
QScriptValue Process::js_shellQuote(QScriptContext *context, QScriptEngine *engine)
diff --git a/src/lib/corelib/jsextensions/textfile.cpp b/src/lib/corelib/jsextensions/textfile.cpp
index 7c67f9019..3c7f2d316 100644
--- a/src/lib/corelib/jsextensions/textfile.cpp
+++ b/src/lib/corelib/jsextensions/textfile.cpp
@@ -47,6 +47,12 @@
#include <QtCore/qtextstream.h>
#include <QtCore/qvariant.h>
+#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
+#include <QtCore5Compat/qtextcodec.h>
+#else
+#include <QtCore/qtextcodec.h>
+#endif
+
#include <QtScript/qscriptable.h>
#include <QtScript/qscriptengine.h>
#include <QtScript/qscriptvalue.h>
@@ -82,15 +88,15 @@ public:
private:
TextFile(QScriptContext *context, const QString &filePath, OpenMode mode = ReadOnly,
- const QString &codec = QLatin1String("UTF8"));
+ const QString &codec = QLatin1String("UTF-8"));
bool checkForClosed() const;
// ResourceAcquiringScriptObject implementation
void releaseResources() override;
- QFile *m_file;
- QTextStream *m_stream;
+ QFile *m_file = nullptr;
+ QTextCodec *m_codec = nullptr;
};
QScriptValue TextFile::ctor(QScriptContext *context, QScriptEngine *engine)
@@ -132,7 +138,6 @@ QScriptValue TextFile::ctor(QScriptContext *context, QScriptEngine *engine)
TextFile::~TextFile()
{
- delete m_stream;
delete m_file;
}
@@ -143,7 +148,8 @@ TextFile::TextFile(QScriptContext *context, const QString &filePath, OpenMode mo
Q_ASSERT(thisObject().engine() == engine());
m_file = new QFile(filePath);
- m_stream = new QTextStream(m_file);
+ const auto newCodec = QTextCodec::codecForName(qPrintable(codec));
+ m_codec = newCodec ? newCodec : QTextCodec::codecForName("UTF-8");
QIODevice::OpenMode m = QIODevice::NotOpen;
if (mode & ReadOnly)
m |= QIODevice::ReadOnly;
@@ -151,6 +157,7 @@ TextFile::TextFile(QScriptContext *context, const QString &filePath, OpenMode mo
m |= QIODevice::WriteOnly;
if (mode & Append)
m |= QIODevice::Append;
+ m |= QIODevice::Text;
if (Q_UNLIKELY(!m_file->open(m))) {
context->throwError(Tr::tr("Unable to open file '%1': %2")
.arg(filePath, m_file->errorString()));
@@ -163,8 +170,6 @@ void TextFile::close()
{
if (checkForClosed())
return;
- delete m_stream;
- m_stream = nullptr;
m_file->close();
delete m_file;
m_file = nullptr;
@@ -181,28 +186,33 @@ void TextFile::setCodec(const QString &codec)
{
if (checkForClosed())
return;
- m_stream->setCodec(qPrintable(codec));
+ const auto newCodec = QTextCodec::codecForName(qPrintable(codec));
+ if (newCodec)
+ m_codec = newCodec;
}
QString TextFile::readLine()
{
if (checkForClosed())
return {};
- return m_stream->readLine();
+ auto result = m_codec->toUnicode(m_file->readLine());
+ if (!result.isEmpty() && result.back() == QLatin1Char('\n'))
+ result.chop(1);
+ return result;
}
QString TextFile::readAll()
{
if (checkForClosed())
return {};
- return m_stream->readAll();
+ return m_codec->toUnicode(m_file->readAll());
}
bool TextFile::atEof() const
{
if (checkForClosed())
return true;
- return m_stream->atEnd();
+ return m_file->atEnd();
}
void TextFile::truncate()
@@ -210,24 +220,21 @@ void TextFile::truncate()
if (checkForClosed())
return;
m_file->resize(0);
- m_stream->reset();
}
void TextFile::write(const QString &str)
{
if (checkForClosed())
return;
- (*m_stream) << str;
+ m_file->write(m_codec->fromUnicode(str));
}
void TextFile::writeLine(const QString &str)
{
if (checkForClosed())
return;
- (*m_stream) << str;
- if (HostOsInfo::isWindowsHost())
- (*m_stream) << '\r';
- (*m_stream) << '\n';
+ m_file->write(m_codec->fromUnicode(str));
+ m_file->putChar('\n');
}
bool TextFile::checkForClosed() const
diff --git a/src/lib/corelib/language/itemreadervisitorstate.cpp b/src/lib/corelib/language/itemreadervisitorstate.cpp
index 1946715b8..380d70c58 100644
--- a/src/lib/corelib/language/itemreadervisitorstate.cpp
+++ b/src/lib/corelib/language/itemreadervisitorstate.cpp
@@ -125,7 +125,7 @@ Item *ItemReaderVisitorState::readFile(const QString &filePath, const QStringLis
m_filesRead.insert(filePath);
QTextStream stream(&file);
- stream.setCodec("UTF-8");
+ setupDefaultCodec(stream);
const QString &code = stream.readAll();
QbsQmlJS::Lexer lexer(cacheValue.engine());
lexer.setCode(code, 1);
diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp
index 6e92943f9..e5e6f3a14 100644
--- a/src/lib/corelib/language/moduleloader.cpp
+++ b/src/lib/corelib/language/moduleloader.cpp
@@ -3887,7 +3887,7 @@ ModuleLoader::ModuleProviderResult ModuleLoader::findModuleProvider(const Qualif
const QVariant moduleConfig = moduleProviderConfig(product).value(name.toString());
QTextStream stream(&dummyItemFile);
using Qt::endl;
- stream.setCodec("UTF-8");
+ setupDefaultCodec(stream);
stream << "import qbs.FileInfo" << endl;
stream << "import qbs.Utilities" << endl;
stream << "import '" << providerFile << "' as Provider" << endl;
diff --git a/src/lib/corelib/language/scriptengine.cpp b/src/lib/corelib/language/scriptengine.cpp
index e79ec54d7..8b3d6fa76 100644
--- a/src/lib/corelib/language/scriptengine.cpp
+++ b/src/lib/corelib/language/scriptengine.cpp
@@ -381,7 +381,7 @@ void ScriptEngine::importFile(const QString &filePath, QScriptValue &targetObjec
if (Q_UNLIKELY(!file.open(QFile::ReadOnly)))
throw ErrorInfo(tr("Cannot open '%1'.").arg(filePath));
QTextStream stream(&file);
- stream.setCodec("UTF-8");
+ setupDefaultCodec(stream);
const QString sourceCode = stream.readAll();
file.close();
m_currentDirPathStack.push(FileInfo::path(filePath));
diff --git a/src/lib/corelib/parser/qmlerror.cpp b/src/lib/corelib/parser/qmlerror.cpp
index d638b7202..8a8118290 100644
--- a/src/lib/corelib/parser/qmlerror.cpp
+++ b/src/lib/corelib/parser/qmlerror.cpp
@@ -39,6 +39,8 @@
#include "qmlerror.h"
+#include <tools/qttools.h>
+
#include <QtCore/qdebug.h>
#include <QtCore/qfile.h>
#include <QtCore/qstringlist.h>
@@ -259,9 +261,7 @@ QDebug operator<<(QDebug debug, const QmlError &error)
if (f.open(QIODevice::ReadOnly)) {
QByteArray data = f.readAll();
QTextStream stream(data, QIODevice::ReadOnly);
-#ifndef QT_NO_TEXTCODEC
- stream.setCodec("UTF-8");
-#endif
+ qbs::setupDefaultCodec(stream);
const QString code = stream.readAll();
const QStringList lines = code.split(QLatin1Char('\n'));
diff --git a/src/lib/corelib/tools/qttools.h b/src/lib/corelib/tools/qttools.h
index 2d4a38544..ccc9a5552 100644
--- a/src/lib/corelib/tools/qttools.h
+++ b/src/lib/corelib/tools/qttools.h
@@ -118,6 +118,15 @@ QHash<K, V> &unite(QHash<K, V> &h, const QHash<K, V> &other)
#endif
}
+inline void setupDefaultCodec(QTextStream &stream)
+{
+#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
+ stream.setCodec("UTF-8");
+#else
+ Q_UNUSED(stream);
+#endif
+}
+
} // namespace qbs
#endif // QBSQTTOOLS_H