swaroop: encrypt decryption private key with motherboard UUID.
[dcpomatic.git] / src / lib / config.h
index a470bf391ab02bdefed27c1d9cf81b7d08e3e261..e28928226c59c43d36c4ceed2fa6829e62ff388b 100644 (file)
@@ -77,7 +77,9 @@ public:
                SOUND,
                SOUND_OUTPUT,
                INTERFACE_COMPLEXITY,
-               PLAYER_DCP_DIRECTORY,
+               PLAYER_CONTENT_DIRECTORY,
+               PLAYER_PLAYLIST_DIRECTORY,
+               HISTORY,
 #ifdef DCPOMATIC_VARIANT_SWAROOP
                PLAYER_BACKGROUND_IMAGE,
 #endif
@@ -486,8 +488,12 @@ 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_playlist_directory () const {
+               return _player_playlist_directory;
        }
 
        boost::optional<boost::filesystem::path> player_kdm_directory () const {
@@ -518,6 +524,10 @@ public:
        std::vector<Monitor> required_monitors () const {
                return _required_monitors;
        }
+
+       boost::optional<boost::filesystem::path> player_lock_file () const {
+               return _player_lock_file;
+       }
 #endif
 
        /* SET (mostly) */
@@ -942,16 +952,28 @@ 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_playlist_directory (boost::filesystem::path p) {
+               maybe_set (_player_playlist_directory, p, PLAYER_PLAYLIST_DIRECTORY);
+       }
+
+       void unset_player_playlist_directory () {
+               if (!_player_playlist_directory) {
+                       return;
+               }
+               _player_playlist_directory = boost::none;
+               changed (PLAYER_PLAYLIST_DIRECTORY);
        }
 
        void set_player_kdm_directory (boost::filesystem::path p) {
@@ -998,6 +1020,18 @@ public:
        void set_required_monitors (std::vector<Monitor> monitors) {
                maybe_set (_required_monitors, monitors);
        }
+
+       void set_player_lock_file (boost::filesystem::path p) {
+               maybe_set (_player_lock_file, p);
+       }
+
+       void unset_player_lock_file () {
+               if (!_player_lock_file) {
+                       return;
+               }
+               _player_lock_file = boost::none;
+               changed ();
+       }
 #endif
 
        void changed (Property p = OTHER);
@@ -1032,13 +1066,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 ();
@@ -1049,6 +1083,9 @@ private:
        boost::filesystem::path directory_or (boost::optional<boost::filesystem::path> dir, boost::filesystem::path a) const;
        void add_to_history_internal (std::vector<boost::filesystem::path>& h, boost::filesystem::path p);
        void backup ();
+#ifdef DCPOMATIC_VARIANT_SWAROOP
+       dcp::Data key_from_uuid () const;
+#endif
 
        template <class T>
        void maybe_set (T& member, T new_value, Property prop = OTHER) {
@@ -1191,7 +1228,8 @@ 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_playlist_directory;
        boost::optional<boost::filesystem::path> _player_kdm_directory;
 #ifdef DCPOMATIC_VARIANT_SWAROOP
        boost::optional<boost::filesystem::path> _player_background_image;
@@ -1202,6 +1240,8 @@ private:
        /** watermark duration in milliseconds */
        int _player_watermark_duration;
        std::vector<Monitor> _required_monitors;
+       /** a file which, if specified, must be present for the player to work */
+       boost::optional<boost::filesystem::path> _player_lock_file;
 #endif
 
        static int const _current_version;