add/unify i/o error handling

lots of use of Utils::FileSaver and Utils::FileReader

Task-number: QTCREATORBUG-1619
This commit is contained in:
Oswald Buddenhagen
2011-03-30 15:15:15 +02:00
parent fae7dc9584
commit 45c9cf7a12
70 changed files with 632 additions and 710 deletions

View File

@@ -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);
}
}
writer.writeEndElement();
writer.writeEndDocument();
file.close();
}
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();
saver.setResult(&writer);
}
if (!saver.finalize(errorString))
return false;
reload();
return true;
}
void SnippetsCollection::writeSnippetXML(const Snippet &snippet, QXmlStreamWriter *writer) const

View File

@@ -97,7 +97,7 @@ public:
QList<QString> groupIds() const;
void reload();
void synchronize();
bool synchronize(QString *errorString);
private slots:
void identifyGroups();

View File

@@ -49,6 +49,7 @@
#include <QtCore/QTextStream>
#include <QtCore/QHash>
#include <QtGui/QMessageBox>
#include <QtGui/QMainWindow>
namespace TextEditor {
namespace Internal {
@@ -390,8 +391,12 @@ void SnippetsSettingsPagePrivate::apply()
setSnippetContent();
if (m_snippetsCollectionChanged) {
SnippetsCollection::instance()->synchronize();
m_snippetsCollectionChanged = false;
QString errorString;
if (SnippetsCollection::instance()->synchronize(&errorString))
m_snippetsCollectionChanged = false;
else
QMessageBox::critical(Core::ICore::instance()->mainWindow(),
tr("Error While Saving Snippet Collection"), errorString);
}
}