Really basic searching

This commit is contained in:
Mike Griese 2019-07-23 15:51:09 -05:00
parent c6dccdaf5c
commit 49df3cd7a6
2 changed files with 37 additions and 9 deletions

View file

@ -19,16 +19,23 @@ namespace winrt::TerminalApp::implementation
_filteredActions = winrt::single_threaded_observable_vector<winrt::TerminalApp::Action>();
_allActions = winrt::single_threaded_vector<winrt::TerminalApp::Action>();
Action action1{};
action1.Name(L"Foo");
action1.Command(winrt::TerminalApp::ShortcutAction::NewTab);
// Action action1{};
// action1.Name(L"Foo");
// action1.Command(winrt::TerminalApp::ShortcutAction::NewTab);
Action action2{};
action2.Name(L"Bar");
action2.Command(winrt::TerminalApp::ShortcutAction::CloseTab);
// Action action2{};
// action2.Name(L"Bar");
// action2.Command(winrt::TerminalApp::ShortcutAction::CloseTab);
_filteredActions.Append(action1);
_filteredActions.Append(action2);
// _filteredActions.Append(action1);
// _filteredActions.Append(action2);
_SearchBox().TextChanged({ this, &ActionList::FilterTextChanged });
}
void ActionList::FilterTextChanged(Windows::Foundation::IInspectable const& sender,
Windows::UI::Xaml::RoutedEventArgs const& args)
{
_UpdateFilteredActions();
}
Windows::Foundation::Collections::IObservableVector<Action> ActionList::FilteredActions()
@ -39,11 +46,26 @@ namespace winrt::TerminalApp::implementation
void ActionList::SetActions(Windows::Foundation::Collections::IVector<TerminalApp::Action> const& actions)
{
_allActions = actions;
_UpdateFilteredActions();
}
void ActionList::_UpdateFilteredActions()
{
_filteredActions.Clear();
auto searchText = _SearchBox().Text();
const bool addAll = searchText.empty();
for (auto action : _allActions)
{
_filteredActions.Append(action);
if (addAll || ActionList::_FilterMatchesName(searchText, action.Name()))
{
_filteredActions.Append(action);
}
}
}
bool ActionList::_FilterMatchesName(winrt::hstring searchText, winrt::hstring name)
{
return searchText == name;
}
}

View file

@ -16,9 +16,15 @@ namespace winrt::TerminalApp::implementation
Windows::Foundation::Collections::IObservableVector<TerminalApp::Action> FilteredActions();
void SetActions(Windows::Foundation::Collections::IVector<TerminalApp::Action> const& actions);
void FilterTextChanged(Windows::Foundation::IInspectable const& sender,
Windows::UI::Xaml::RoutedEventArgs const& args);
private:
Windows::Foundation::Collections::IObservableVector<TerminalApp::Action> _filteredActions{ nullptr };
Windows::Foundation::Collections::IVector<TerminalApp::Action> _allActions{ nullptr };
void _UpdateFilteredActions();
static bool _FilterMatchesName(winrt::hstring searchText, winrt::hstring name);
};
}