1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 11:48:10 +00:00

LibGUI: Use enumerator macros for filetype icons

This commit is contained in:
Linus Groh 2020-04-25 19:41:05 +01:00 committed by Andreas Kling
parent a36ceffb56
commit 9de184d883
2 changed files with 29 additions and 40 deletions

View file

@ -206,16 +206,11 @@ FileSystemModel::FileSystemModel(const StringView& root_path, Mode mode)
m_symlink_icon = Icon::default_icon("filetype-symlink"); m_symlink_icon = Icon::default_icon("filetype-symlink");
m_socket_icon = Icon::default_icon("filetype-socket"); m_socket_icon = Icon::default_icon("filetype-socket");
m_executable_icon = Icon::default_icon("filetype-executable"); m_executable_icon = Icon::default_icon("filetype-executable");
m_filetype_image_icon = Icon::default_icon("filetype-image");
m_filetype_sound_icon = Icon::default_icon("filetype-sound"); #define __ENUMERATE_FILETYPE(filetype_name, ...) \
m_filetype_html_icon = Icon::default_icon("filetype-html"); m_filetype_##filetype_name##_icon = Icon::default_icon("filetype-" #filetype_name);
m_filetype_cplusplus_icon = Icon::default_icon("filetype-cplusplus"); ENUMERATE_FILETYPES
m_filetype_java_icon = Icon::default_icon("filetype-java"); #undef __ENUMERATE_FILETYPE
m_filetype_javascript_icon = Icon::default_icon("filetype-javascript");
m_filetype_text_icon = Icon::default_icon("filetype-text");
m_filetype_pdf_icon = Icon::default_icon("filetype-pdf");
m_filetype_library_icon = Icon::default_icon("filetype-library");
m_filetype_object_icon = Icon::default_icon("filetype-object");
setpwent(); setpwent();
while (auto* passwd = getpwent()) while (auto* passwd = getpwent())
@ -431,26 +426,14 @@ Icon FileSystemModel::icon_for_file(const mode_t mode, const String& name) const
return m_socket_icon; return m_socket_icon;
if (mode & (S_IXUSR | S_IXGRP | S_IXOTH)) if (mode & (S_IXUSR | S_IXGRP | S_IXOTH))
return m_executable_icon; return m_executable_icon;
if (name.to_lowercase().ends_with(".wav"))
return m_filetype_sound_icon; #define __ENUMERATE_FILETYPE(filetype_name, filetype_extensions...) \
if (name.to_lowercase().ends_with(".html")) for (auto& extension : Vector<String> { filetype_extensions }) { \
return m_filetype_html_icon; if (name.to_lowercase().ends_with(extension)) \
if (name.to_lowercase().ends_with(".png")) return m_filetype_##filetype_name##_icon; \
return m_filetype_image_icon; }
if (name.to_lowercase().ends_with(".cpp")) ENUMERATE_FILETYPES
return m_filetype_cplusplus_icon; #undef __ENUMERATE_FILETYPE
if (name.to_lowercase().ends_with(".java"))
return m_filetype_java_icon;
if (name.to_lowercase().ends_with(".js"))
return m_filetype_javascript_icon;
if (name.to_lowercase().ends_with(".txt"))
return m_filetype_text_icon;
if (name.to_lowercase().ends_with(".pdf"))
return m_filetype_pdf_icon;
if (name.to_lowercase().ends_with(".o") || name.to_lowercase().ends_with(".obj"))
return m_filetype_object_icon;
if (name.to_lowercase().ends_with(".so") || name.to_lowercase().ends_with(".a"))
return m_filetype_library_icon;
return m_file_icon; return m_file_icon;
} }

View file

@ -35,6 +35,17 @@
#include <sys/stat.h> #include <sys/stat.h>
#include <time.h> #include <time.h>
#define ENUMERATE_FILETYPES \
__ENUMERATE_FILETYPE(cplusplus, ".cpp") \
__ENUMERATE_FILETYPE(html, ".html") \
__ENUMERATE_FILETYPE(image, ".png") \
__ENUMERATE_FILETYPE(java, ".java") \
__ENUMERATE_FILETYPE(javascript, ".js") \
__ENUMERATE_FILETYPE(library, ".so", ".a") \
__ENUMERATE_FILETYPE(object, ".o", ".obj") \
__ENUMERATE_FILETYPE(pdf, ".pdf") \
__ENUMERATE_FILETYPE(sound, ".wav") \
__ENUMERATE_FILETYPE(text, ".txt")
namespace GUI { namespace GUI {
class FileSystemModel class FileSystemModel
@ -160,16 +171,11 @@ private:
GUI::Icon m_symlink_icon; GUI::Icon m_symlink_icon;
GUI::Icon m_socket_icon; GUI::Icon m_socket_icon;
GUI::Icon m_executable_icon; GUI::Icon m_executable_icon;
GUI::Icon m_filetype_image_icon;
GUI::Icon m_filetype_sound_icon; #define __ENUMERATE_FILETYPE(filetype_name, ...) \
GUI::Icon m_filetype_html_icon; GUI::Icon m_filetype_##filetype_name##_icon;
GUI::Icon m_filetype_cplusplus_icon; ENUMERATE_FILETYPES
GUI::Icon m_filetype_java_icon; #undef __ENUMERATE_FILETYPE
GUI::Icon m_filetype_javascript_icon;
GUI::Icon m_filetype_text_icon;
GUI::Icon m_filetype_pdf_icon;
GUI::Icon m_filetype_library_icon;
GUI::Icon m_filetype_object_icon;
unsigned m_thumbnail_progress { 0 }; unsigned m_thumbnail_progress { 0 };
unsigned m_thumbnail_progress_total { 0 }; unsigned m_thumbnail_progress_total { 0 };