Fix some places where we have a full Cinema/Screen object available...
authorCarl Hetherington <cth@carlh.net>
Thu, 16 Jan 2025 23:33:25 +0000 (00:33 +0100)
committerCarl Hetherington <cth@carlh.net>
Wed, 22 Jan 2025 13:34:25 +0000 (14:34 +0100)
...but then ignore it and look it all up again in the database.

src/wx/screens_panel.cc
src/wx/screens_panel.h

index 88a2b6adcff0b8f5132b9aa211d6dcd729c58da8..a9f96b551b1c8a1327941dfd312946e59a6c0a7a 100644 (file)
@@ -199,14 +199,11 @@ ScreensPanel::matches_search(Cinema const& cinema, string search)
 
 /** Add an existing cinema to the GUI */
 optional<wxTreeListItem>
-ScreensPanel::add_cinema(CinemaID cinema_id, wxTreeListItem previous)
+ScreensPanel::add_cinema(CinemaID cinema_id, Cinema const& cinema, wxTreeListItem previous)
 {
        CinemaList cinemas;
-       auto cinema = cinemas.cinema(cinema_id);
-       DCPOMATIC_ASSERT(cinema);
-
        auto const search = wx_to_std(_search->GetValue());
-       if (!matches_search(*cinema, search)) {
+       if (!matches_search(cinema, search)) {
                return {};
        }
 
@@ -224,13 +221,13 @@ ScreensPanel::add_cinema(CinemaID cinema_id, wxTreeListItem previous)
                }
        }
 
-       auto id = _targets->InsertItem(_targets->GetRootItem(), previous, std_to_wx(cinema->name));
+       auto id = _targets->InsertItem(_targets->GetRootItem(), previous, std_to_wx(cinema.name));
 
        _item_to_cinema.emplace(make_pair(id, cinema_id));
        _cinema_to_item[cinema_id] = id;
 
        for (auto screen: screens) {
-               add_screen(cinema_id, screen.first);
+               add_screen(cinema_id, screen.first, screen.second);
        }
 
        return id;
@@ -239,7 +236,7 @@ ScreensPanel::add_cinema(CinemaID cinema_id, wxTreeListItem previous)
 
 /** Add an existing screen to the GUI */
 optional<wxTreeListItem>
-ScreensPanel::add_screen(CinemaID cinema_id, ScreenID screen_id)
+ScreensPanel::add_screen(CinemaID cinema_id, ScreenID screen_id, Screen const& screen)
 {
        auto item = cinema_to_item(cinema_id);
        if (!item) {
@@ -247,10 +244,8 @@ ScreensPanel::add_screen(CinemaID cinema_id, ScreenID screen_id)
        }
 
        CinemaList cinemas;
-       auto screen = cinemas.screen(screen_id);
-       DCPOMATIC_ASSERT(screen);
 
-       auto id = _targets->AppendItem(*item, std_to_wx(screen->name));
+       auto id = _targets->AppendItem(*item, std_to_wx(screen.name));
 
        _item_to_screen.emplace(make_pair(id, make_pair(cinema_id, screen_id)));
        _screen_to_item[screen_id] = id;
@@ -289,7 +284,7 @@ ScreensPanel::add_cinema_clicked ()
                        previous = *item;
                }
 
-               auto item = add_cinema(cinema_id, found ? previous : wxTLI_LAST);
+               auto item = add_cinema(cinema_id, cinema, found ? previous : wxTLI_LAST);
 
                if (item) {
                        _targets->UnselectAll ();
@@ -411,7 +406,7 @@ ScreensPanel::add_screen_clicked ()
        auto screen = Screen(dialog.name(), dialog.notes(), dialog.recipient(), dialog.recipient_file(), dialog.trusted_devices());
        auto const screen_id = cinemas.add_screen(*cinema_id, screen);
 
-       auto id = add_screen(*cinema_id, screen_id);
+       auto const id = add_screen(*cinema_id, screen_id, screen);
        if (id) {
                _targets->Expand (id.get ());
        }
@@ -549,9 +544,8 @@ ScreensPanel::selection_changed ()
 void
 ScreensPanel::add_cinemas ()
 {
-       CinemaList cinemas;
-       for (auto cinema: cinemas.cinemas()) {
-               add_cinema (cinema.first, wxTLI_LAST);
+       for (auto cinema: _cinema_list.cinemas()) {
+               add_cinema(cinema.first, cinema.second, wxTLI_LAST);
        }
 }
 
index 98ec2c631b3fdb030e46fdfa9c6cea2df1f690ea..b6b5b6d5517fa482e971e137a575d9593df92d5b 100644 (file)
@@ -40,6 +40,7 @@ namespace dcpomatic {
 
 
 class CheckBox;
+class Cinema;
 
 
 class ScreensPanel : public wxPanel
@@ -57,8 +58,8 @@ public:
 
 private:
        void add_cinemas ();
-       boost::optional<wxTreeListItem> add_cinema(CinemaID cinema, wxTreeListItem previous);
-       boost::optional<wxTreeListItem> add_screen(CinemaID cinema, ScreenID screen);
+       boost::optional<wxTreeListItem> add_cinema(CinemaID cinema_id, Cinema const& cinema, wxTreeListItem previous);
+       boost::optional<wxTreeListItem> add_screen(CinemaID cinema_id, ScreenID screen_id, dcpomatic::Screen const& screen);
        void add_cinema_clicked ();
        void edit_cinema_clicked ();
        void edit_cinema(CinemaID cinema_id);