public void LinkAllImages(EnhancedFileInfo file) { for (int imageSearchesPos = 0; imageSearchesPos < this.imageSearches.Count; imageSearchesPos++) { this.LinkImages(file, this.ImageSearches[imageSearchesPos]); } }
/// <summary> /// Adds an EnhancedFileInfo object to the FilesQueue /// </summary> /// <param name="file">The EnhancedFileInfo object to be added</param> public void Enqueue(EnhancedFileInfo file) { lock (((ICollection)_files).SyncRoot) { _files.Enqueue(file); } _totalFiles++; if ((_import.Importer.ChainingOption != ChainOption.ChainByTags) || (file == null)) { _waitHandle.Set(); } }
/// <summary> /// Adds an array of EnhancedFileInfo objects to the FilesQueue /// </summary> /// <param name="files">The array of EnhancedFileInfo objects to be added</param> public void Enqueue(EnhancedFileInfo[] files) { if (files.Length <= 0) return; lock (((ICollection)_files).SyncRoot) { foreach (EnhancedFileInfo t in files) { _files.Enqueue(t); } _totalFiles += files.Length; } }
public void LinkImages(EnhancedFileInfo file, ImageSearchOptions searchOptions) { this.LogMessages.Enqueue(new LogMessage("Info", " Searching images")); if (searchOptions.ImageTagName.Length > 0) { file.Item.Tags[searchOptions.ImageTagName] = string.Empty; } if (searchOptions.ImageTagName.Length == 0 || searchOptions.SaveInImageBaseTag) { file.Item.ImageFile = string.Empty; } List<string> imagePaths = new List<string>(); EnhancedFileInfo tmpFile = file; string[] parameter = searchOptions.ImageFolderSearchPattern.Split(';').Select(mask => MLItem.EvaluateTagValues(mask, tmpFile.Item)). ToArray(); string evaluatedImageFileMasks = string.Join(":", parameter); this.LogMessages.Enqueue(new LogMessage("Info", " in the image folder")); imagePaths.AddRange(this.CachedImages.Query(searchOptions.ImageFolder, evaluatedImageFileMasks)); bool shouldSearchInFileFolder = (searchOptions.SearchFileFolderOptions == "Always".Translate()) || ((searchOptions.SearchFileFolderOptions == "When no linked files in links rootfolder".Translate()) && (imagePaths.Count == 0)); if (shouldSearchInFileFolder) { string[] parameter2 = searchOptions.FileFolderSearchPattern.Split(';').Select( mask => MLItem.EvaluateTagValues(mask, tmpFile.Item)).ToArray(); evaluatedImageFileMasks = string.Join(":", parameter2); this.LogMessages.Enqueue(new LogMessage("Info", " in the files folder")); imagePaths.AddRange( this.CachedImages.Query(file.FileInformation.DirectoryName, evaluatedImageFileMasks)); } if ((searchOptions.MaxImages > 0) && (imagePaths.Count > searchOptions.MaxImages)) { imagePaths.RemoveRange(searchOptions.MaxImages, imagePaths.Count - searchOptions.MaxImages); } if (imagePaths.Count > 0) { this.LogMessages.Enqueue(new LogMessage("Info", " Writing image tag(s)")); MLTag imageFile = new MLTag("ImageFile", string.Empty); foreach (string image in imagePaths) { imageFile.Values.Add(image); } if (searchOptions.ImageTagName.Equals(string.Empty)) { file.Item.ImageFile = imageFile.Value; } else { file.Item.Tags[searchOptions.ImageTagName] = imageFile.Value; if (searchOptions.SaveInImageBaseTag) { file.Item.Tags["imagefile"] = imageFile.Values[0]; file.Item.ImageFile = imageFile.Values[0]; } } this.LogMessages.Enqueue(new LogMessage("Info", " ..Done writing image tag(s)")); } }