summaryrefslogtreecommitdiff
path: root/src/plugins/texteditor/refactoringchanges.cpp
diff options
context:
space:
mode:
authorChristian Kamm <christian.d.kamm@nokia.com>2011-09-20 13:10:17 +0200
committerChristian Kamm <christian.d.kamm@nokia.com>2011-09-20 13:25:36 +0200
commit71cbd765b2f887a68495b947e202ee4ca4295fd8 (patch)
treebdb0a445f3f9390a9693cbf13d1d1daf80185d1e /src/plugins/texteditor/refactoringchanges.cpp
parent7c7562f2a1c7cea30a612a35a9f1356b90806952 (diff)
downloadqt-creator-71cbd765b2f887a68495b947e202ee4ca4295fd8.tar.gz
RefactoringChanges: Fix problems with encodings.
Task-number: QTCREATORBUG-6140 Change-Id: Iedbfca6987bffa2670df39f5f461690218f6da14 Reviewed-on: http://codereview.qt-project.org/5233 Reviewed-by: Leandro T. C. Melo <leandro.melo@nokia.com>
Diffstat (limited to 'src/plugins/texteditor/refactoringchanges.cpp')
-rw-r--r--src/plugins/texteditor/refactoringchanges.cpp40
1 files changed, 27 insertions, 13 deletions
diff --git a/src/plugins/texteditor/refactoringchanges.cpp b/src/plugins/texteditor/refactoringchanges.cpp
index 811be2ba41..9a5fda951a 100644
--- a/src/plugins/texteditor/refactoringchanges.cpp
+++ b/src/plugins/texteditor/refactoringchanges.cpp
@@ -37,7 +37,7 @@
#include <coreplugin/editormanager/editormanager.h>
#include <extensionsystem/pluginmanager.h>
-#include <utils/fileutils.h>
+#include <utils/qtcassert.h>
#include <QtCore/QFile>
#include <QtCore/QSet>
@@ -120,10 +120,12 @@ bool RefactoringChanges::createFile(const QString &fileName, const QString &cont
}
if (!editor) {
- Utils::FileSaver saver(fileName);
- saver.write(document->toPlainText().toUtf8());
+ Utils::TextFileFormat format;
+ format.codec = Core::EditorManager::instance()->defaultTextCodec();
+ QString error;
+ bool saveOk = format.writeFile(fileName, document->toPlainText(), &error);
delete document;
- if (!saver.finalize(Core::ICore::instance()->mainWindow()))
+ if (!saveOk)
return false;
}
@@ -219,11 +221,19 @@ QTextDocument *RefactoringFile::mutableDocument() const
return m_editor->document();
else if (!m_document) {
QString fileContents;
- if (!m_fileName.isEmpty() && QFile::exists(m_fileName)) {
- Utils::FileReader reader;
- if (reader.fetch(m_fileName, Core::ICore::instance()->mainWindow()))
- fileContents = QString::fromUtf8(reader.data());
+ if (!m_fileName.isEmpty()) {
+ QString error;
+ QTextCodec *defaultCodec = Core::EditorManager::instance()->defaultTextCodec();
+ Utils::TextFileFormat::ReadResult result = Utils::TextFileFormat::readFile(
+ m_fileName, defaultCodec,
+ &fileContents, &m_textFileFormat,
+ &error);
+ if (result != Utils::TextFileFormat::ReadSuccess) {
+ qWarning() << "Could not read " << m_fileName << ". Error: " << error;
+ m_textFileFormat.codec = 0;
+ }
}
+ // always make a QTextDocument to avoid excessive null checks
m_document = new QTextDocument(fileContents);
}
return m_document;
@@ -325,7 +335,10 @@ void RefactoringFile::apply()
// apply changes, if any
if (m_data && !(m_indentRanges.isEmpty() && m_changes.isEmpty())) {
QTextDocument *doc = mutableDocument();
- if (doc) {
+ if (!doc)
+ return;
+
+ {
QTextCursor c(doc);
c.beginEditBlock();
@@ -346,10 +359,11 @@ void RefactoringFile::apply()
}
// if this document doesn't have an editor, write the result to a file
- if (!m_editor && !m_fileName.isEmpty()) {
- Utils::FileSaver saver(m_fileName);
- saver.write(doc->toPlainText().toUtf8());
- saver.finalize(Core::ICore::instance()->mainWindow());
+ if (!m_editor && m_textFileFormat.codec) {
+ QTC_ASSERT(!m_fileName.isEmpty(), return);
+ QString error;
+ if (!m_textFileFormat.writeFile(m_fileName, doc->toPlainText(), &error))
+ qWarning() << "Could not apply changes to" << m_fileName << ". Error: " << error;
}
fileChanged();