20
20
new ThemedIcon("folder-open"), new ThemedIcon("folder"));
21
21
user_folder_group = new SpecialGrouping(2, "",
22
22
IconFactory.instance.get_custom_icon("tags", IconFactory.ICON_SIDEBAR));
23
folder_entries = new Gee.HashMap<Geary.FolderPath, FolderEntry>();
23
folder_entries = new Gee.HashMap<Geary.FolderPath, FolderEntry>(
24
Geary.Hashable.hash_func, Geary.Equalable.equal_func);
25
26
account.information.notify["nickname"].connect(on_nicknamed_changed);
79
80
public void add_folder(Geary.Folder folder) {
81
Sidebar.Entry? graft_point = null;
80
82
FolderEntry folder_entry = new FolderEntry(folder);
81
83
Geary.SpecialFolderType special_folder_type = folder.get_special_folder_type();
82
84
if (special_folder_type != Geary.SpecialFolderType.NONE) {
86
88
case Geary.SpecialFolderType.FLAGGED:
87
89
case Geary.SpecialFolderType.IMPORTANT:
88
90
case Geary.SpecialFolderType.ALL_MAIL:
89
graft(get_root(), folder_entry);
91
graft_point = get_root();
92
94
// Others go in the "More" grouping.
94
graft(uncommon_special_group, folder_entry);
96
graft_point = uncommon_special_group;
97
99
} else if (folder.get_path().get_parent() == null) {
98
100
// Top-level folders get put in our special user folders group.
99
graft(user_folder_group, folder_entry);
101
graft_point = user_folder_group;
101
103
Sidebar.Entry? entry = folder_entries.get(folder.get_path().get_parent());
103
debug("Could not add folder %s of type %s to folder list", folder.to_string(),
104
special_folder_type.to_string());
107
graft(entry, folder_entry);
110
folder_entries.set(folder.get_path(), folder_entry);
108
// Due to how we enumerate folders on the server, it's unfortunately
109
// possible now to have two folders that we'd put in the same place in
110
// our tree. In that case, we just ignore the second folder for now.
112
if (graft_point != null) {
113
Sidebar.Entry? twin = find_first_child(graft_point, (e) => {
114
return e.get_sidebar_name() == folder_entry.get_sidebar_name();
120
if (graft_point != null) {
121
graft(graft_point, folder_entry);
122
folder_entries.set(folder.get_path(), folder_entry);
124
debug("Could not add folder %s of type %s to folder list", folder.to_string(),
125
special_folder_type.to_string());
113
129
public void remove_folder(Geary.Folder folder) {