diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-03-14 10:19:23 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-03-14 10:49:53 -0700 |
commit | b5d0cfd557aa94a423e19663339439301ab1a5ae (patch) | |
tree | fbc7743cdac57ea0f779bca3918aa23dc073f609 /qt-ui | |
parent | 76d4e3d91614459394b1909d625adc7219b04740 (diff) | |
download | subsurface-b5d0cfd557aa94a423e19663339439301ab1a5ae.tar.gz |
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>
Diffstat (limited to 'qt-ui')
-rw-r--r-- | qt-ui/mainwindow.cpp | 29 | ||||
-rw-r--r-- | qt-ui/mainwindow.h | 4 |
2 files changed, 19 insertions, 14 deletions
diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index b67de1588..671f39cf7 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -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) diff --git a/qt-ui/mainwindow.h b/qt-ui/mainwindow.h index 8244d0a0f..971bd1768 100644 --- a/qt-ui/mainwindow.h +++ b/qt-ui/mainwindow.h @@ -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(); |