From 87f14a309bdf6be7471ddb8c2970d1cd7aab2890 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sat, 14 Dec 2024 20:15:24 +0100 Subject: Move responsibility for reading the content store into the applications. --- src/tools/dcpomatic_player.cc | 4 ++++ src/tools/dcpomatic_playlist.cc | 2 ++ src/wx/content_view.cc | 19 +------------------ src/wx/playlist_controls.cc | 1 - src/wx/wx_util.cc | 23 +++++++++++++++++++++++ src/wx/wx_util.h | 1 + 6 files changed, 31 insertions(+), 19 deletions(-) diff --git a/src/tools/dcpomatic_player.cc b/src/tools/dcpomatic_player.cc index 0a45988a7..5bd042db8 100644 --- a/src/tools/dcpomatic_player.cc +++ b/src/tools/dcpomatic_player.cc @@ -252,6 +252,10 @@ public: Bind(wxEVT_CLOSE_WINDOW, boost::bind(&DOMFrame::close, this, _1)); + if (Config::instance()->player_mode() == Config::PLAYER_MODE_DUAL || Config::instance()->enable_player_http_server()) { + update_content_store(); + } + if (Config::instance()->player_mode() == Config::PLAYER_MODE_DUAL) { auto pc = new PlaylistControls (_overall_panel, _viewer); _controls = pc; diff --git a/src/tools/dcpomatic_playlist.cc b/src/tools/dcpomatic_playlist.cc index 11d162365..4f6ea59e7 100644 --- a/src/tools/dcpomatic_playlist.cc +++ b/src/tools/dcpomatic_playlist.cc @@ -665,6 +665,8 @@ private: */ Config::drop (); + update_content_store(); + _frame = new DOMFrame(variant::wx::dcpomatic_playlist_editor()); SetTopWindow (_frame); _frame->Maximize (); diff --git a/src/wx/content_view.cc b/src/wx/content_view.cc index fb0afd976..f3c11fa04 100644 --- a/src/wx/content_view.cc +++ b/src/wx/content_view.cc @@ -78,28 +78,11 @@ ContentView::selected () const void ContentView::update () { - auto dir = Config::instance()->player_content_directory(); - if (!dir || !dcp::filesystem::is_directory(*dir)) { - dir = home_directory (); - } - - wxProgressDialog progress(variant::wx::dcpomatic(), _("Reading content directory")); - - auto store = ContentStore::instance(); - - auto errors = store->update([&progress]() { - return progress.Pulse(); - }); - DeleteAllItems (); _content_digests.clear(); - for (auto content: store->all()) { + for (auto content: ContentStore::instance()->all()) { add(content); } - - for (auto error: errors) { - error_dialog(this, std_to_wx(error.first), std_to_wx(error.second)); - } } diff --git a/src/wx/playlist_controls.cc b/src/wx/playlist_controls.cc index 454f441dc..0f88f2881 100644 --- a/src/wx/playlist_controls.cc +++ b/src/wx/playlist_controls.cc @@ -121,7 +121,6 @@ PlaylistControls::PlaylistControls(wxWindow* parent, FilmViewer& viewer) _refresh_spl_view->Bind (wxEVT_BUTTON, boost::bind(&PlaylistControls::update_playlist_directory, this)); _refresh_content_view->Bind (wxEVT_BUTTON, boost::bind(&ContentView::update, _content_view)); - _content_view->update (); update_playlist_directory (); } diff --git a/src/wx/wx_util.cc b/src/wx/wx_util.cc index b1cd873fc..bc2d593f1 100644 --- a/src/wx/wx_util.cc +++ b/src/wx/wx_util.cc @@ -33,6 +33,7 @@ #include "wx_util.h" #include "wx_variant.h" #include "lib/config.h" +#include "lib/content_store.h" #include "lib/cross.h" #include "lib/job.h" #include "lib/job_manager.h" @@ -842,3 +843,25 @@ layout_for_short_screen(wxWindow* reference) return sn >= 0 && wxDisplay(sn).GetClientArea().height <= 800; } + +void +update_content_store() +{ + auto dir = Config::instance()->player_content_directory(); + if (!dir || !dcp::filesystem::is_directory(*dir)) { + dir = home_directory (); + } + + wxProgressDialog progress(variant::wx::dcpomatic(), _("Reading content directory")); + + auto store = ContentStore::instance(); + + auto errors = store->update([&progress]() { + return progress.Pulse(); + }); + + for (auto error: errors) { + error_dialog(nullptr, std_to_wx(error.first), std_to_wx(error.second)); + } +} + diff --git a/src/wx/wx_util.h b/src/wx/wx_util.h index a101a8498..6c3f12ef2 100644 --- a/src/wx/wx_util.h +++ b/src/wx/wx_util.h @@ -126,6 +126,7 @@ extern double dpi_scale_factor (wxWindow* window); extern int search_ctrl_height (); extern void report_config_load_failure(wxWindow* parent, Config::LoadFailure what); extern bool layout_for_short_screen(wxWindow* reference); +extern void update_content_store(); struct Offset -- cgit v1.2.3