serenity/Userland/DevTools/HackStudio/Locator.h
Sam Atkins 85101c6626 HackStudio: Keep the DeclarationsModel around, and use a filtering proxy
Rather than construct a new DeclarationsModel each time the user types
something in the Locator, keep a single one around permanently in the
ProjectDeclarations, and then use a FilteringProxyModel over it for the
suggestions.
2024-01-30 23:34:21 +00:00

37 lines
768 B
C++

/*
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2022, the SerenityOS developers.
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/HashMap.h>
#include <LibGUI/FilteringProxyModel.h>
#include <LibGUI/Widget.h>
namespace HackStudio {
class Locator final : public GUI::Widget {
C_OBJECT(Locator)
public:
virtual ~Locator() override = default;
void open();
void close();
private:
void update_suggestions();
void open_suggestion(const GUI::ModelIndex&);
Locator(Core::EventReceiver* parent = nullptr);
RefPtr<GUI::TextBox> m_textbox;
RefPtr<GUI::Window> m_popup_window;
RefPtr<GUI::TableView> m_suggestion_view;
RefPtr<GUI::FilteringProxyModel> m_model;
};
}