Rename player DCP directory to player content; ignore failures to load directories...
[dcpomatic.git] / src / lib / config.h
index 378272ff0a84159cdc524870d6dfb246e0e165ae..a25dab08a416e00c0e10d96df53608034e9846ca 100644 (file)
@@ -27,6 +27,7 @@
 
 #include "isdcf_metadata.h"
 #include "types.h"
+#include "edid.h"
 #include <dcp/name_format.h>
 #include <dcp/certificate_chain.h>
 #include <dcp/encrypted_kdm.h>
@@ -76,7 +77,8 @@ public:
                SOUND,
                SOUND_OUTPUT,
                INTERFACE_COMPLEXITY,
-               PLAYER_DCP_DIRECTORY,
+               PLAYER_CONTENT_DIRECTORY,
+               HISTORY,
 #ifdef DCPOMATIC_VARIANT_SWAROOP
                PLAYER_BACKGROUND_IMAGE,
 #endif
@@ -485,8 +487,8 @@ public:
                return _player_log_file;
        }
 
-       boost::optional<boost::filesystem::path> player_dcp_directory () const {
-               return _player_dcp_directory;
+       boost::optional<boost::filesystem::path> player_content_directory () const {
+               return _player_content_directory;
        }
 
        boost::optional<boost::filesystem::path> player_kdm_directory () const {
@@ -501,8 +503,28 @@ public:
        std::string kdm_server_url () const {
                return _kdm_server_url;
        }
+
+       std::string player_watermark_theatre () const {
+               return _player_watermark_theatre;
+       }
+
+       int player_watermark_period () const {
+               return _player_watermark_period;
+       }
+
+       int player_watermark_duration () const {
+               return _player_watermark_duration;
+       }
+
+       std::vector<Monitor> required_monitors () const {
+               return _required_monitors;
+       }
 #endif
 
+       bool allow_spl_editing () const {
+               return _allow_spl_editing;
+       }
+
        /* SET (mostly) */
 
        void set_master_encoding_threads (int n) {
@@ -925,16 +947,16 @@ public:
                changed ();
        }
 
-       void set_player_dcp_directory (boost::filesystem::path p) {
-               maybe_set (_player_dcp_directory, p, PLAYER_DCP_DIRECTORY);
+       void set_player_content_directory (boost::filesystem::path p) {
+               maybe_set (_player_content_directory, p, PLAYER_CONTENT_DIRECTORY);
        }
 
-       void unset_player_dcp_directory () {
-               if (!_player_dcp_directory) {
+       void unset_player_content_directory () {
+               if (!_player_content_directory) {
                        return;
                }
-               _player_dcp_directory = boost::none;
-               changed (PLAYER_DCP_DIRECTORY);
+               _player_content_directory = boost::none;
+               changed (PLAYER_CONTENT_DIRECTORY);
        }
 
        void set_player_kdm_directory (boost::filesystem::path p) {
@@ -965,8 +987,28 @@ public:
        void set_kdm_server_url (std::string s) {
                maybe_set (_kdm_server_url, s);
        }
+
+       void set_player_watermark_theatre (std::string p) {
+               maybe_set (_player_watermark_theatre, p);
+       }
+
+       void set_player_watermark_period (int minutes) {
+               maybe_set (_player_watermark_period, minutes);
+       }
+
+       void set_player_watermark_duration (int milliseconds) {
+               maybe_set (_player_watermark_duration, milliseconds);
+       }
+
+       void set_required_monitors (std::vector<Monitor> monitors) {
+               maybe_set (_required_monitors, monitors);
+       }
 #endif
 
+       void set_allow_spl_editing (bool s) {
+               maybe_set (_allow_spl_editing, s);
+       }
+
        void changed (Property p = OTHER);
        boost::signals2::signal<void (Property)> Changed;
        /** Emitted if read() failed on an existing Config file.  There is nothing
@@ -985,6 +1027,7 @@ public:
        void write_cinemas () const;
        void link (boost::filesystem::path new_file) const;
        void copy_and_link (boost::filesystem::path new_file) const;
+       bool have_write_permission () const;
 
        void save_template (boost::shared_ptr<const Film> film, std::string name) const;
        bool existing_template (std::string name) const;
@@ -998,13 +1041,13 @@ public:
        static void restore_defaults ();
        static bool have_existing (std::string);
        static boost::filesystem::path config_file ();
+       static boost::filesystem::path path (std::string file, bool create_directories = true);
 
        /** If set, this overrides the standard path (in home, Library, AppData or wherever) for config.xml and cinemas.xml */
        static boost::optional<boost::filesystem::path> override_path;
 
 private:
        Config ();
-       static boost::filesystem::path path (std::string file, bool create_directories = true);
        void read ();
        void set_defaults ();
        void set_kdm_email_to_default ();
@@ -1157,12 +1200,19 @@ private:
            in the dual-screen player mode.  DCPs on the list can be loaded
            for playback.
        */
-       boost::optional<boost::filesystem::path> _player_dcp_directory;
+       boost::optional<boost::filesystem::path> _player_content_directory;
        boost::optional<boost::filesystem::path> _player_kdm_directory;
 #ifdef DCPOMATIC_VARIANT_SWAROOP
        boost::optional<boost::filesystem::path> _player_background_image;
        std::string _kdm_server_url;
+       std::string _player_watermark_theatre;
+       /** watermark period in minutes */
+       int _player_watermark_period;
+       /** watermark duration in milliseconds */
+       int _player_watermark_duration;
+       std::vector<Monitor> _required_monitors;
 #endif
+       bool _allow_spl_editing;
 
        static int const _current_version;