LibDesktop: Add support for IconPath in AppFile

With `IconPath`, you can override the icon used for the application
shortcut. This currently only supports resolving the icon through
`GUI::FileIconProvider`, the implementation for pointing to actual
image files is left as an exercise for the reader.
This commit is contained in:
Jelle Raaijmakers 2021-08-04 13:16:26 +02:00 committed by Linus Groh
parent 0ec39aafb6
commit 1a4b1ecd04
Notes: sideshowbarker 2024-07-18 07:29:39 +09:00
2 changed files with 17 additions and 2 deletions

View file

@ -87,6 +87,21 @@ String AppFile::category() const
return m_config->read_entry("App", "Category").trim_whitespace();
}
String AppFile::icon_path() const
{
return m_config->read_entry("App", "IconPath").trim_whitespace();
}
GUI::Icon AppFile::icon() const
{
auto override_icon = icon_path();
// FIXME: support pointing to actual .ico files
if (!override_icon.is_empty())
return GUI::FileIconProvider::icon_for_path(override_icon);
return GUI::FileIconProvider::icon_for_path(executable());
}
bool AppFile::run_in_terminal() const
{
return m_config->read_bool_entry("App", "RunInTerminal", false);

View file

@ -27,13 +27,13 @@ public:
String executable() const;
String category() const;
String description() const;
String icon_path() const;
GUI::Icon icon() const;
bool run_in_terminal() const;
Vector<String> launcher_file_types() const;
Vector<String> launcher_protocols() const;
bool spawn() const;
GUI::Icon icon() const { return GUI::FileIconProvider::icon_for_path(executable()); };
private:
explicit AppFile(const StringView& path);