Skip to content

Commit eb0f27d

Browse files
committed
Use symbolic icons for the places sidebar
1 parent e41d800 commit eb0f27d

10 files changed

Lines changed: 141 additions & 111 deletions

libnemo-private/nemo-bookmark.c

Lines changed: 10 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ nemo_bookmark_update_icon (NemoBookmark *bookmark)
105105
NEMO_FILE_ATTRIBUTES_FOR_ICON)) {
106106
DEBUG ("%s: set new icon", nemo_bookmark_get_name (bookmark));
107107

108-
new_icon = nemo_file_get_emblemed_icon (bookmark->details->file, 0);
108+
new_icon = nemo_file_get_control_icon (bookmark->details->file);
109109
g_object_set (bookmark,
110110
"icon", new_icon,
111111
NULL);
@@ -142,13 +142,13 @@ get_default_folder_icon (NemoBookmark *bookmark)
142142
GIcon *ret = NULL;
143143

144144
if (g_file_is_native (bookmark->details->location)) {
145-
ret = g_themed_icon_new (NEMO_ICON_FOLDER);
145+
ret = g_themed_icon_new (NEMO_ICON_SYMBOLIC_FOLDER);
146146
} else {
147147
gchar *uri = g_file_get_uri (bookmark->details->location);
148148
if (g_str_has_prefix (uri, EEL_SEARCH_URI)) {
149-
ret = g_themed_icon_new (NEMO_ICON_FOLDER_SAVED_SEARCH);
149+
ret = g_themed_icon_new (NEMO_ICON_SYMBOLIC_FOLDER_SAVED_SEARCH);
150150
} else {
151-
ret = g_themed_icon_new (NEMO_ICON_FOLDER_REMOTE);
151+
ret = g_themed_icon_new (NEMO_ICON_SYMBOLIC_FOLDER_REMOTE);
152152
}
153153
g_free (uri);
154154
}
@@ -162,15 +162,7 @@ construct_default_icon_from_metadata (NemoBookmark *bookmark)
162162
NemoBookmarkMetadata *md = bookmark->details->metadata;
163163
GIcon *ret = NULL;
164164

165-
if (md->icon_name) {
166-
ret = g_themed_icon_new (md->icon_name);
167-
} else if (md->icon_uri) {
168-
GFile *file = g_file_new_for_uri (md->icon_uri);
169-
ret = g_file_icon_new (file);
170-
g_object_unref (file);
171-
} else {
172-
ret = get_default_folder_icon (bookmark);
173-
}
165+
ret = get_default_folder_icon (bookmark);
174166

175167
if (ret != NULL && md->emblems != NULL) {
176168
guint i = 0;
@@ -245,7 +237,7 @@ metadata_changed (NemoBookmark *bookmark)
245237
{
246238
gboolean ret = FALSE;
247239
NemoBookmarkMetadata *data = nemo_bookmark_get_updated_metadata (bookmark);
248-
gboolean has_custom = data && (data->icon_uri || data->icon_name || data->emblems);
240+
gboolean has_custom = data && data->emblems;
249241

250242
gboolean had_custom = bookmark->details->metadata != NULL;
251243

@@ -825,27 +817,16 @@ nemo_bookmark_get_updated_metadata (NemoBookmark *bookmark)
825817

826818
if (bookmark->details->file && !nemo_file_is_gone (bookmark->details->file)) {
827819
GList *custom_emblems = NULL;
828-
gchar *custom_icon_uri = NULL;
829-
gchar *custom_icon_name = NULL;
830820

831821
custom_emblems = nemo_file_get_metadata_list (bookmark->details->file, NEMO_METADATA_KEY_EMBLEMS);
832-
custom_icon_uri = nemo_file_get_metadata (bookmark->details->file, NEMO_METADATA_KEY_CUSTOM_ICON, NULL);
833-
custom_icon_name = nemo_file_get_metadata (bookmark->details->file, NEMO_METADATA_KEY_CUSTOM_ICON_NAME, NULL);
834822

835-
if (custom_emblems || custom_icon_uri || custom_icon_name) {
823+
if (custom_emblems) {
836824
ret = nemo_bookmark_metadata_new ();
825+
ret->emblems = char_list_to_strv (custom_emblems);
837826

838-
ret->icon_uri = custom_icon_uri;
839-
ret->icon_name = custom_icon_name;
840-
841-
if (custom_emblems) {
842-
ret->emblems = char_list_to_strv (custom_emblems);
843-
844-
g_list_free_full (custom_emblems, g_free);
845-
} else {
846-
ret->emblems = NULL;
847-
}
827+
g_list_free_full (custom_emblems, g_free);
848828
}
829+
849830
} else if (bookmark->details->metadata) {
850831
ret = nemo_bookmark_metadata_copy (bookmark->details->metadata);
851832
}
@@ -876,8 +857,6 @@ nemo_bookmark_metadata_copy (NemoBookmarkMetadata *meta)
876857
NemoBookmarkMetadata *copy = nemo_bookmark_metadata_new ();
877858

878859
copy->bookmark_name = g_strdup (meta->bookmark_name);
879-
copy->icon_name = g_strdup (meta->icon_name);
880-
copy->icon_uri = g_strdup (meta->icon_uri);
881860
copy->emblems = g_strdupv (meta->emblems);
882861

883862
return copy;
@@ -888,8 +867,6 @@ nemo_bookmark_metadata_compare (NemoBookmarkMetadata *d1,
888867
NemoBookmarkMetadata *d2)
889868
{
890869
if (g_strcmp0 (d1->bookmark_name, d2->bookmark_name) != 0 ||
891-
g_strcmp0 (d1->icon_uri, d2->icon_uri) != 0 ||
892-
g_strcmp0 (d1->icon_name, d2->icon_name) != 0 ||
893870
(g_strv_length (d1->emblems) != g_strv_length (d2->emblems)))
894871
return FALSE;
895872

@@ -907,8 +884,6 @@ void
907884
nemo_bookmark_metadata_free (NemoBookmarkMetadata *metadata)
908885
{
909886
g_free (metadata->bookmark_name);
910-
g_free (metadata->icon_name);
911-
g_free (metadata->icon_uri);
912887
g_strfreev (metadata->emblems);
913888

914889
g_slice_free (NemoBookmarkMetadata, metadata);

libnemo-private/nemo-bookmark.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,6 @@ struct NemoBookmark {
5353
typedef struct
5454
{
5555
gchar *bookmark_name;
56-
gchar *icon_name;
57-
gchar *icon_uri;
5856
gchar **emblems;
5957
} NemoBookmarkMetadata;
6058

libnemo-private/nemo-file-private.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ struct NemoFileDetails
9191
goffset deep_size;
9292

9393
GIcon *icon;
94+
GIcon *symbolic_icon;
9495

9596
char *thumbnail_path;
9697
eel_boolean_bit thumbnail_access_problem : 1;

libnemo-private/nemo-file.c

Lines changed: 68 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#include "nemo-file-operations.h"
3737
#include "nemo-file-utilities.h"
3838
#include "nemo-global-preferences.h"
39+
#include "nemo-icon-names.h"
3940
#include "nemo-lib-self-check-functions.h"
4041
#include "nemo-link.h"
4142
#include "nemo-metadata.h"
@@ -2544,6 +2545,17 @@ update_info_internal (NemoFile *file,
25442545
file->details->icon = g_object_ref (icon);
25452546
}
25462547

2548+
icon = g_file_info_get_symbolic_icon (info);
2549+
if (!g_icon_equal (icon, file->details->symbolic_icon)) {
2550+
changed = TRUE;
2551+
2552+
if (file->details->symbolic_icon) {
2553+
g_object_unref (file->details->symbolic_icon);
2554+
}
2555+
2556+
file->details->symbolic_icon = g_object_ref (icon);
2557+
}
2558+
25472559
thumbnail_path = g_file_info_get_attribute_byte_string (info, G_FILE_ATTRIBUTE_THUMBNAIL_PATH);
25482560

25492561
if (g_strcmp0 (file->details->thumbnail_path, thumbnail_path) != 0) {
@@ -4338,43 +4350,66 @@ nemo_file_get_gicon (NemoFile *file,
43384350
return g_themed_icon_new ("text-x-generic");
43394351
}
43404352

4353+
43414354
GIcon *
4342-
nemo_file_get_emblemed_icon (NemoFile *file,
4343-
NemoFileIconFlags flags)
4344-
{
4345-
GIcon *gicon, *emblem_icon, *emblemed_icon;
4346-
GEmblem *emblem;
4347-
GList *emblem_icons, *l;
4348-
char *emblems_to_ignore[3];
4349-
int i;
4350-
4351-
gicon = nemo_file_get_gicon (file, flags);
4352-
4353-
i = 0;
4354-
emblems_to_ignore[i++] = (char *)NEMO_FILE_EMBLEM_NAME_TRASH;
4355-
emblems_to_ignore[i++] = (char *)NEMO_FILE_EMBLEM_NAME_CANT_WRITE;
4356-
emblems_to_ignore[i++] = NULL;
4357-
4358-
emblem = NULL;
4359-
emblem_icons = nemo_file_get_emblem_icons (file,
4360-
emblems_to_ignore);
4361-
4362-
emblemed_icon = g_emblemed_icon_new (gicon, NULL);
4363-
g_object_unref (gicon);
4364-
4365-
/* pick only the first emblem we can render for the tree view */
4366-
for (l = emblem_icons; l != NULL; l = l->next) {
4367-
emblem_icon = l->data;
4368-
if (nemo_icon_theme_can_render (G_THEMED_ICON (emblem_icon))) {
4369-
emblem = g_emblem_new (emblem_icon);
4370-
g_emblemed_icon_add_emblem (G_EMBLEMED_ICON (emblemed_icon), emblem);
4371-
g_object_unref (emblem);
4372-
}
4355+
get_symbolic_icon_for_file (NemoFile *file)
4356+
{
4357+
if (nemo_file_is_home (file)) {
4358+
return g_themed_icon_new (NEMO_ICON_SYMBOLIC_HOME);
43734359
}
43744360

4375-
g_list_free_full (emblem_icons, g_object_unref);
4361+
// Special folders (XDG)
4362+
if (nemo_file_is_user_special_directory (file, G_USER_DIRECTORY_DESKTOP)) {
4363+
return g_themed_icon_new (NEMO_ICON_SYMBOLIC_DESKTOP);
4364+
}
4365+
4366+
if (nemo_file_is_user_special_directory (file, G_USER_DIRECTORY_DOCUMENTS)) {
4367+
return g_themed_icon_new (NEMO_ICON_SYMBOLIC_FOLDER_DOCUMENTS);
4368+
}
4369+
4370+
if (nemo_file_is_user_special_directory (file, G_USER_DIRECTORY_DOWNLOAD)) {
4371+
return g_themed_icon_new (NEMO_ICON_SYMBOLIC_FOLDER_DOWNLOAD);
4372+
}
4373+
4374+
if (nemo_file_is_user_special_directory (file, G_USER_DIRECTORY_MUSIC)) {
4375+
return g_themed_icon_new (NEMO_ICON_SYMBOLIC_FOLDER_MUSIC);
4376+
}
4377+
4378+
if (nemo_file_is_user_special_directory (file, G_USER_DIRECTORY_PICTURES)) {
4379+
return g_themed_icon_new (NEMO_ICON_SYMBOLIC_FOLDER_PICTURES);
4380+
}
4381+
4382+
if (nemo_file_is_user_special_directory (file, G_USER_DIRECTORY_PUBLIC_SHARE)) {
4383+
return g_themed_icon_new (NEMO_ICON_SYMBOLIC_FOLDER_PUBLIC_SHARE);
4384+
}
4385+
4386+
if (nemo_file_is_user_special_directory (file, G_USER_DIRECTORY_TEMPLATES)) {
4387+
return g_themed_icon_new (NEMO_ICON_SYMBOLIC_FOLDER_TEMPLATES);
4388+
}
4389+
4390+
if (nemo_file_is_user_special_directory (file, G_USER_DIRECTORY_VIDEOS)) {
4391+
return g_themed_icon_new (NEMO_ICON_SYMBOLIC_FOLDER_VIDEOS);
4392+
}
4393+
4394+
if (nemo_file_is_user_special_directory (file, G_USER_DIRECTORY_TEMPLATES)) {
4395+
return g_themed_icon_new (NEMO_ICON_SYMBOLIC_FOLDER_TEMPLATES);
4396+
}
4397+
4398+
return g_content_type_get_symbolic_icon (file->details->mime_type);
4399+
}
4400+
4401+
GIcon *
4402+
nemo_file_get_control_icon (NemoFile *file)
4403+
{
4404+
GIcon *gicon;
4405+
4406+
if (file->details->symbolic_icon != NULL) {
4407+
gicon = g_object_ref (file->details->symbolic_icon);
4408+
} else {
4409+
gicon = get_symbolic_icon_for_file (file);
4410+
}
43764411

4377-
return emblemed_icon;
4412+
return gicon;
43784413
}
43794414

43804415
static gint

libnemo-private/nemo-file.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -450,8 +450,7 @@ char * nemo_file_get_drop_target_uri (NemoFile
450450

451451
GIcon * nemo_file_get_gicon (NemoFile *file,
452452
NemoFileIconFlags flags);
453-
GIcon * nemo_file_get_emblemed_icon (NemoFile *file,
454-
NemoFileIconFlags flags);
453+
GIcon * nemo_file_get_control_icon (NemoFile *file);
455454

456455
NemoIconInfo * nemo_file_get_icon (NemoFile *file,
457456
int size,

libnemo-private/nemo-icon-names.h

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,34 @@
3131
/* Icons not provided by fd.o naming spec or nemo itself */
3232
#define NEMO_ICON_BURN "nemo-cd-burner"
3333

34+
35+
#define NEMO_ICON_SYMBOLIC_DESKTOP "user-desktop-symbolic"
36+
#define NEMO_ICON_SYMBOLIC_FILESYSTEM "drive-harddisk-symbolic"
37+
#define NEMO_ICON_SYMBOLIC_FOLDER "folder-symbolic"
38+
#define NEMO_ICON_SYMBOLIC_FOLDER_REMOTE "folder-remote-symbolic"
39+
#define NEMO_ICON_SYMBOLIC_HOME "user-home-symbolic"
40+
#define NEMO_ICON_SYMBOLIC_NETWORK "network-workgroup-symbolic"
41+
#define NEMO_ICON_SYMBOLIC_NETWORK_SERVER "network-server-symbolic"
42+
#define NEMO_ICON_SYMBOLIC_TRASH "user-trash-symbolic"
43+
#define NEMO_ICON_SYMBOLIC_TRASH_FULL "user-trash-full-symbolic"
44+
45+
#define NEMO_ICON_SYMBOLIC_FOLDER_DOCUMENTS "folder-documents-symbolic"
46+
#define NEMO_ICON_SYMBOLIC_FOLDER_DOWNLOAD "folder-download-symbolic"
47+
#define NEMO_ICON_SYMBOLIC_FOLDER_MUSIC "folder-music-symbolic"
48+
#define NEMO_ICON_SYMBOLIC_FOLDER_PICTURES "folder-pictures-symbolic"
49+
#define NEMO_ICON_SYMBOLIC_FOLDER_PUBLIC_SHARE "folder-publicshare-symbolic"
50+
#define NEMO_ICON_SYMBOLIC_FOLDER_TEMPLATES "folder-templates-symbolic"
51+
#define NEMO_ICON_SYMBOLIC_FOLDER_VIDEOS "folder-videos-symbolic"
52+
#define NEMO_ICON_SYMBOLIC_FOLDER_SAVED_SEARCH "folder-saved-search-symbolic"
53+
54+
55+
56+
57+
58+
59+
60+
61+
62+
3463
#endif /* NEMO_ICON_NAMES_H */
3564

libnemo-private/nemo-trash-monitor.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,9 @@ update_icon (NemoTrashMonitor *trash_monitor)
9595
g_clear_object (&trash_monitor->details->icon);
9696

9797
if (trash_monitor->details->empty) {
98-
trash_monitor->details->icon = g_themed_icon_new (NEMO_ICON_TRASH);
98+
trash_monitor->details->icon = g_themed_icon_new (NEMO_ICON_SYMBOLIC_TRASH);
9999
} else {
100-
trash_monitor->details->icon = g_themed_icon_new (NEMO_ICON_TRASH_FULL);
100+
trash_monitor->details->icon = g_themed_icon_new (NEMO_ICON_SYMBOLIC_TRASH_FULL);
101101
}
102102
}
103103

src/nemo-bookmark-list.c

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -676,14 +676,7 @@ load_bookmark_metadata_file (NemoBookmarkList *list)
676676
NemoBookmarkMetadata *meta = nemo_bookmark_metadata_new ();
677677

678678
meta->bookmark_name = g_strdup (items[i]);
679-
meta->icon_uri = g_key_file_get_string (kfile,
680-
items[i],
681-
KEY_ICON_URI,
682-
NULL);
683-
meta->icon_name = g_key_file_get_string (kfile,
684-
items[i],
685-
KEY_ICON_NAME,
686-
NULL);
679+
687680
meta->emblems = g_key_file_get_string_list (kfile,
688681
items[i],
689682
KEY_ICON_EMBLEMS,
@@ -862,18 +855,6 @@ save_bookmark_metadata_file (NemoBookmarkList *list)
862855
if (data == NULL)
863856
continue;
864857

865-
if (data->icon_uri)
866-
g_key_file_set_string (kfile,
867-
nemo_bookmark_get_name (bookmark),
868-
KEY_ICON_URI,
869-
data->icon_uri);
870-
871-
if (data->icon_name)
872-
g_key_file_set_string (kfile,
873-
nemo_bookmark_get_name (bookmark),
874-
KEY_ICON_NAME,
875-
data->icon_name);
876-
877858
if (data->emblems) {
878859
g_key_file_set_string_list (kfile,
879860
nemo_bookmark_get_name (bookmark),

0 commit comments

Comments
 (0)