mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-05-08 04:09:00 +00:00
iLibGUI+Base: Show inaccessible directories with special icon in views
This commit is contained in:
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 };
|
||||
|
||||
|
||||
Reference in New Issue
Block a user