summaryrefslogtreecommitdiff
path: root/src/plugins/texteditor/snippets/snippetscollection.cpp
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>2011-03-30 15:15:15 +0200
committerOswald Buddenhagen <oswald.buddenhagen@nokia.com>2011-04-18 14:10:14 +0200
commit45c9cf7a1298feed925d18596c30ac9c6cd1dac5 (patch)
tree6f484122011b76a5f3a2f1915b7b308b1f5058ea /src/plugins/texteditor/snippets/snippetscollection.cpp
parentfae7dc9584b4e2f2192f8b7a71c428fcaa2ddb70 (diff)
downloadqt-creator-45c9cf7a1298feed925d18596c30ac9c6cd1dac5.tar.gz
add/unify i/o error handling
lots of use of Utils::FileSaver and Utils::FileReader Task-number: QTCREATORBUG-1619
Diffstat (limited to 'src/plugins/texteditor/snippets/snippetscollection.cpp')
-rw-r--r--src/plugins/texteditor/snippets/snippetscollection.cpp44
1 files changed, 26 insertions, 18 deletions
diff --git a/src/plugins/texteditor/snippets/snippetscollection.cpp b/src/plugins/texteditor/snippets/snippetscollection.cpp
index 195213c113..6f3b4be838 100644
--- a/src/plugins/texteditor/snippets/snippetscollection.cpp
+++ b/src/plugins/texteditor/snippets/snippetscollection.cpp
@@ -36,6 +36,7 @@
#include <coreplugin/icore.h>
#include <extensionsystem/pluginmanager.h>
+#include <utils/fileutils.h>
#include <QtCore/QLatin1String>
#include <QtCore/QFile>
@@ -312,30 +313,37 @@ void SnippetsCollection::reload()
insertSnippet(snippet);
}
-void SnippetsCollection::synchronize()
+bool SnippetsCollection::synchronize(QString *errorString)
{
- if (QFile::exists(m_userSnippetsPath) || QDir().mkpath(m_userSnippetsPath)) {
- QFile file(m_userSnippetsPath + m_userSnippetsFile);
- if (file.open(QFile::WriteOnly | QFile::Truncate)) {
- QXmlStreamWriter writer(&file);
- writer.setAutoFormatting(true);
- writer.writeStartDocument();
- writer.writeStartElement(kSnippets);
- foreach (const QString &groupId, m_groupIndexById.keys()) {
- const int size = m_snippets.at(groupIndex(groupId)).size();
- for (int i = 0; i < size; ++i) {
- const Snippet &current = snippet(i, groupId);
- if (!current.isBuiltIn() || current.isRemoved() || current.isModified())
- writeSnippetXML(current, &writer);
- }
+ if (!QFile::exists(m_userSnippetsPath) && !QDir().mkpath(m_userSnippetsPath)) {
+ *errorString = tr("Cannot create user snippet directory %1").arg(
+ QDir::toNativeSeparators(m_userSnippetsPath));
+ return false;
+ }
+ Utils::FileSaver saver(m_userSnippetsPath + m_userSnippetsFile);
+ if (!saver.hasError()) {
+ QXmlStreamWriter writer(saver.file());
+ writer.setAutoFormatting(true);
+ writer.writeStartDocument();
+ writer.writeStartElement(kSnippets);
+ foreach (const QString &groupId, m_groupIndexById.keys()) {
+ const int size = m_snippets.at(groupIndex(groupId)).size();
+ for (int i = 0; i < size; ++i) {
+ const Snippet &current = snippet(i, groupId);
+ if (!current.isBuiltIn() || current.isRemoved() || current.isModified())
+ writeSnippetXML(current, &writer);
}
- writer.writeEndElement();
- writer.writeEndDocument();
- file.close();
}
+ writer.writeEndElement();
+ writer.writeEndDocument();
+
+ saver.setResult(&writer);
}
+ if (!saver.finalize(errorString))
+ return false;
reload();
+ return true;
}
void SnippetsCollection::writeSnippetXML(const Snippet &snippet, QXmlStreamWriter *writer) const