#include <cassert>
+#include <QDebug>
#include <QMessageBox>
#include "pv/session.hpp"
const Session &session, QWidget *parent) :
QProgressDialog(tr("Saving..."), tr("Cancel"), 0, 0, parent),
session_(file_name.toStdString(), output_format, options, sample_range,
- session)
+ session),
+ showing_error_(false)
{
connect(&session_, SIGNAL(progress_updated()),
this, SLOT(on_progress_updated()));
connect(&session_, SIGNAL(store_successful()),
&session, SLOT(on_data_saved()));
+ connect(this, SIGNAL(canceled()), this, SLOT(on_cancel()));
// 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
void StoreProgress::show_error()
{
+ showing_error_ = true;
+
+ 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();
setMaximum(p.second);
} else {
const QString err = session_.error();
- if (!err.isEmpty())
+ if (err.isEmpty())
+ close();
+ else if (!showing_error_)
show_error();
- close();
}
}
+void StoreProgress::on_cancel()
+{
+ session_.cancel();
+}
+
} // namespace dialogs
} // namespace pv