X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdialogs%2Fstoreprogress.cpp;h=2bca3476c434b53ff65e99b4774145dbff248592;hp=4ef3404594ecc1a26100e90add78cd5653fef543;hb=970fca0d353f5c6d05c763bf7bdd12aac6f5ea0b;hpb=6f925ba9d6faf1077b73c5a5808259576081716a diff --git a/pv/dialogs/storeprogress.cpp b/pv/dialogs/storeprogress.cpp index 4ef3404..2bca347 100644 --- a/pv/dialogs/storeprogress.cpp +++ b/pv/dialogs/storeprogress.cpp @@ -19,6 +19,7 @@ #include +#include #include #include "pv/session.hpp" @@ -48,6 +49,19 @@ StoreProgress::StoreProgress(const QString &file_name, this, SLOT(on_progress_updated())); connect(&session_, SIGNAL(store_successful()), &session, SLOT(on_data_saved())); + + // Since we're not setting any progress in case of an error, the dialog + // will pop up after the minimumDuration time has been reached - 4000 ms + // by default. + // We do not want this as it overlaps with the error message box, so we + // set the minimumDuration to 0 so that it only appears when we feed it + // progress data. Then, call reset() to prevent the progress dialog from + // popping up anyway. This would happen in Qt5 because the behavior was + // changed in such a way that the duration timer is started by the + // constructor. We don't want that and reset() stops the timer, so we + // use it. + setMinimumDuration(0); + reset(); } StoreProgress::~StoreProgress() @@ -65,17 +79,24 @@ void StoreProgress::run() void StoreProgress::show_error() { + qDebug() << "Error trying to save:" << session_.error(); + QMessageBox msg(parentWidget()); - msg.setText(tr("Failed to save session.")); - msg.setInformativeText(session_.error()); + msg.setText(tr("Failed to save session.") + "\n\n" + session_.error()); msg.setStandardButtons(QMessageBox::Ok); msg.setIcon(QMessageBox::Warning); msg.exec(); + + close(); } void StoreProgress::closeEvent(QCloseEvent*) { session_.cancel(); + + // Closing doesn't mean we're going to be destroyed because our parent + // still owns our handle. Make sure this stale instance doesn't hang around. + deleteLater(); } void StoreProgress::on_progress_updated() @@ -94,5 +115,5 @@ void StoreProgress::on_progress_updated() } } -} // dialogs -} // pv +} // namespace dialogs +} // namespace pv