mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 13:48:12 +00:00
iLibGUI+Base: Show inaccessible directories with special icon in views
This commit is contained in:
parent
fad6b8f267
commit
e4c23b0151
5 changed files with 10 additions and 1 deletions
BIN
Base/res/icons/16x16/filetype-folder-inaccessible.png
Normal file
BIN
Base/res/icons/16x16/filetype-folder-inaccessible.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 386 B |
BIN
Base/res/icons/32x32/filetype-folder-inaccessible.png
Normal file
BIN
Base/res/icons/32x32/filetype-folder-inaccessible.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 770 B |
|
@ -61,6 +61,7 @@ ENUMERATE_FILETYPES(__ENUMERATE_FILETYPE)
|
|||
static Icon s_hard_disk_icon;
|
||||
static Icon s_directory_icon;
|
||||
static Icon s_directory_open_icon;
|
||||
static Icon s_inaccessible_directory_icon;
|
||||
static Icon s_home_directory_icon;
|
||||
static Icon s_home_directory_open_icon;
|
||||
static Icon s_file_icon;
|
||||
|
@ -76,6 +77,7 @@ static void initialize_if_needed()
|
|||
s_hard_disk_icon = Icon::default_icon("hard-disk");
|
||||
s_directory_icon = Icon::default_icon("filetype-folder");
|
||||
s_directory_open_icon = Icon::default_icon("filetype-folder-open");
|
||||
s_inaccessible_directory_icon = Icon::default_icon("filetype-folder-inaccessible");
|
||||
s_home_directory_icon = Icon::default_icon("home-directory");
|
||||
s_home_directory_open_icon = Icon::default_icon("home-directory-open");
|
||||
s_file_icon = Icon::default_icon("filetype-unknown");
|
||||
|
@ -137,6 +139,8 @@ Icon FileIconProvider::icon_for_path(const String& path, mode_t mode)
|
|||
if (S_ISDIR(mode)) {
|
||||
if (path == Core::StandardPaths::home_directory())
|
||||
return s_home_directory_icon;
|
||||
if (access(path.characters(), R_OK | X_OK) < 0)
|
||||
return s_inaccessible_directory_icon;
|
||||
return s_directory_icon;
|
||||
}
|
||||
if (S_ISLNK(mode))
|
||||
|
|
|
@ -82,6 +82,10 @@ bool FileSystemModel::Node::fetch_data(const String& full_path, bool is_root)
|
|||
perror("readlink");
|
||||
}
|
||||
|
||||
if (S_ISDIR(mode)) {
|
||||
is_accessible_directory = access(full_path.characters(), R_OK | X_OK) == 0;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -480,7 +484,7 @@ Icon FileSystemModel::icon_for(const Node& node) const
|
|||
return FileIconProvider::home_directory_open_icon();
|
||||
return FileIconProvider::home_directory_icon();
|
||||
}
|
||||
if (node.is_selected())
|
||||
if (node.is_selected() && node.is_accessible_directory)
|
||||
return FileIconProvider::directory_open_icon();
|
||||
}
|
||||
|
||||
|
|
|
@ -73,6 +73,7 @@ public:
|
|||
gid_t gid { 0 };
|
||||
ino_t inode { 0 };
|
||||
time_t mtime { 0 };
|
||||
bool is_accessible_directory { false };
|
||||
|
||||
size_t total_size { 0 };
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue