From: Carl Hetherington Date: Wed, 23 Dec 2015 22:39:37 +0000 (+0000) Subject: Tidy up ScreensPanel code a bit. X-Git-Tag: v2.6.11~1^2~4 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=6e3542ea5621701531b8736496fecde1049ff579 Tidy up ScreensPanel code a bit. --- diff --git a/src/wx/screens_panel.cc b/src/wx/screens_panel.cc index b475dbb6d..a081e2dfc 100644 --- a/src/wx/screens_panel.cc +++ b/src/wx/screens_panel.cc @@ -91,45 +91,11 @@ ScreensPanel::~ScreensPanel () _targets->Unbind (wxEVT_COMMAND_TREE_SEL_CHANGED, &ScreensPanel::selection_changed, this); } -list > > -ScreensPanel::selected_cinemas () const -{ - wxArrayTreeItemIds s; - _targets->GetSelections (s); - - list > > c; - for (size_t i = 0; i < s.GetCount(); ++i) { - map >::const_iterator j = _cinemas.find (s[i]); - if (j != _cinemas.end ()) { - c.push_back (make_pair (j->first, j->second)); - } - } - - return c; -} - -list > > -ScreensPanel::selected_screens () const -{ - wxArrayTreeItemIds s; - _targets->GetSelections (s); - - list > > c; - for (size_t i = 0; i < s.GetCount(); ++i) { - map >::const_iterator j = _screens.find (s[i]); - if (j != _screens.end ()) { - c.push_back (make_pair (j->first, j->second)); - } - } - - return c; -} - void ScreensPanel::setup_sensitivity () { - bool const sc = selected_cinemas().size() == 1; - bool const ss = selected_screens().size() == 1; + bool const sc = _selected_cinemas.size() == 1; + bool const ss = _selected_screens.size() == 1; _edit_cinema->Enable (sc); _remove_cinema->Enable (sc); @@ -166,7 +132,7 @@ ScreensPanel::add_cinema (shared_ptr c) void ScreensPanel::add_screen (shared_ptr c, shared_ptr s) { - map >::const_iterator i = _cinemas.begin(); + CinemaMap::const_iterator i = _cinemas.begin(); while (i != _cinemas.end() && i->second != c) { ++i; } @@ -195,11 +161,11 @@ ScreensPanel::add_cinema_clicked () void ScreensPanel::edit_cinema_clicked () { - if (selected_cinemas().size() != 1) { + if (_selected_cinemas.size() != 1) { return; } - pair > c = selected_cinemas().front(); + pair > c = *_selected_cinemas.begin(); CinemaDialog* d = new CinemaDialog (this, "Edit cinema", c.second->name, c.second->emails); if (d->ShowModal () == wxID_OK) { @@ -215,11 +181,11 @@ ScreensPanel::edit_cinema_clicked () void ScreensPanel::remove_cinema_clicked () { - if (selected_cinemas().size() != 1) { + if (_selected_cinemas.size() != 1) { return; } - pair > c = selected_cinemas().front(); + pair > c = *_selected_cinemas.begin(); Config::instance()->remove_cinema (c.second); _targets->Delete (c.first); @@ -228,11 +194,11 @@ ScreensPanel::remove_cinema_clicked () void ScreensPanel::add_screen_clicked () { - if (selected_cinemas().size() != 1) { + if (_selected_cinemas.size() != 1) { return; } - shared_ptr c = selected_cinemas().front().second; + shared_ptr c = _selected_cinemas.begin()->second; ScreenDialog* d = new ScreenDialog (this, "Add Screen"); if (d->ShowModal () != wxID_OK) { @@ -251,11 +217,11 @@ ScreensPanel::add_screen_clicked () void ScreensPanel::edit_screen_clicked () { - if (selected_screens().size() != 1) { + if (_selected_screens.size() != 1) { return; } - pair > s = selected_screens().front(); + pair > s = *_selected_screens.begin(); ScreenDialog* d = new ScreenDialog (this, "Edit screen", s.second->name, s.second->recipient, s.second->trusted_devices); if (d->ShowModal () == wxID_OK) { @@ -272,13 +238,13 @@ ScreensPanel::edit_screen_clicked () void ScreensPanel::remove_screen_clicked () { - if (selected_screens().size() != 1) { + if (_selected_screens.size() != 1) { return; } - pair > s = selected_screens().front(); + pair > s = *_selected_screens.begin(); - map >::iterator i = _cinemas.begin (); + CinemaMap::iterator i = _cinemas.begin (); while (i != _cinemas.end ()) { list > sc = i->second->screens (); if (find (sc.begin(), sc.end(), s.second) != sc.end ()) { @@ -303,16 +269,14 @@ ScreensPanel::screens () const { list > s; - list > > cinemas = selected_cinemas (); - for (list > >::iterator i = cinemas.begin(); i != cinemas.end(); ++i) { + for (CinemaMap::const_iterator i = _selected_cinemas.begin(); i != _selected_cinemas.end(); ++i) { list > sc = i->second->screens (); for (list >::const_iterator j = sc.begin(); j != sc.end(); ++j) { s.push_back (*j); } } - list > > screens = selected_screens (); - for (list > >::iterator i = screens.begin(); i != screens.end(); ++i) { + for (ScreenMap::const_iterator i = _selected_screens.begin(); i != _selected_screens.end(); ++i) { s.push_back (i->second); } @@ -336,13 +300,13 @@ ScreensPanel::selection_changed (wxTreeEvent &) _selected_screens.clear (); for (size_t i = 0; i < s.GetCount(); ++i) { - map >::const_iterator j = _cinemas.find (s[i]); + CinemaMap::const_iterator j = _cinemas.find (s[i]); if (j != _cinemas.end ()) { - _selected_cinemas.push_back (j->second); + _selected_cinemas[j->first] = j->second; } - map >::const_iterator k = _screens.find (s[i]); + ScreenMap::const_iterator k = _screens.find (s[i]); if (k != _screens.end ()) { - _selected_screens.push_back (k->second); + _selected_screens[k->first] = k->second; } } @@ -371,9 +335,10 @@ ScreensPanel::search_changed () _ignore_selection_change = true; - BOOST_FOREACH (shared_ptr i, _selected_cinemas) { - map >::const_iterator j = _cinemas.begin (); - while (j != _cinemas.end() && j->second != i) { + for (CinemaMap::const_iterator i = _selected_cinemas.begin(); i != _selected_cinemas.end(); ++i) { + /* The wxTreeItemIds will now be different, so we must search by cinema */ + CinemaMap::const_iterator j = _cinemas.begin (); + while (j != _cinemas.end() && j->second != i->second) { ++j; } @@ -382,9 +347,9 @@ ScreensPanel::search_changed () } } - BOOST_FOREACH (shared_ptr i, _selected_screens) { - map >::const_iterator j = _screens.begin (); - while (j != _screens.end() && j->second != i) { + for (ScreenMap::const_iterator i = _selected_screens.begin(); i != _selected_screens.end(); ++i) { + ScreenMap::const_iterator j = _screens.begin (); + while (j != _screens.end() && j->second != i->second) { ++j; } diff --git a/src/wx/screens_panel.h b/src/wx/screens_panel.h index 829208880..0095937b7 100644 --- a/src/wx/screens_panel.h +++ b/src/wx/screens_panel.h @@ -48,8 +48,6 @@ private: void add_screen_clicked (); void edit_screen_clicked (); void remove_screen_clicked (); - std::list > > selected_cinemas () const; - std::list > > selected_screens () const; void selection_changed (wxTreeEvent &); void search_changed (); @@ -62,9 +60,14 @@ private: wxButton* _edit_screen; wxButton* _remove_screen; wxTreeItemId _root; - std::map > _cinemas; - std::map > _screens; - std::list > _selected_cinemas; - std::list > _selected_screens; + + typedef std::map > CinemaMap; + typedef std::map > ScreenMap; + + CinemaMap _cinemas; + ScreenMap _screens; + CinemaMap _selected_cinemas; + ScreenMap _selected_screens; + bool _ignore_selection_change; };