private void RemoveItem(PathTuple <TConfigType> itemTuple) { ItemsByPath.Remove(itemTuple.Path); ItemsByFolder.Remove(Path.GetDirectoryName(itemTuple.Path)); Items.Remove(itemTuple); OnRemoveItem?.Invoke(itemTuple); }
/// <summary> /// Populates the mod list governed by <see cref="Items"/>. /// </summary> private void GetItems(bool executeImmediately, CancellationToken cancellationToken = default) { try { var itemTuples = _getAllConfigs(); // Set new collection of mods by path. ItemsByPath.Clear(); ItemsByFolder.Clear(); foreach (var item in itemTuples) { ItemsByPath[item.Path] = item; ItemsByFolder[Path.GetDirectoryName(item.Path)] = item; } if (executeImmediately) { Collections.ModifyObservableCollection(Items, itemTuples); } else { _context.Send((x) => { Collections.ModifyObservableCollection(Items, itemTuples); }, null); } } catch (Exception) { // ignored } }
private void OnDeleteDirectory(object sender, FileSystemEventArgs e) { if (ItemsByFolder.TryGetValue(e.FullPath, out var deletedMod)) { _context.Post(() => { RemoveItem(deletedMod); }); } }