using System.Text.Json; using System.Text.Json.Serialization; namespace View_by_Distance.Drag_Drop.Models; public class Configuration { protected Property.Models.Configuration _PropertyConfiguration; public Property.Models.Configuration PropertyConfiguration => _PropertyConfiguration; public bool CheckDFaceAndUpWriteDates { init; get; } public bool CheckJsonForDistanceResults { init; get; } public int CrossDirectoryMaxItemsInDistanceCollection { init; get; } public int DistanceFactor { init; get; } public bool ForceFaceLastWriteTimeToCreationTime { init; get; } public bool ForceMetadataLastWriteTimeToCreationTime { init; get; } public bool ForceResizeLastWriteTimeToCreationTime { init; get; } public string[] IgnoreExtensions { init; get; } public string[] IgnoreRelativePaths { init; get; } public string[] JLinks { init; get; } public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { init; get; } public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { init; get; } public bool LoadOrCreateThenSaveIndex { init; get; } public int? MappedMaxIndex { init; get; } public string[] MixedYearRelativePaths { init; get; } public string ModelDirectory { init; get; } public string ModelName { init; get; } public int NumberOfJitters { init; get; } public int NumberOfTimesToUpsample { init; get; } public string OutputExtension { init; get; } public int OutputQuality { init; get; } public string[] OutputResolutions { init; get; } public bool OverrideForFaceImages { init; get; } public bool OverrideForFaceLandmarkImages { init; get; } public bool OverrideForResizeImages { init; get; } public string PersonBirthdayFormat { init; get; } public string PredictorModelName { init; get; } public bool PropertiesChangedForDistance { init; get; } public bool PropertiesChangedForFaces { init; get; } public bool PropertiesChangedForIndex { init; get; } public bool PropertiesChangedForMetadata { init; get; } public bool PropertiesChangedForResize { init; get; } public bool Reverse { init; get; } public string[] SaveFaceLandmarkForOutputResolutions { init; get; } public bool SaveFullYearOfRandomFiles { init; get; } public string[] SaveFilteredOriginalImagesFromJLinksForOutputResolutions { init; get; } public string[] SaveShortcutsForOutputResolutions { init; get; } public bool SaveResizedSubfiles { init; get; } public bool SkipSearch { init; get; } public bool TestDistanceResults { init; get; } public string[] ValidResolutions { init; get; } [JsonConstructor] public Configuration(Property.Models.Configuration propertyConfiguration, bool checkDFaceAndUpWriteDates, bool checkJsonForDistanceResults, int crossDirectoryMaxItemsInDistanceCollection, int distanceFactor, bool forceFaceLastWriteTimeToCreationTime, bool forceMetadataLastWriteTimeToCreationTime, bool forceResizeLastWriteTimeToCreationTime, string[] ignoreExtensions, string[] ignoreRelativePaths, string[] jLinks, string[] loadOrCreateThenSaveDistanceResultsForOutputResolutions, string[] loadOrCreateThenSaveImageFacesResultsForOutputResolutions, bool loadOrCreateThenSaveIndex, int? mappedMaxIndex, string[] mixedYearRelativePaths, string modelDirectory, string modelName, int numberOfJitters, int numberOfTimesToUpsample, string outputExtension, int outputQuality, string[] outputResolutions, bool overrideForFaceImages, bool overrideForFaceLandmarkImages, bool overrideForResizeImages, string personBirthdayFormat, string predictorModelName, bool propertiesChangedForDistance, bool propertiesChangedForFaces, bool propertiesChangedForIndex, bool propertiesChangedForMetadata, bool propertiesChangedForResize, bool reverse, string[] saveFaceLandmarkForOutputResolutions, bool saveFullYearOfRandomFiles, string[] saveFilteredOriginalImagesFromJLinksForOutputResolutions, string[] saveShortcutsForOutputResolutions, bool saveResizedSubfiles, bool skipSearch, bool testDistanceResults, string[] validResolutions) { _PropertyConfiguration = propertyConfiguration; CheckDFaceAndUpWriteDates = checkDFaceAndUpWriteDates; CheckJsonForDistanceResults = checkJsonForDistanceResults; CrossDirectoryMaxItemsInDistanceCollection = crossDirectoryMaxItemsInDistanceCollection; DistanceFactor = distanceFactor; ForceFaceLastWriteTimeToCreationTime = forceFaceLastWriteTimeToCreationTime; ForceMetadataLastWriteTimeToCreationTime = forceMetadataLastWriteTimeToCreationTime; ForceResizeLastWriteTimeToCreationTime = forceResizeLastWriteTimeToCreationTime; IgnoreExtensions = ignoreExtensions; IgnoreRelativePaths = ignoreRelativePaths; JLinks = jLinks; LoadOrCreateThenSaveDistanceResultsForOutputResolutions = loadOrCreateThenSaveDistanceResultsForOutputResolutions; LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = loadOrCreateThenSaveImageFacesResultsForOutputResolutions; LoadOrCreateThenSaveIndex = loadOrCreateThenSaveIndex; MappedMaxIndex = mappedMaxIndex; MixedYearRelativePaths = mixedYearRelativePaths; ModelDirectory = modelDirectory; ModelName = modelName; NumberOfJitters = numberOfJitters; NumberOfTimesToUpsample = numberOfTimesToUpsample; OutputExtension = outputExtension; OutputQuality = outputQuality; OutputResolutions = outputResolutions; OverrideForFaceImages = overrideForFaceImages; OverrideForFaceLandmarkImages = overrideForFaceLandmarkImages; OverrideForResizeImages = overrideForResizeImages; PersonBirthdayFormat = personBirthdayFormat; PredictorModelName = predictorModelName; PropertiesChangedForDistance = propertiesChangedForDistance; PropertiesChangedForFaces = propertiesChangedForFaces; PropertiesChangedForIndex = propertiesChangedForIndex; PropertiesChangedForMetadata = propertiesChangedForMetadata; PropertiesChangedForResize = propertiesChangedForResize; Reverse = reverse; SaveFaceLandmarkForOutputResolutions = saveFaceLandmarkForOutputResolutions; SaveFullYearOfRandomFiles = saveFullYearOfRandomFiles; SaveFilteredOriginalImagesFromJLinksForOutputResolutions = saveFilteredOriginalImagesFromJLinksForOutputResolutions; SaveShortcutsForOutputResolutions = saveShortcutsForOutputResolutions; SaveResizedSubfiles = saveResizedSubfiles; SkipSearch = skipSearch; TestDistanceResults = testDistanceResults; ValidResolutions = validResolutions; } public override string ToString() { string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true }); return result; } public void SetAndUpdate(Property.Models.Configuration configuration) { _PropertyConfiguration = configuration; _PropertyConfiguration.Update(); } }