bool
-ScreensPanel::matches_search(shared_ptr<const Cinema> cinema, string lower_case_search)
+ScreensPanel::matches_search(shared_ptr<const Cinema> 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<wxTreeListItem>
ScreensPanel::add_cinema (shared_ptr<Cinema> 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 {};
}
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;
for (auto const& cinema: _selected_cinemas) {
_ignore_cinemas_changed = true;
ScopeGuard sg = [this]() { _ignore_cinemas_changed = false; };
+ for (auto screen: cinema->screens()) {
+ _checked_screens.erase(screen);
+ }
Config::instance()->remove_cinema(cinema);
auto item = cinema_to_item(cinema);
DCPOMATIC_ASSERT(item);
}
}
- for (auto const& screen: _selected_screens) {
+ for (auto screen: _selected_screens) {
+ _checked_screens.erase(screen);
screen->cinema->remove_screen(screen);
auto item = screen_to_item(screen);
DCPOMATIC_ASSERT(item);