using View_by_Distance.Shared.Models; namespace View_by_Distance.Drag_Drop; static class Program { /// /// The main entry point for the application. /// [STAThread] static void Main() { ApplicationConfiguration.Initialize(); Application.Run(new DragDropSearch()); } private static Item[] GetFilterItems(Models.Configuration configuration, Container container) { List results = new(); foreach (Item item in container.Items) { if (item.ImageFileHolder is not null && (item.Abandoned is null || !item.Abandoned.Value) && item.ValidImageFormatExtension && !configuration.IgnoreExtensions.Contains(item.ImageFileHolder.ExtensionLowered)) results.Add(item); } return results.ToArray(); } private static bool IsIgnoreRelativePath(Models.Configuration configuration, string directory) { bool result = false; string? checkDirectory = Path.GetFullPath(directory); for (int i = 0; i < int.MaxValue; i++) { if (configuration.IgnoreRelativePaths.Contains(Path.GetFileName(checkDirectory))) { result = true; break; } checkDirectory = Path.GetDirectoryName(checkDirectory); if (string.IsNullOrEmpty(checkDirectory) || checkDirectory == configuration.PropertyConfiguration.RootDirectory) break; } return result; } public static List GetItemCollection(Models.Configuration configuration, Container[] containers) { List results = new(); Item[] filteredItems; foreach (Container container in containers) { if (!container.Items.Any()) continue; if (configuration.IgnoreRelativePaths.Any(l => container.SourceDirectory.Contains(l)) && IsIgnoreRelativePath(configuration, container.SourceDirectory)) continue; filteredItems = GetFilterItems(configuration, container); if (!filteredItems.Any()) continue; foreach (Item item in filteredItems) results.Add(item); } return results; } }