mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 17:47:44 +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_hard_disk_icon;
|
||||||
static Icon s_directory_icon;
|
static Icon s_directory_icon;
|
||||||
static Icon s_directory_open_icon;
|
static Icon s_directory_open_icon;
|
||||||
|
static Icon s_inaccessible_directory_icon;
|
||||||
static Icon s_home_directory_icon;
|
static Icon s_home_directory_icon;
|
||||||
static Icon s_home_directory_open_icon;
|
static Icon s_home_directory_open_icon;
|
||||||
static Icon s_file_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_hard_disk_icon = Icon::default_icon("hard-disk");
|
||||||
s_directory_icon = Icon::default_icon("filetype-folder");
|
s_directory_icon = Icon::default_icon("filetype-folder");
|
||||||
s_directory_open_icon = Icon::default_icon("filetype-folder-open");
|
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_icon = Icon::default_icon("home-directory");
|
||||||
s_home_directory_open_icon = Icon::default_icon("home-directory-open");
|
s_home_directory_open_icon = Icon::default_icon("home-directory-open");
|
||||||
s_file_icon = Icon::default_icon("filetype-unknown");
|
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 (S_ISDIR(mode)) {
|
||||||
if (path == Core::StandardPaths::home_directory())
|
if (path == Core::StandardPaths::home_directory())
|
||||||
return s_home_directory_icon;
|
return s_home_directory_icon;
|
||||||
|
if (access(path.characters(), R_OK | X_OK) < 0)
|
||||||
|
return s_inaccessible_directory_icon;
|
||||||
return s_directory_icon;
|
return s_directory_icon;
|
||||||
}
|
}
|
||||||
if (S_ISLNK(mode))
|
if (S_ISLNK(mode))
|
||||||
|
|
|
@ -82,6 +82,10 @@ bool FileSystemModel::Node::fetch_data(const String& full_path, bool is_root)
|
||||||
perror("readlink");
|
perror("readlink");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (S_ISDIR(mode)) {
|
||||||
|
is_accessible_directory = access(full_path.characters(), R_OK | X_OK) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -480,7 +484,7 @@ Icon FileSystemModel::icon_for(const Node& node) const
|
||||||
return FileIconProvider::home_directory_open_icon();
|
return FileIconProvider::home_directory_open_icon();
|
||||||
return FileIconProvider::home_directory_icon();
|
return FileIconProvider::home_directory_icon();
|
||||||
}
|
}
|
||||||
if (node.is_selected())
|
if (node.is_selected() && node.is_accessible_directory)
|
||||||
return FileIconProvider::directory_open_icon();
|
return FileIconProvider::directory_open_icon();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -73,6 +73,7 @@ public:
|
||||||
gid_t gid { 0 };
|
gid_t gid { 0 };
|
||||||
ino_t inode { 0 };
|
ino_t inode { 0 };
|
||||||
time_t mtime { 0 };
|
time_t mtime { 0 };
|
||||||
|
bool is_accessible_directory { false };
|
||||||
|
|
||||||
size_t total_size { 0 };
|
size_t total_size { 0 };
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue