propagate save errors further, don't mark divelist unchanged

This at least avoids marking the dive list as unchanged on a failed
write, and propagates the error further up the stack.

We still don't show the error string in the GUI, though.  I'll start
doing that next, I think.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Linus Torvalds 2014-03-14 10:19:23 -07:00 committed by Dirk Hohndel
parent 76d4e3d916
commit b5d0cfd557
2 changed files with 19 additions and 14 deletions

View file

@ -882,7 +882,7 @@ void MainWindow::recentFileTriggered(bool checked)
loadFiles(QStringList() << filename);
}
void MainWindow::file_save_as(void)
int MainWindow::file_save_as(void)
{
QString filename;
const char *default_filename;
@ -893,20 +893,23 @@ void MainWindow::file_save_as(void)
default_filename = prefs.default_filename;
filename = QFileDialog::getSaveFileName(this, tr("Save File as"), default_filename,
tr("Subsurface XML files (*.ssrf *.xml *.XML)"));
if (!filename.isNull() && !filename.isEmpty()) {
if (filename.isNull() || filename.isEmpty())
return report_error("No filename to save into");
if (ui.InfoWidget->isEditing())
ui.InfoWidget->acceptChanges();
if (ui.InfoWidget->isEditing())
ui.InfoWidget->acceptChanges();
save_dives(filename.toUtf8().data());
set_filename(filename.toUtf8().data(), true);
setTitle(MWTF_FILENAME);
mark_divelist_changed(false);
addRecentFile(QStringList() << filename);
}
if (save_dives(filename.toUtf8().data()))
return -1;
set_filename(filename.toUtf8().data(), true);
setTitle(MWTF_FILENAME);
mark_divelist_changed(false);
addRecentFile(QStringList() << filename);
return 0;
}
void MainWindow::file_save(void)
int MainWindow::file_save(void)
{
const char *current_default;
@ -924,9 +927,11 @@ void MainWindow::file_save(void)
if (!current_def_dir.exists())
current_def_dir.mkpath(current_def_dir.absolutePath());
}
save_dives(existing_filename);
if (save_dives(existing_filename))
return -1;
mark_divelist_changed(false);
addRecentFile(QStringList() << QString(existing_filename));
return 0;
}
void MainWindow::showError(QString message)

View file

@ -163,8 +163,8 @@ private:
static MainWindow *m_Instance;
bool askSaveChanges();
void writeSettings();
void file_save();
void file_save_as();
int file_save();
int file_save_as();
void beginChangeState(CurrentState s);
void saveSplitterSizes();
QString lastUsedDir();