diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-03-20 08:38:25 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-03-22 09:56:55 +0100 |
| commit | d461d2685050842cb86875f5a5aa62505779b9ed (patch) | |
| tree | 04dc973c71ad70c8a9ada6b216079b666aa360d4 /src/lib | |
| parent | aed5d7b60b78ed6485f617dde4db9edca853d525 (diff) | |
Add simpler language tag dialog (#1931).
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/config.cc | 24 | ||||
| -rw-r--r-- | src/lib/config.h | 8 |
2 files changed, 32 insertions, 0 deletions
diff --git a/src/lib/config.cc b/src/lib/config.cc index 23b06f2e4..0dcc84117 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -176,6 +176,7 @@ Config::set_defaults () _player_kdm_directory = boost::none; _audio_mapping = boost::none; _minimum_frame_size = 65536; + _custom_languages.clear (); _allowed_dcp_frame_rates.clear (); _allowed_dcp_frame_rates.push_back (24); @@ -552,6 +553,15 @@ try _minimum_frame_size = f.optional_number_child<int>("MinimumFrameSize").get_value_or(65536); + for (auto i: f.node_children("CustomLanguage")) { + try { + /* This will fail if it's called before dcp::init() as it won't recognise the + * tag. That's OK because the Config will be reloaded again later. + */ + _custom_languages.push_back (dcp::LanguageTag(i->content())); + } catch (std::runtime_error& e) {} + } + if (boost::filesystem::exists (_cinemas_file)) { cxml::Document f ("Cinemas"); f.read_file (_cinemas_file); @@ -981,6 +991,9 @@ Config::write_config () const _audio_mapping->as_xml (root->add_child("AudioMapping")); } root->add_child("MinimumFrameSize")->add_child_text(raw_convert<string>(_minimum_frame_size)); + for (auto const& i: _custom_languages) { + root->add_child("CustomLanguage")->add_child_text(i.to_string()); + } try { auto const s = doc.write_to_string_formatted (); @@ -1420,3 +1433,14 @@ Config::set_audio_mapping_to_default () _audio_mapping = audio_mapping (ch); changed (AUDIO_MAPPING); } + + +void +Config::add_custom_language (dcp::LanguageTag tag) +{ + if (find(_custom_languages.begin(), _custom_languages.end(), tag) == _custom_languages.end()) { + _custom_languages.push_back (tag); + changed (); + } +} + diff --git a/src/lib/config.h b/src/lib/config.h index 0e8fccb53..3371e48bf 100644 --- a/src/lib/config.h +++ b/src/lib/config.h @@ -33,6 +33,7 @@ #include <dcp/name_format.h> #include <dcp/certificate_chain.h> #include <dcp/encrypted_kdm.h> +#include <dcp/language_tag.h> #include <boost/signals2.hpp> #include <boost/filesystem.hpp> #include <vector> @@ -540,6 +541,10 @@ public: return _minimum_frame_size; } + std::vector<dcp::LanguageTag> custom_languages () const { + return _custom_languages; + } + /* SET (mostly) */ void set_master_encoding_threads (int n) { @@ -1055,6 +1060,8 @@ public: maybe_set (_minimum_frame_size, size); } + void add_custom_language (dcp::LanguageTag tag); + void changed (Property p = OTHER); boost::signals2::signal<void (Property)> Changed; /** Emitted if read() failed on an existing Config file. There is nothing @@ -1269,6 +1276,7 @@ private: boost::optional<boost::filesystem::path> _player_kdm_directory; boost::optional<AudioMapping> _audio_mapping; int _minimum_frame_size; + std::vector<dcp::LanguageTag> _custom_languages; static int const _current_version; |
