X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdialogs%2Fstoreprogress.cpp;h=a7f889e07940573c775bfbed361ec5b0823b161a;hp=e0f670d325d7e71bee51ad2c36db1cb78d0e415e;hb=e93f553816d1938ab1917dff497a36acec4257e3;hpb=0fbda3c2dda9357776afa15e99c037eb0cc97214 diff --git a/pv/dialogs/storeprogress.cpp b/pv/dialogs/storeprogress.cpp index e0f670d3..a7f889e0 100644 --- a/pv/dialogs/storeprogress.cpp +++ b/pv/dialogs/storeprogress.cpp @@ -18,28 +18,39 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "storeprogress.h" +#include + +#include + +#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(); @@ -49,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(); @@ -57,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