From 2c6fbbf9043e61ca4492f0fba919f0927b7b6874 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 15 Oct 2025 23:09:36 +0200 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 | 21 +-------------------- src/wx/playlist_controls.cc | 1 - src/wx/wx_util.cc | 20 ++++++++++++++++++++ src/wx/wx_util.h | 1 + 6 files changed, 28 insertions(+), 21 deletions(-) diff --git a/src/tools/dcpomatic_player.cc b/src/tools/dcpomatic_player.cc index 5f6d44704..30a8d1071 100644 --- a/src/tools/dcpomatic_player.cc +++ b/src/tools/dcpomatic_player.cc @@ -261,6 +261,10 @@ public: Bind(wxEVT_CLOSE_WINDOW, boost::bind(&DOMFrame::close, this, _1)); + if (Config::instance()->player_mode() == Config::PlayerMode::DUAL || Config::instance()->enable_player_http_server()) { + update_content_store(); + } + if (Config::instance()->player_mode() == Config::PlayerMode::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 46b6dbdb6..053927232 100644 --- a/src/tools/dcpomatic_playlist.cc +++ b/src/tools/dcpomatic_playlist.cc @@ -690,6 +690,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 552df6fd7..ba47e8c9f 100644 --- a/src/wx/content_view.cc +++ b/src/wx/content_view.cc @@ -81,28 +81,9 @@ 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 = ShowPlaylistContentStore::instance(); - - auto errors = store->update([&progress]() { - return progress.Pulse(); - }); - - DeleteAllItems(); - _content.clear(); - for (auto content: store->all()) { + for (auto content: ShowPlaylistContentStore::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 1b949349d..2d86b5227 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 71f5c092d..0014a6e33 100644 --- a/src/wx/wx_util.cc +++ b/src/wx/wx_util.cc @@ -35,6 +35,7 @@ #include "lib/cross.h" #include "lib/job.h" #include "lib/job_manager.h" +#include "lib/show_playlist_content_store.h" #include "lib/util.h" #include "lib/variant.h" #include "lib/version.h" @@ -781,3 +782,22 @@ dcpomatic::wx::link_bitmap_path() return bitmap_path(gui_is_dark() ? "link_white.png" : "link_black.png"); } + +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 = ShowPlaylistContentStore::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 76d2f8ea7..cb81d0683 100644 --- a/src/wx/wx_util.h +++ b/src/wx/wx_util.h @@ -124,6 +124,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