/* * Copyright (c) 2020, Linus Groh * Copyright (c) 2022, the SerenityOS developers. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Desktop { class AppFile : public RefCounted { public: static constexpr char const* APP_FILES_DIRECTORY = "/res/apps"; static NonnullRefPtr get_for_app(StringView app_name); static NonnullRefPtr open(StringView path); static void for_each(Function)>, StringView directory = APP_FILES_DIRECTORY); ~AppFile() = default; bool is_valid() const { return m_valid; } String filename() const { return m_config->filename(); } String name() const; String executable() const; String category() const; String description() const; String icon_path() const; GUI::Icon icon() const; bool run_in_terminal() const; Vector launcher_file_types() const; Vector launcher_protocols() const; bool spawn() const; private: explicit AppFile(StringView path); bool validate() const; RefPtr m_config; bool m_valid { false }; }; }