X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Fwx%2Fscreens_panel.cc;h=6c5b28b8d0fdd048449ce2c0e3a0bdfc8994d3a3;hp=b794590326daf6947a0ae9e11175114a486a2a80;hb=da13c2af9e8f19229061ca1939cbe8bd37c72eba;hpb=e3c48c1b52b7b61bd3fda7a6276eb697bad17977 diff --git a/src/wx/screens_panel.cc b/src/wx/screens_panel.cc index b79459032..6c5b28b8d 100644 --- a/src/wx/screens_panel.cc +++ b/src/wx/screens_panel.cc @@ -102,6 +102,7 @@ ScreensPanel::ScreensPanel (wxWindow* parent) _search->Bind (wxEVT_TEXT, boost::bind (&ScreensPanel::search_changed, this)); _targets->Bind (wxEVT_TREELIST_SELECTION_CHANGED, &ScreensPanel::selection_changed_shim, this); _targets->Bind (wxEVT_TREELIST_ITEM_CHECKED, &ScreensPanel::checkbox_changed, this); + _targets->Bind (wxEVT_TREELIST_ITEM_ACTIVATED, &ScreensPanel::item_activated, this); _add_cinema->Bind (wxEVT_BUTTON, boost::bind (&ScreensPanel::add_cinema_clicked, this)); _edit_cinema->Bind (wxEVT_BUTTON, boost::bind (&ScreensPanel::edit_cinema_clicked, this)); @@ -176,23 +177,20 @@ ScreensPanel::convert_to_lower(string& s) bool -ScreensPanel::matches_search(shared_ptr cinema, string lower_case_search) +ScreensPanel::matches_search(shared_ptr cinema, string search) { - if (lower_case_search.empty()) { + if (search.empty()) { return true; } - auto name = cinema->name; - convert_to_lower(name); - return name.find(lower_case_search) != string::npos; + return _collator.find(search, cinema->name); } optional ScreensPanel::add_cinema (shared_ptr cinema, wxTreeListItem previous) { - auto search = wx_to_std (_search->GetValue ()); - convert_to_lower(search); + auto const search = wx_to_std(_search->GetValue()); if (!matches_search(cinema, search)) { return {}; } @@ -248,8 +246,7 @@ ScreensPanel::add_cinema_clicked () wxTreeListItem previous = wxTLI_FIRST; bool found = false; - auto search = wx_to_std(_search->GetValue()); - convert_to_lower(search); + auto const search = wx_to_std(_search->GetValue()); for (auto existing_cinema: cinemas) { if (!matches_search(existing_cinema, search)) { continue; @@ -293,10 +290,15 @@ void ScreensPanel::edit_cinema_clicked () { auto cinema = cinema_for_operation (); - if (!cinema) { - return; + if (cinema) { + edit_cinema(cinema); } +} + +void +ScreensPanel::edit_cinema(shared_ptr cinema) +{ CinemaDialog dialog( GetParent(), _("Edit cinema"), cinema->name, cinema->emails, cinema->notes, cinema->utc_offset_hour(), cinema->utc_offset_minute() ); @@ -382,12 +384,15 @@ ScreensPanel::add_screen_clicked () void ScreensPanel::edit_screen_clicked () { - if (_selected_screens.size() != 1) { - return; + if (_selected_screens.size() == 1) { + edit_screen(_selected_screens[0]); } +} - auto edit_screen = _selected_screens[0]; +void +ScreensPanel::edit_screen(shared_ptr edit_screen) +{ ScreenDialog dialog( GetParent(), _("Edit screen"), edit_screen->name, @@ -700,3 +705,20 @@ ScreensPanel::config_changed(Config::Property property) clear_and_re_add(); } } + + +void +ScreensPanel::item_activated(wxTreeListEvent& ev) +{ + auto iter = _item_to_cinema.find(ev.GetItem()); + if (iter != _item_to_cinema.end()) { + edit_cinema(iter->second); + } else { + auto iter = _item_to_screen.find(ev.GetItem()); + if (iter != _item_to_screen.end()) { + edit_screen(iter->second); + } + } +} + +