Allow _film to be 0.
[dcpomatic.git] / src / lib / send_problem_report_job.cc
index b2eb4e25dcbf72bde9dfddb897b761ba3f1e7cbc..d0532a0479cf51d551c9dc48696d2307a7e1e3bb 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2014-2015 Carl Hetherington <cth@carlh.net>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -24,6 +24,7 @@
 #include "film.h"
 #include "log.h"
 #include "quickmail.h"
+#include "version.h"
 
 #include "i18n.h"
 
@@ -31,6 +32,7 @@ using std::string;
 using std::list;
 using boost::shared_ptr;
 
+/** @param film Film thta the problem is with, or 0 */
 SendProblemReportJob::SendProblemReportJob (
        shared_ptr<const Film> film,
        string from,
@@ -46,39 +48,54 @@ SendProblemReportJob::SendProblemReportJob (
 string
 SendProblemReportJob::name () const
 {
+       if (!_film) {
+               return _("Email problem report");
+       }
+
        return String::compose (_("Email problem report for %1"), _film->name());
 }
 
+string
+SendProblemReportJob::json_name () const
+{
+       return N_("send_problem_report");
+}
+
 void
 SendProblemReportJob::run ()
 {
+       sub (_("Sending email"));
        set_progress_unknown ();
-       
+
        quickmail mail = quickmail_create (_from.c_str(), "DCP-o-matic problem report");
-       
+
        quickmail_add_to (mail, "carl@dcpomatic.com");
-       
+
        string body = _summary + "\n\n";
-       
-       body += "log head and tail:\n";
-       body += "---<8----\n";
-       body += _film->log()->head_and_tail ();
-       body += "---<8----\n\n";
 
-       add_file (body, "ffprobe.log");
-       add_file (body, "metadata.xml");
+       body += "Version: " + string (dcpomatic_version) + " " + string (dcpomatic_git_commit) + "\n\n";
+
+       if (_film) {
+               body += "log head and tail:\n";
+               body += "---<8----\n";
+               body += _film->log()->head_and_tail (4096);
+               body += "---<8----\n\n";
+
+               add_file (body, "ffprobe.log");
+               add_file (body, "metadata.xml");
+       }
 
        quickmail_set_body (mail, body.c_str());
-       
+
        char const* error = quickmail_send (mail, "main.carlh.net", 2525, 0, 0);
-       
+
        if (error) {
                set_state (FINISHED_ERROR);
                set_error (error, "");
        } else {
                set_state (FINISHED_OK);
        }
-       
+
        quickmail_destroy (mail);
 
        set_progress (1);
@@ -91,7 +108,7 @@ SendProblemReportJob::add_file (string& body, boost::filesystem::path file) cons
        if (!f) {
                return;
        }
-       
+
        body += file.string() + ":\n";
        body += "---<8----\n";
        uintmax_t const size = boost::filesystem::file_size (_film->file (file));