X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdialogs%2Fstoreprogress.cpp;h=a7f889e07940573c775bfbed361ec5b0823b161a;hp=bbb3881f5810c0907f2ce3efbb33148457e16a57;hb=e93f553816d1938ab1917dff497a36acec4257e3;hpb=3b68d03ddae96edb38a80f31bf6a990bde21cd1d diff --git a/pv/dialogs/storeprogress.cpp b/pv/dialogs/storeprogress.cpp index bbb3881f..a7f889e0 100644 --- a/pv/dialogs/storeprogress.cpp +++ b/pv/dialogs/storeprogress.cpp @@ -22,28 +22,35 @@ #include -#include "storeprogress.h" +#include "storeprogress.hpp" + +using std::map; +using std::string; + +using Glib::VariantBase; namespace pv { namespace dialogs { StoreProgress::StoreProgress(const QString &file_name, - const SigSession &session, QWidget *parent) : + const std::shared_ptr output_format, + const map &options, + const Session &session, QWidget *parent) : QProgressDialog(tr("Saving..."), tr("Cancel"), 0, 0, parent), - _session(file_name.toStdString(), session) + session_(file_name.toStdString(), output_format, options, session) { - connect(&_session, SIGNAL(progress_updated()), + connect(&session_, SIGNAL(progress_updated()), this, SLOT(on_progress_updated())); } StoreProgress::~StoreProgress() { - _session.wait(); + session_.wait(); } void StoreProgress::run() { - if (_session.start()) + if (session_.start()) show(); else show_error(); @@ -53,7 +60,7 @@ void StoreProgress::show_error() { QMessageBox msg(parentWidget()); msg.setText(tr("Failed to save session.")); - msg.setInformativeText(_session.error()); + msg.setInformativeText(session_.error()); msg.setStandardButtons(QMessageBox::Ok); msg.setIcon(QMessageBox::Warning); msg.exec(); @@ -61,25 +68,23 @@ void StoreProgress::show_error() void StoreProgress::closeEvent(QCloseEvent*) { - _session.cancel(); + session_.cancel(); } void StoreProgress::on_progress_updated() { - const std::pair p = _session.progress(); + const std::pair p = session_.progress(); assert(p.first <= p.second); - setValue(p.first); - setMaximum(p.second); - - const QString err = _session.error(); - if (!err.isEmpty()) { - show_error(); + if (p.second) { + setValue(p.first); + setMaximum(p.second); + } else { + const QString err = session_.error(); + if (!err.isEmpty()) + show_error(); close(); } - - if (p.first == p.second) - close(); } } // dialogs