From c7ff431e9923506410fd00fdc419e132de7da018 Mon Sep 17 00:00:00 2001 From: Basil Huber Date: Tue, 17 Feb 2015 12:03:59 +0100 Subject: [PATCH] Repaired overwriting current files for flight data log (fix #1241) changed QGCApplication::saveTempFlightDataLogOnMainThread(QString tempLogfile) to enable overwriting files existing file is removed before saving file (QFile::copy cannot overwrite files) --- src/QGCApplication.cc | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/src/QGCApplication.cc b/src/QGCApplication.cc index 7c29cfdb8..bd78e6d85 100644 --- a/src/QGCApplication.cc +++ b/src/QGCApplication.cc @@ -483,15 +483,28 @@ void QGCApplication::criticalMessageBoxOnMainThread(const QString& title, const void QGCApplication::saveTempFlightDataLogOnMainThread(QString tempLogfile) { - QString saveFilename = QGCFileDialog::getSaveFileName( - MainWindow::instance(), - tr("Save Flight Data Log"), - qgcApp()->mavlinkLogFilesLocation(), - tr("Flight Data Log Files (*.mavlink)"), - "mavlink"); - if (!saveFilename.isEmpty()) { - QFile::copy(tempLogfile, saveFilename); - } + bool saveError; + do{ + saveError = false; + QString saveFilename = QGCFileDialog::getSaveFileName( + MainWindow::instance(), + tr("Save Flight Data Log"), + qgcApp()->mavlinkLogFilesLocation(), + tr("Flight Data Log Files (*.mavlink)"), + "mavlink"); + + if (!saveFilename.isEmpty()) { + // if file exsits already, try to remove it first to overwrite it + if(QFile::exists(saveFilename) && !QFile::remove(saveFilename)){ + saveError = true; + QMessageBox::warning (MainWindow::instance(), "File Error","Could not overwrite existing file"); + QFile::copy(tempLogfile, saveFilename); + } else if(!QFile::copy(tempLogfile, saveFilename)) { + saveError = true; + QMessageBox::warning (MainWindow::instance(), "File Error","Could not create file"); + } + } + } while(saveError); // if the file could not be overwritten, ask for new file QFile::remove(tempLogfile); } -- 2.22.0