- return can_reference (bind (&Content::subtitle, _1), _("There is other subtitle content overlapping this DCP; remove it."), why_not);
+ /// TRANSLATORS: this string will follow "Cannot reference this DCP: "
+ return can_reference (bind (&check_text, _1), _("it overlaps other text content; remove the other content."), why_not);
+}
+
+void
+DCPContent::take_settings_from (shared_ptr<const Content> c)
+{
+ shared_ptr<const DCPContent> dc = dynamic_pointer_cast<const DCPContent> (c);
+ if (!dc) {
+ return;
+ }
+
+ _reference_video = dc->_reference_video;
+ _reference_audio = dc->_reference_audio;
+ for (int i = 0; i < TEXT_COUNT; ++i) {
+ _reference_text[i] = dc->_reference_text[i];
+ }
+}
+
+void
+DCPContent::set_cpl (string id)
+{
+ ChangeSignaller<Content> cc (this, DCPContentProperty::CPL);
+
+ {
+ boost::mutex::scoped_lock lm (_mutex);
+ _cpl = id;
+ }
+}
+
+bool
+DCPContent::kdm_timing_window_valid () const
+{
+ if (!_kdm) {
+ return true;
+ }
+
+ dcp::LocalTime now;
+ return _kdm->not_valid_before() < now && now < _kdm->not_valid_after();