.config
.foam
.kanbn
.vscode
BlurHash
BlurHash.Core
BlurHash.System.Drawing.Common
Compare
Copy-Distinct
Date-Group
Delete-By-Distinct
Delete-By-Relative
Distance
Drag-Drop-Explorer
Drag-Drop-Move
Drag-Drop-Search
.vscode
Models
Drag-Drop-Search.csproj
DragDropSearch.Designer.cs
DragDropSearch.cs
Program.cs
Drag-Drop-Set-Property-Item
Duplicate-Search
Face
FaceParts
FaceRecognitionDotNet
Instance
Map
Metadata
Metadata-Query
Mirror-Length
Move-By-Id
Offset-Date-Time-Original
Person
PhotoPrism
PrepareForOld
Property
Property-Compare
Rename
Resize
Set-Created-Date
Shared
Tests
TestsWithFaceRecognitionDotNet
ThumbHash
.editorconfig
.gitattributes
.gitignore
.prettierignore
.txt
View-by-Distance-MKLink-Console.sln
package-lock.json
package.json
67 lines
2.2 KiB
C#
67 lines
2.2 KiB
C#
using View_by_Distance.Shared.Models;
|
|
|
|
namespace View_by_Distance.Drag_Drop;
|
|
|
|
public class Program
|
|
{
|
|
/// <summary>
|
|
/// The main entry point for the application.
|
|
/// </summary>
|
|
[STAThread]
|
|
static void Main()
|
|
{
|
|
ApplicationConfiguration.Initialize();
|
|
Application.Run(new DragDropSearch());
|
|
}
|
|
|
|
private static Item[] GetFilterItems(Models.Configuration configuration, Container container)
|
|
{
|
|
List<Item> results = new();
|
|
foreach (Item item in container.Items)
|
|
{
|
|
if (item.ImageFileHolder is not null
|
|
&& item.IsValidImageFormatExtension
|
|
&& !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<Item> GetItemCollection(Models.Configuration configuration, Container[] containers)
|
|
{
|
|
List<Item> 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;
|
|
}
|
|
|
|
} |