Really basic searching
This commit is contained in:
parent
c6dccdaf5c
commit
49df3cd7a6
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue