X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fdkdm_wrapper.cc;h=0dd37b464c6db6453a1bfc2d56459b48321dca9a;hp=316a0581ee058418291a164345b19b702fff9ae6;hb=1befa3d286a5016e897f1a23cc60cd3d3b96e63a;hpb=bfb8c684886592f325f85c490d9f0aafd7056734 diff --git a/src/lib/dkdm_wrapper.cc b/src/lib/dkdm_wrapper.cc index 316a0581e..0dd37b464 100644 --- a/src/lib/dkdm_wrapper.cc +++ b/src/lib/dkdm_wrapper.cc @@ -34,6 +34,10 @@ DKDMBase::read (cxml::ConstNodePtr node) { if (node->name() == "DKDM") { return shared_ptr (new DKDM (dcp::EncryptedKDM (node->content ()))); +#ifdef DCPOMATIC_VARIANT_SWAROOP + } else if (node->name() == "ECinemaDKDM") { + return shared_ptr (new ECinemaDKDM(EncryptedECinemaKDM(node->content()))); +#endif } else if (node->name() == "DKDMGroup") { shared_ptr group (new DKDMGroup (node->string_attribute ("Name"))); BOOST_FOREACH (cxml::ConstNodePtr i, node->node_children()) { @@ -60,6 +64,20 @@ DKDM::as_xml (xmlpp::Element* node) const node->add_child("DKDM")->add_child_text (_dkdm.as_xml ()); } +#ifdef DCPOMATIC_VARIANT_SWAROOP +string +ECinemaDKDM::name () const +{ + return String::compose ("%1 (%2)", _dkdm.name(), _dkdm.id()); +} + +void +ECinemaDKDM::as_xml (xmlpp::Element* node) const +{ + node->add_child("ECinemaDKDM")->add_child_text (_dkdm.as_xml()); +} +#endif + void DKDMGroup::as_xml (xmlpp::Element* node) const { @@ -71,10 +89,19 @@ DKDMGroup::as_xml (xmlpp::Element* node) const } void -DKDMGroup::add (shared_ptr child) +DKDMGroup::add (shared_ptr child, shared_ptr previous) { DCPOMATIC_ASSERT (child); - _children.push_back (child); + if (previous) { + list >::iterator i = find (_children.begin(), _children.end(), previous); + if (i != _children.end ()) { + ++i; + } + _children.insert (i, child); + } else { + _children.push_back (child); + } + child->set_parent (dynamic_pointer_cast (shared_from_this ())); } void @@ -83,6 +110,7 @@ DKDMGroup::remove (shared_ptr child) for (list >::iterator i = _children.begin(); i != _children.end(); ++i) { if (*i == child) { _children.erase (i); + child->set_parent (shared_ptr ()); return; } shared_ptr g = dynamic_pointer_cast (*i);