X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fwx%2Fjob_view.cc;h=9a1a12ca72a0fc3b45a10f8c5f61cd1f65db7788;hb=2115fca942897260bb338c8093ada5186d9b775d;hp=4aa2e3c2bdd98b305b8eced6889ee72a5b85c57b;hpb=80f6d818e43d3ce2bd2d81f1bd3bbd4160c28aea;p=dcpomatic.git diff --git a/src/wx/job_view.cc b/src/wx/job_view.cc index 4aa2e3c2b..9a1a12ca7 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,18 @@ #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 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 +72,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 +128,22 @@ JobView::finished () } _cancel->Enable (false); + _notify->Enable (false); if (!_job->error_details().empty ()) { _details->Enable (true); } + + if (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 (shared_ptr (new SendNotificationEmailJob (body))); + } + } } void @@ -125,7 +151,7 @@ JobView::details_clicked (wxCommandEvent &) { string s = _job->error_summary(); s[0] = toupper (s[0]); - error_dialog (_parent, std_to_wx (String::compose ("%1.\n\n%2", s, _job->error_details()))); + error_dialog (_parent, std_to_wx(s), std_to_wx(_job->error_details())); } void @@ -140,7 +166,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 +174,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 ()); }