mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-30 08:15:37 +00:00
Handle UTF-8 in Qt streams in the Qt6-compatible way
This commit is contained in:
parent
6a9af5ccca
commit
bfcbc2350d
6 changed files with 37 additions and 13 deletions
|
@ -7,13 +7,13 @@
|
|||
#include <QDebug>
|
||||
#include <QDir>
|
||||
#include <QMessageBox>
|
||||
#include <QTextCodec>
|
||||
#include <QTime>
|
||||
|
||||
#include <boost/program_options/options_description.hpp>
|
||||
#include <boost/program_options/variables_map.hpp>
|
||||
#include <components/files/conversion.hpp>
|
||||
#include <components/files/qtconversion.hpp>
|
||||
#include <components/misc/utf8qtextstream.hpp>
|
||||
|
||||
#include "advancedpage.hpp"
|
||||
#include "datafilespage.hpp"
|
||||
|
@ -323,7 +323,7 @@ bool Launcher::MainDialog::setupLauncherSettings()
|
|||
return false;
|
||||
}
|
||||
QTextStream stream(&file);
|
||||
stream.setCodec(QTextCodec::codecForName("UTF-8"));
|
||||
ensureUtf8Encoding(stream);
|
||||
|
||||
mLauncherSettings.readFile(stream);
|
||||
}
|
||||
|
@ -359,7 +359,7 @@ bool Launcher::MainDialog::setupGameSettings()
|
|||
return {};
|
||||
}
|
||||
QTextStream stream(&file);
|
||||
stream.setCodec(QTextCodec::codecForName("UTF-8"));
|
||||
ensureUtf8Encoding(stream);
|
||||
|
||||
(mGameSettings.*reader)(stream, ignoreContent);
|
||||
file.close();
|
||||
|
@ -559,7 +559,7 @@ bool Launcher::MainDialog::writeSettings()
|
|||
|
||||
QTextStream stream(&file);
|
||||
stream.setDevice(&file);
|
||||
stream.setCodec(QTextCodec::codecForName("UTF-8"));
|
||||
ensureUtf8Encoding(stream);
|
||||
|
||||
mLauncherSettings.writeFile(stream);
|
||||
file.close();
|
||||
|
|
|
@ -164,7 +164,11 @@ bool Wizard::IniSettings::writeFile(const QString& path, QTextStream& stream)
|
|||
if (file.open(QIODevice::ReadWrite | QIODevice::Truncate | QIODevice::Text))
|
||||
{
|
||||
QTextStream in(&file);
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
in.setCodec(stream.codec());
|
||||
#else
|
||||
in.setEncoding(stream.encoding());
|
||||
#endif
|
||||
|
||||
// Write the updated buffer to an empty file
|
||||
in << buffer;
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
#include <QDir>
|
||||
#include <QMessageBox>
|
||||
#include <QProcess>
|
||||
#include <QTextCodec>
|
||||
|
||||
#include <components/files/qtconversion.hpp>
|
||||
#include <components/misc/utf8qtextstream.hpp>
|
||||
#include <components/process/processinvoker.hpp>
|
||||
|
||||
#include "componentselectionpage.hpp"
|
||||
|
@ -165,7 +165,7 @@ void Wizard::MainWizard::setupGameSettings()
|
|||
return;
|
||||
}
|
||||
QTextStream stream(&file);
|
||||
stream.setCodec(QTextCodec::codecForName("UTF-8"));
|
||||
ensureUtf8Encoding(stream);
|
||||
|
||||
mGameSettings.readUserFile(stream);
|
||||
}
|
||||
|
@ -197,7 +197,7 @@ void Wizard::MainWizard::setupGameSettings()
|
|||
return;
|
||||
}
|
||||
QTextStream stream(&file);
|
||||
stream.setCodec(QTextCodec::codecForName("UTF-8"));
|
||||
ensureUtf8Encoding(stream);
|
||||
|
||||
mGameSettings.readFile(stream);
|
||||
}
|
||||
|
@ -233,7 +233,7 @@ void Wizard::MainWizard::setupLauncherSettings()
|
|||
return;
|
||||
}
|
||||
QTextStream stream(&file);
|
||||
stream.setCodec(QTextCodec::codecForName("UTF-8"));
|
||||
ensureUtf8Encoding(stream);
|
||||
|
||||
mLauncherSettings.readFile(stream);
|
||||
}
|
||||
|
@ -460,7 +460,7 @@ void Wizard::MainWizard::writeSettings()
|
|||
}
|
||||
|
||||
QTextStream stream(&file);
|
||||
stream.setCodec(QTextCodec::codecForName("UTF-8"));
|
||||
ensureUtf8Encoding(stream);
|
||||
|
||||
mGameSettings.writeFile(stream);
|
||||
file.close();
|
||||
|
@ -486,7 +486,7 @@ void Wizard::MainWizard::writeSettings()
|
|||
}
|
||||
|
||||
stream.setDevice(&file);
|
||||
stream.setCodec(QTextCodec::codecForName("UTF-8"));
|
||||
ensureUtf8Encoding(stream);
|
||||
|
||||
mLauncherSettings.writeFile(stream);
|
||||
file.close();
|
||||
|
|
|
@ -197,7 +197,7 @@ add_component_dir (esm4
|
|||
)
|
||||
|
||||
add_component_dir (misc
|
||||
constants utf8stream resourcehelpers rng messageformatparser weakcache thread
|
||||
constants utf8stream utf8qtextstream resourcehelpers rng messageformatparser weakcache thread
|
||||
compression osguservalues color tuplemeta tuplehelpers
|
||||
)
|
||||
|
||||
|
|
|
@ -3,10 +3,10 @@
|
|||
|
||||
#include <QDir>
|
||||
#include <QRegularExpression>
|
||||
#include <QTextCodec>
|
||||
|
||||
#include <components/files/configurationmanager.hpp>
|
||||
#include <components/files/qtconversion.hpp>
|
||||
#include <components/misc/utf8qtextstream.hpp>
|
||||
|
||||
const char Config::GameSettings::sArchiveKey[] = "fallback-archive";
|
||||
const char Config::GameSettings::sContentKey[] = "content";
|
||||
|
@ -232,7 +232,7 @@ bool Config::GameSettings::isOrderedLine(const QString& line)
|
|||
bool Config::GameSettings::writeFileWithComments(QFile& file)
|
||||
{
|
||||
QTextStream stream(&file);
|
||||
stream.setCodec(QTextCodec::codecForName("UTF-8"));
|
||||
ensureUtf8Encoding(stream);
|
||||
|
||||
// slurp
|
||||
std::vector<QString> fileCopy;
|
||||
|
|
20
components/misc/utf8qtextstream.hpp
Normal file
20
components/misc/utf8qtextstream.hpp
Normal file
|
@ -0,0 +1,20 @@
|
|||
#ifndef MISC_UTF8QTEXTSTREAM_HPP
|
||||
#define MISC_UTF8QTEXTSTREAM_HPP
|
||||
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
#include <QTextCodec>
|
||||
#endif
|
||||
#include <QTextStream>
|
||||
|
||||
namespace
|
||||
{
|
||||
void ensureUtf8Encoding(QTextStream& stream)
|
||||
{
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
stream.setCodec(QTextCodec::codecForName("UTF-8"));
|
||||
#else
|
||||
stream.setEncoding(QStringConverter::Utf8);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
Loading…
Reference in a new issue