1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-07 20:07:35 +00:00

SystemMonitor: Make the process list searchable

This commit is contained in:
Dawid Wolosowicz 2021-09-03 21:30:45 +02:00 committed by Ali Mohammad Pur
parent 52ed43d139
commit 000c74e6a8
2 changed files with 20 additions and 0 deletions

View file

@ -313,6 +313,24 @@ GUI::Variant ProcessModel::data(const GUI::ModelIndex& index, GUI::ModelRole rol
return {};
}
Vector<GUI::ModelIndex, 1> ProcessModel::matches(const StringView& searching, unsigned flags, const GUI::ModelIndex&)
{
Vector<GUI::ModelIndex, 1> found_indices;
for (auto& thread : m_threads) {
if (string_matches(thread.value->current_state.name, searching, flags)) {
auto maybe_tid_index = m_tids.find_first_index(thread.key);
if (!maybe_tid_index.has_value())
continue;
found_indices.append(create_index(maybe_tid_index.value(), Column::Name));
if (flags & FirstMatchOnly)
break;
}
}
return found_indices;
}
void ProcessModel::update()
{
auto previous_tid_count = m_tids.size();

View file

@ -60,6 +60,8 @@ public:
virtual int column_count(const GUI::ModelIndex&) const override;
virtual String column_name(int column) const override;
virtual GUI::Variant data(const GUI::ModelIndex&, GUI::ModelRole) const override;
virtual bool is_searchable() const override { return true; }
virtual Vector<GUI::ModelIndex, 1> matches(const StringView&, unsigned = MatchesFlag::AllMatching, const GUI::ModelIndex& = GUI::ModelIndex()) override;
virtual bool is_column_sortable(int column_index) const override { return column_index != Column::Icon; }
void update();