mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-30 00:31:14 +00:00
Assistant: Keep the set of providers in a Vector for easy iteration
This commit is contained in:
parent
ee991fa4e0
commit
e4199beccc
Notes:
sideshowbarker
2024-07-18 10:33:01 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/e4199beccc1
|
@ -120,6 +120,11 @@ Gfx::Bitmap const* FileResult::bitmap() const
|
||||||
return GUI::FileIconProvider::icon_for_path(title()).bitmap_for_size(16);
|
return GUI::FileIconProvider::icon_for_path(title()).bitmap_for_size(16);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FileProvider::FileProvider()
|
||||||
|
{
|
||||||
|
build_filesystem_cache();
|
||||||
|
}
|
||||||
|
|
||||||
void FileProvider::query(const String& query, Function<void(NonnullRefPtrVector<Result>)> on_complete)
|
void FileProvider::query(const String& query, Function<void(NonnullRefPtrVector<Result>)> on_complete)
|
||||||
{
|
{
|
||||||
build_filesystem_cache();
|
build_filesystem_cache();
|
||||||
|
|
|
@ -145,6 +145,8 @@ public:
|
||||||
|
|
||||||
class FileProvider : public Provider {
|
class FileProvider : public Provider {
|
||||||
public:
|
public:
|
||||||
|
FileProvider();
|
||||||
|
|
||||||
void query(String const& query, Function<void(NonnullRefPtrVector<Result>)> on_complete) override;
|
void query(String const& query, Function<void(NonnullRefPtrVector<Result>)> on_complete) override;
|
||||||
void build_filesystem_cache();
|
void build_filesystem_cache();
|
||||||
|
|
||||||
|
|
|
@ -120,36 +120,26 @@ public:
|
||||||
explicit Database(AppState& state)
|
explicit Database(AppState& state)
|
||||||
: m_state(state)
|
: m_state(state)
|
||||||
{
|
{
|
||||||
m_file_provider.build_filesystem_cache();
|
m_providers.append(make<AppProvider>());
|
||||||
|
m_providers.append(make<CalculatorProvider>());
|
||||||
|
m_providers.append(make<FileProvider>());
|
||||||
|
m_providers.append(make<TerminalProvider>());
|
||||||
|
m_providers.append(make<URLProvider>());
|
||||||
}
|
}
|
||||||
|
|
||||||
Function<void(NonnullRefPtrVector<Result>)> on_new_results;
|
Function<void(NonnullRefPtrVector<Result>)> on_new_results;
|
||||||
|
|
||||||
void search(String const& query)
|
void search(String const& query)
|
||||||
{
|
{
|
||||||
m_file_provider.query(query, [=, this](auto results) {
|
for (auto& provider : m_providers) {
|
||||||
recv_results(query, results);
|
provider.query(query, [=, this](auto results) {
|
||||||
});
|
did_receive_results(query, results);
|
||||||
|
});
|
||||||
m_app_provider.query(query, [=, this](auto results) {
|
}
|
||||||
recv_results(query, results);
|
|
||||||
});
|
|
||||||
|
|
||||||
m_calculator_provider.query(query, [=, this](auto results) {
|
|
||||||
recv_results(query, results);
|
|
||||||
});
|
|
||||||
|
|
||||||
m_terminal_provider.query(query, [=, this](auto results) {
|
|
||||||
recv_results(query, results);
|
|
||||||
});
|
|
||||||
|
|
||||||
m_url_provider.query(query, [=, this](auto results) {
|
|
||||||
recv_results(query, results);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void recv_results(String const& query, NonnullRefPtrVector<Result> const& results)
|
void did_receive_results(String const& query, NonnullRefPtrVector<Result> const& results)
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
Threading::Locker db_locker(m_lock);
|
Threading::Locker db_locker(m_lock);
|
||||||
|
@ -188,11 +178,7 @@ private:
|
||||||
|
|
||||||
AppState& m_state;
|
AppState& m_state;
|
||||||
|
|
||||||
AppProvider m_app_provider;
|
NonnullOwnPtrVector<Provider> m_providers;
|
||||||
CalculatorProvider m_calculator_provider;
|
|
||||||
FileProvider m_file_provider;
|
|
||||||
TerminalProvider m_terminal_provider;
|
|
||||||
URLProvider m_url_provider;
|
|
||||||
|
|
||||||
Threading::Lock m_lock;
|
Threading::Lock m_lock;
|
||||||
HashMap<String, NonnullRefPtrVector<Result>> m_result_cache;
|
HashMap<String, NonnullRefPtrVector<Result>> m_result_cache;
|
||||||
|
|
Loading…
Reference in a new issue