X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fjob_view.cc;h=43d6f2fedd9ca90f44d4ec3e191fb673af560f2f;hb=7d293a3268c320f474d42fef15548635c3cb40b0;hp=a36d6de8a56680834d2697251d49e0fd2865f5f6;hpb=f1dbcec7552052856369631e77c5eb160badd619;p=dcpomatic.git diff --git a/src/wx/job_view.cc b/src/wx/job_view.cc index a36d6de8a..43d6f2fed 100644 --- a/src/wx/job_view.cc +++ b/src/wx/job_view.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2015 Carl Hetherington + Copyright (C) 2012-2018 Carl Hetherington This file is part of DCP-o-matic. @@ -21,12 +21,19 @@ #include "job_view.h" #include "wx_util.h" #include "lib/job.h" +#include "lib/job_manager.h" #include "lib/compose.hpp" +#include "lib/config.h" +#include "lib/send_notification_email_job.h" +#include "lib/transcode_job.h" +#include "lib/analyse_audio_job.h" #include using std::string; using std::min; using boost::shared_ptr; +using boost::bind; +using boost::dynamic_pointer_cast; JobView::JobView (shared_ptr job, wxWindow* parent, wxWindow* container, wxFlexGridSizer* table) : _job (job) @@ -66,7 +73,14 @@ JobView::setup () finish_setup (_container, _buttons); - _table->Insert (n, _buttons, 1, wxALIGN_CENTER_VERTICAL | wxALL, 3); + _controls = new wxBoxSizer (wxVERTICAL); + _controls->Add (_buttons); + _notify = new wxCheckBox (_container, wxID_ANY, _("Notify when complete")); + _notify->Bind (wxEVT_CHECKBOX, bind (&JobView::notify_clicked, this)); + _notify->SetValue (Config::instance()->default_notify()); + _controls->Add (_notify); + + _table->Insert (n, _controls, 1, wxALIGN_CENTER_VERTICAL | wxALL, 3); _progress_connection = _job->Progress.connect (boost::bind (&JobView::progress, this)); _finished_connection = _job->Finished.connect (boost::bind (&JobView::finished, this)); @@ -115,9 +129,22 @@ JobView::finished () } _cancel->Enable (false); + _notify->Enable (false); if (!_job->error_details().empty ()) { _details->Enable (true); } + + if ((dynamic_pointer_cast(_job) || dynamic_pointer_cast(_job)) && _notify->GetValue()) { + if (Config::instance()->notification(Config::MESSAGE_BOX)) { + wxMessageBox (std_to_wx(_job->name() + ": " + _job->status()), _("DCP-o-matic"), wxICON_INFORMATION); + } + if (Config::instance()->notification(Config::EMAIL)) { + string body = Config::instance()->notification_email(); + boost::algorithm::replace_all (body, "$JOB_NAME", _job->name()); + boost::algorithm::replace_all (body, "$JOB_STATUS", _job->status()); + JobManager::instance()->add_after (_job, shared_ptr (new SendNotificationEmailJob (body))); + } + } } void @@ -140,7 +167,7 @@ void JobView::insert (int pos) { _table->Insert (pos, _gauge_message, 1, wxEXPAND | wxLEFT | wxRIGHT); - _table->Insert (pos + 1, _buttons, 1, wxALIGN_CENTER_VERTICAL | wxALL, 3); + _table->Insert (pos + 1, _controls, 1, wxALIGN_CENTER_VERTICAL | wxALL, 3); _table->Layout (); } @@ -148,5 +175,11 @@ void JobView::detach () { _table->Detach (_gauge_message); - _table->Detach (_buttons); + _table->Detach (_controls); +} + +void +JobView::notify_clicked () +{ + Config::instance()->set_default_notify (_notify->GetValue ()); }