Add approximate finish time to progress on jobs (#927).
authorCarl Hetherington <cth@carlh.net>
Wed, 21 Dec 2016 16:15:16 +0000 (16:15 +0000)
committerCarl Hetherington <cth@carlh.net>
Wed, 21 Dec 2016 16:15:16 +0000 (16:15 +0000)
src/lib/job.cc
src/lib/transcoder.cc

index 1676928632164410582e179c97d5e3c5e7842c33..dba21f91cdf031362116468df543cca9eda19062 100644 (file)
@@ -34,6 +34,7 @@
 #include <boost/thread.hpp>
 #include <boost/filesystem.hpp>
 #include <boost/foreach.hpp>
+#include <boost/date_time/posix_time/posix_time.hpp>
 #include <iostream>
 
 #include "i18n.h"
@@ -411,9 +412,22 @@ Job::status () const
                s += buffer;
 
                if (t > 10 && r > 0) {
-                       /// TRANSLATORS: remaining here follows an amount of time that is remaining
-                       /// on an operation.
-                       s += "; " + seconds_to_approximate_hms (r) + " " + _("remaining");
+                       boost::posix_time::ptime now = boost::posix_time::second_clock::local_time();
+                       boost::posix_time::ptime finish = now + boost::posix_time::seconds(r);
+                       char finish_string[6];
+                       snprintf (finish_string, sizeof(finish_string), "%02d:%02d", finish.time_of_day().hours(), finish.time_of_day().minutes());
+                       string day;
+                       if (now.date() != finish.date()) {
+                               /// TRANSLATORS: the %1 in this string will be filled in with a day of the week
+                               /// to say what day a job will finish.
+                               day = String::compose (_(" on %1"), finish.date().day_of_week().as_long_string());
+                       }
+                       /// TRANSLATORS: "remaining; finishing at" here follows an amount of time that is remaining
+                       /// on an operation; after it is an estimated wall-clock completion time.
+                       s += String::compose(
+                               _("; %1 remaining; finishing at %2%3"),
+                               seconds_to_approximate_hms(r), finish_string, day
+                               );
                }
        } else if (finished_ok ()) {
                s = String::compose (_("OK (ran for %1)"), seconds_to_hms (_ran_for));
index c667a1486e61ee4fd8e70337ce416ffa422c67f9..ee099c7df3f427a59ceccb1c3dc66a3d273214ef 100644 (file)
@@ -74,7 +74,7 @@ Transcoder::go ()
        {
                shared_ptr<Job> job = _job.lock ();
                DCPOMATIC_ASSERT (job);
-               job->sub (_("Encoding picture and sound"));
+               job->sub (_("Encoding"));
        }
 
        DCPTime const frame = DCPTime::from_frames (1, _film->video_frame_rate ());