/* * 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 auto APP_FILES_DIRECTORY = "/res/apps"sv; 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; } DeprecatedString filename() const { return m_config->filename(); } DeprecatedString name() const; DeprecatedString executable() const; DeprecatedString category() const; DeprecatedString description() const; DeprecatedString working_directory() const; DeprecatedString icon_path() const; GUI::Icon icon() const; bool run_in_terminal() const; bool requires_root() const; Vector launcher_mime_types() 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 }; }; }