summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp37
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeparsernodes.h4
2 files changed, 24 insertions, 17 deletions
diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp
index de3bf18766..48e223cc07 100644
--- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp
@@ -649,7 +649,7 @@ bool QmakePriFile::addDependencies(const QStringList &dependencies)
if (qtDependencies.isEmpty())
return true;
- const QPair<ProFile *, QStringList> pair = readProFile(filePath().toString());
+ const QPair<ProFile *, QStringList> pair = readProFile();
ProFile * const includeFile = pair.first;
if (!includeFile)
return false;
@@ -750,27 +750,30 @@ bool QmakePriFile::ensureWriteableProFile(const QString &file)
return true;
}
-QPair<ProFile *, QStringList> QmakePriFile::readProFile(const QString &file)
+QPair<ProFile *, QStringList> QmakePriFile::readProFile()
{
QStringList lines;
ProFile *includeFile = nullptr;
{
QString contents;
{
- FileReader reader;
- if (!reader.fetch(file, QIODevice::Text)) {
- QmakeProject::proFileParseError(reader.errorString());
+ QString errorMsg;
+ if (TextFileFormat::readFile(
+ filePath().toString(),
+ Core::EditorManager::defaultTextCodec(),
+ &contents,
+ &m_textFormat,
+ &errorMsg) != TextFileFormat::ReadSuccess) {
+ QmakeProject::proFileParseError(errorMsg);
return qMakePair(includeFile, lines);
}
- const QTextCodec *codec = Core::EditorManager::defaultTextCodec();
- contents = codec->toUnicode(reader.data());
- lines = contents.split(QLatin1Char('\n'));
+ lines = contents.split('\n');
}
QMakeVfs vfs;
QtSupport::ProMessageHandler handler;
QMakeParser parser(nullptr, &vfs, &handler);
- includeFile = parser.parsedProBlock(QStringRef(&contents), 0, file, 1);
+ includeFile = parser.parsedProBlock(QStringRef(&contents), 0, filePath().toString(), 1);
}
return qMakePair(includeFile, lines);
}
@@ -788,7 +791,7 @@ bool QmakePriFile::renameFile(const QString &oldName,
if (!prepareForChange())
return false;
- QPair<ProFile *, QStringList> pair = readProFile(filePath().toString());
+ QPair<ProFile *, QStringList> pair = readProFile();
ProFile *includeFile = pair.first;
QStringList lines = pair.second;
@@ -834,7 +837,7 @@ void QmakePriFile::changeFiles(const QString &mimeType,
if (!prepareForChange())
return;
- QPair<ProFile *, QStringList> pair = readProFile(filePath().toString());
+ QPair<ProFile *, QStringList> pair = readProFile();
ProFile *includeFile = pair.first;
QStringList lines = pair.second;
@@ -876,7 +879,7 @@ bool QmakePriFile::setProVariable(const QString &var, const QStringList &values,
if (!prepareForChange())
return false;
- QPair<ProFile *, QStringList> pair = readProFile(filePath().toString());
+ QPair<ProFile *, QStringList> pair = readProFile();
ProFile *includeFile = pair.first;
QStringList lines = pair.second;
@@ -895,11 +898,13 @@ bool QmakePriFile::setProVariable(const QString &var, const QStringList &values,
void QmakePriFile::save(const QStringList &lines)
{
{
+ QTC_ASSERT(m_textFormat.codec, return);
FileChangeBlocker changeGuard(filePath().toString());
- FileSaver saver(filePath().toString(), QIODevice::Text);
- const QTextCodec *codec = Core::EditorManager::defaultTextCodec();
- saver.write(codec->fromUnicode(lines.join(QLatin1Char('\n'))));
- saver.finalize(Core::ICore::mainWindow());
+ QString errorMsg;
+ if (!m_textFormat.writeFile(filePath().toString(), lines.join('\n'), &errorMsg)) {
+ QMessageBox::critical(Core::ICore::mainWindow(), QCoreApplication::translate(
+ "QmakePriFile", "File Error"), errorMsg);
+ }
}
// This is a hack.
diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.h b/src/plugins/qmakeprojectmanager/qmakeparsernodes.h
index 465f472c07..94eaffe267 100644
--- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.h
+++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.h
@@ -31,6 +31,7 @@
#include <coreplugin/idocument.h>
#include <cpptools/generatedcodemodelsupport.h>
+#include <utils/textfileformat.h>
#include <QHash>
#include <QStringList>
@@ -202,7 +203,7 @@ private:
bool prepareForChange();
static bool ensureWriteableProFile(const QString &file);
- static QPair<ProFile *, QStringList> readProFile(const QString &file);
+ QPair<ProFile *, QStringList> readProFile();
static QPair<ProFile *, QStringList> readProFileFromContents(const QString &contents);
void save(const QStringList &lines);
bool saveModifiedEditors();
@@ -228,6 +229,7 @@ private:
QVector<QmakePriFile *> m_children;
std::unique_ptr<Core::IDocument> m_priFileDocument;
+ Utils::TextFileFormat m_textFormat;
// Memory is cheap...
QMap<ProjectExplorer::FileType, QSet<Utils::FilePath>> m_files;