diff --git a/apps/launcher/datafilespage.cpp b/apps/launcher/datafilespage.cpp index 32bd9acb78..6b0539c1dd 100644 --- a/apps/launcher/datafilespage.cpp +++ b/apps/launcher/datafilespage.cpp @@ -418,6 +418,13 @@ bool DataFilesPage::setupDataFiles() return false; } + // Set the charset for reading the esm/esp files + QString encoding = QString::fromStdString(variables["encoding"].as()); + if (!encoding.isEmpty() && encoding != QLatin1String("win1252")) { + mMastersModel->setEncoding(encoding); + mPluginsModel->setEncoding(encoding); + } + // Add the paths to the respective models for (Files::PathContainer::iterator it = mDataDirs.begin(); it != mDataDirs.end(); ++it) { QString path = QString::fromStdString(it->string()); diff --git a/apps/launcher/model/datafilesmodel.cpp b/apps/launcher/model/datafilesmodel.cpp index 30453425b2..68f9336f21 100644 --- a/apps/launcher/model/datafilesmodel.cpp +++ b/apps/launcher/model/datafilesmodel.cpp @@ -13,12 +13,18 @@ DataFilesModel::DataFilesModel(QObject *parent) : QAbstractTableModel(parent) { + mEncoding = QString("win1252"); } DataFilesModel::~DataFilesModel() { } +void DataFilesModel::setEncoding(const QString &encoding) +{ + mEncoding = encoding; +} + void DataFilesModel::setCheckState(const QModelIndex &index, Qt::CheckState state) { setData(index, state, Qt::CheckStateRole); @@ -268,7 +274,7 @@ void DataFilesModel::addMasters(const QString &path) try { ESM::ESMReader fileReader; - fileReader.setEncoding(std::string("win1252")); + fileReader.setEncoding(mEncoding.toStdString()); fileReader.open(dir.absoluteFilePath(path).toStdString()); ESM::ESMReader::MasterList mlist = fileReader.getMasters(); @@ -328,7 +334,7 @@ void DataFilesModel::addPlugins(const QString &path) try { ESM::ESMReader fileReader; - fileReader.setEncoding(std::string("win1252")); + fileReader.setEncoding(mEncoding.toStdString()); fileReader.open(dir.absoluteFilePath(path).toStdString()); ESM::ESMReader::MasterList mlist = fileReader.getMasters(); diff --git a/apps/launcher/model/datafilesmodel.hpp b/apps/launcher/model/datafilesmodel.hpp index d45788c3cb..29a770a862 100644 --- a/apps/launcher/model/datafilesmodel.hpp +++ b/apps/launcher/model/datafilesmodel.hpp @@ -32,6 +32,8 @@ public: inline QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const { return QAbstractTableModel::index(row, column, parent); } + void setEncoding(const QString &encoding); + void addFile(EsmFile *file); void addMasters(const QString &path); @@ -62,6 +64,8 @@ private: QHash mDependencies; QHash mCheckStates; + QString mEncoding; + }; #endif // DATAFILESMODEL_HPP