1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 00:47:45 +00:00

Assistant: Allow arguments in AppProvider queries

This commit is contained in:
Tim Ledbetter 2023-01-20 21:58:37 +00:00 committed by Sam Atkins
parent 3b446fba34
commit d910dd345e
2 changed files with 10 additions and 4 deletions

View file

@ -34,7 +34,8 @@ void AppResult::activate() const
exit(1); exit(1);
} }
m_app_file->spawn(); auto arguments_list = m_arguments.split_view(' ');
m_app_file->spawn(arguments_list.span());
} }
void CalculatorResult::activate() const void CalculatorResult::activate() const
@ -68,12 +69,15 @@ void AppProvider::query(DeprecatedString const& query, Function<void(NonnullRefP
NonnullRefPtrVector<Result> results; NonnullRefPtrVector<Result> results;
Desktop::AppFile::for_each([&](NonnullRefPtr<Desktop::AppFile> app_file) { Desktop::AppFile::for_each([&](NonnullRefPtr<Desktop::AppFile> app_file) {
auto match_result = fuzzy_match(query, app_file->name()); auto query_and_arguments = query.split_limit(' ', 2);
auto app_name = query_and_arguments.is_empty() ? query : query_and_arguments[0];
auto arguments = query_and_arguments.size() < 2 ? DeprecatedString::empty() : query_and_arguments[1];
auto match_result = fuzzy_match(app_name, app_file->name());
if (!match_result.matched) if (!match_result.matched)
return; return;
auto icon = GUI::FileIconProvider::icon_for_executable(app_file->executable()); auto icon = GUI::FileIconProvider::icon_for_executable(app_file->executable());
results.append(adopt_ref(*new AppResult(icon.bitmap_for_size(16), app_file->name(), {}, app_file, match_result.score))); results.append(adopt_ref(*new AppResult(icon.bitmap_for_size(16), app_file->name(), {}, app_file, arguments, match_result.score)));
}); });
on_complete(move(results)); on_complete(move(results));

View file

@ -52,9 +52,10 @@ private:
class AppResult final : public Result { class AppResult final : public Result {
public: public:
AppResult(RefPtr<Gfx::Bitmap> bitmap, DeprecatedString title, DeprecatedString tooltip, NonnullRefPtr<Desktop::AppFile> af, int score) AppResult(RefPtr<Gfx::Bitmap> bitmap, DeprecatedString title, DeprecatedString tooltip, NonnullRefPtr<Desktop::AppFile> af, DeprecatedString arguments, int score)
: Result(move(title), move(tooltip), score) : Result(move(title), move(tooltip), score)
, m_app_file(move(af)) , m_app_file(move(af))
, m_arguments(move(arguments))
, m_bitmap(move(bitmap)) , m_bitmap(move(bitmap))
{ {
} }
@ -65,6 +66,7 @@ public:
private: private:
NonnullRefPtr<Desktop::AppFile> m_app_file; NonnullRefPtr<Desktop::AppFile> m_app_file;
DeprecatedString m_arguments;
RefPtr<Gfx::Bitmap> m_bitmap; RefPtr<Gfx::Bitmap> m_bitmap;
}; };