Explorar o código

Base+LibGUI: Add an familiar-looking icon for the desktop directory

Andreas Kling %!s(int64=4) %!d(string=hai) anos
pai
achega
42ec6718f2

BIN=BIN
Base/res/icons/16x16/desktop.png


BIN=BIN
Base/res/icons/32x32/desktop.png


+ 11 - 1
Userland/Libraries/LibGUI/FileIconProvider.cpp

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2020-2021, Andreas Kling <kling@serenityos.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -45,6 +45,7 @@ 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_desktop_directory_icon;
 static Icon s_home_directory_icon;
 static Icon s_home_directory_open_icon;
 static Icon s_file_icon;
@@ -84,6 +85,7 @@ static void initialize_if_needed()
     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_desktop_directory_icon = Icon::default_icon("desktop");
     s_file_icon = Icon::default_icon("filetype-unknown");
     s_symlink_icon = Icon::default_icon("filetype-symlink");
     s_socket_icon = Icon::default_icon("filetype-socket");
@@ -118,6 +120,12 @@ Icon FileIconProvider::home_directory_icon()
     return s_home_directory_icon;
 }
 
+Icon FileIconProvider::desktop_directory_icon()
+{
+    initialize_if_needed();
+    return s_desktop_directory_icon;
+}
+
 Icon FileIconProvider::home_directory_open_icon()
 {
     initialize_if_needed();
@@ -219,6 +227,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 (path == Core::StandardPaths::desktop_directory())
+            return s_desktop_directory_icon;
         if (access(path.characters(), R_OK | X_OK) < 0)
             return s_inaccessible_directory_icon;
         return s_directory_icon;

+ 1 - 0
Userland/Libraries/LibGUI/FileIconProvider.h

@@ -43,6 +43,7 @@ public:
     static Icon directory_open_icon();
     static Icon home_directory_icon();
     static Icon home_directory_open_icon();
+    static Icon desktop_directory_icon();
 };
 
 }

+ 2 - 0
Userland/Libraries/LibGUI/FileSystemModel.cpp

@@ -491,6 +491,8 @@ Icon FileSystemModel::icon_for(const Node& node) const
                 return FileIconProvider::home_directory_open_icon();
             return FileIconProvider::home_directory_icon();
         }
+        if (node.full_path() == Core::StandardPaths::desktop_directory())
+            return FileIconProvider::desktop_directory_icon();
         if (node.is_selected() && node.is_accessible_directory)
             return FileIconProvider::directory_open_icon();
     }