X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fdcp_text_track.cc;h=0bd75127541ac7be96abf6854426aaf46df06446;hb=ff639b3cf30afcc097bfd21d39c8d15f466cadd6;hp=2d3d9fe10d81539b74892787df333a41b9a6c74a;hpb=5aa057f73c9b5d0f2a4a1479bd75dee849250265;p=dcpomatic.git diff --git a/src/lib/dcp_text_track.cc b/src/lib/dcp_text_track.cc index 2d3d9fe10..0bd751275 100644 --- a/src/lib/dcp_text_track.cc +++ b/src/lib/dcp_text_track.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2018 Carl Hetherington + Copyright (C) 2018-2021 Carl Hetherington This file is part of DCP-o-matic. @@ -18,46 +18,71 @@ */ + #include "dcp_text_track.h" #include "compose.hpp" #include +#include "i18n.h" + + using std::string; +using boost::optional; + DCPTextTrack::DCPTextTrack (cxml::ConstNodePtr node) { name = node->string_child("Name"); - language = node->string_child("Language"); + if (auto lang = node->optional_string_child("Language")) { + language = dcp::LanguageTag(*lang); + } } -DCPTextTrack::DCPTextTrack (string name_, string language_) + +DCPTextTrack::DCPTextTrack (string name_, optional language_) : name (name_) , language (language_) { } + string DCPTextTrack::summary () const { - return String::compose("%1 (%2)", name, language); + return String::compose("%1 (%2)", name, language ? language->to_string() : _("Unknown")); } void DCPTextTrack::as_xml (xmlpp::Element* parent) const { parent->add_child("Name")->add_child_text(name); - parent->add_child("Language")->add_child_text(language); + if (language) { + parent->add_child("Language")->add_child_text(language->to_string()); + } } + bool operator== (DCPTextTrack const & a, DCPTextTrack const & b) { return a.name == b.name && a.language == b.language; } + bool operator!= (DCPTextTrack const & a, DCPTextTrack const & b) { return !(a == b); } + + +bool +operator< (DCPTextTrack const & a, DCPTextTrack const & b) +{ + if (a.name != b.name) { + return a.name < b.name; + } + + return a.language < b.language; +}