CombinedEnumAndIndex
This commit is contained in:
@ -51,7 +51,7 @@ internal abstract partial class XDirectory
|
||||
int ceilingAverage = directory[^1] == '_' || results.Count == 0 ? 0 : GetCeilingAverage(results);
|
||||
if (useCeilingAverage)
|
||||
results = GetFilesCollection(results, ceilingAverage);
|
||||
return new(results);
|
||||
return results.AsReadOnly();
|
||||
}
|
||||
|
||||
internal static ReadOnlyCollection<ReadOnlyCollection<FilePath>> GetFilePathCollections(Properties.IPropertyConfiguration propertyConfiguration, string directorySearchFilter, string fileSearchFilter, string directory, bool useCeilingAverage)
|
||||
@ -326,10 +326,10 @@ internal abstract partial class XDirectory
|
||||
}
|
||||
results.Add(new(filePaths));
|
||||
}
|
||||
return new(results);
|
||||
return results.AsReadOnly();
|
||||
}
|
||||
|
||||
internal static (string[], List<(FilePath, string)>) GetToDoCollection(Properties.IPropertyConfiguration propertyConfiguration, bool copyDuplicates, bool ifCanUseId, ReadOnlyCollection<ReadOnlyCollection<FilePath>> filePathsCollection, IReadOnlyDictionary<string, ReadOnlyCollection<string>> fileGroups, Action? tick)
|
||||
internal static (string[], List<(FilePath, string)>) GetToDoCollection(Properties.IPropertyConfiguration propertyConfiguration, bool copyDuplicates, bool ifCanUseId, ReadOnlyCollection<ReadOnlyCollection<FilePath>> filePathsCollection, IReadOnlyDictionary<string, ReadOnlyDictionary<byte, ReadOnlyCollection<string>>> fileGroups, Action? tick)
|
||||
{
|
||||
List<(FilePath, string)> results = [];
|
||||
string key;
|
||||
@ -338,18 +338,18 @@ internal abstract partial class XDirectory
|
||||
string directory;
|
||||
FileInfo fileInfo;
|
||||
FilePath filePath;
|
||||
int directoryIndex;
|
||||
string paddedIdFile;
|
||||
bool wrapped = false;
|
||||
string intelligentId;
|
||||
CombinedEnumAndIndex cei;
|
||||
bool paddedCheck = false;
|
||||
string fileDirectoryName;
|
||||
List<int> distinctIds = [];
|
||||
List<string> distinct = [];
|
||||
Models.FileHolder fileHolder;
|
||||
List<string> distinctDirectories = [];
|
||||
ReadOnlyCollection<string>? directories;
|
||||
FilePath[] sortedRecords = GetSortedRecords(filePathsCollection);
|
||||
ReadOnlyDictionary<byte, ReadOnlyCollection<string>>? keyValuePairs;
|
||||
bool isOffsetDeterministicHashCode = IId.IsOffsetDeterministicHashCode(propertyConfiguration);
|
||||
for (int i = 0; i < sortedRecords.Length; i++)
|
||||
{
|
||||
@ -358,21 +358,21 @@ internal abstract partial class XDirectory
|
||||
if (filePath.Name.EndsWith("len") || filePath.ExtensionLowered == ".id" || filePath.ExtensionLowered == ".lsv" || filePath.DirectoryFullPath is null)
|
||||
continue;
|
||||
key = propertyConfiguration.ValidVideoFormatExtensions.Contains(filePath.ExtensionLowered) ? propertyConfiguration.ResultContentCollection : propertyConfiguration.ResultContent;
|
||||
if (!fileGroups.TryGetValue(key, out directories))
|
||||
if (!fileGroups.TryGetValue(key, out keyValuePairs))
|
||||
continue;
|
||||
(_, directoryIndex) = IPath.GetDirectoryNameAndIndex(propertyConfiguration, filePath);
|
||||
cei = IPath.GetCombinedEnumAndIndex(propertyConfiguration, filePath);
|
||||
fileDirectoryName = Path.GetFileName(filePath.DirectoryFullPath);
|
||||
if (fileDirectoryName.Length < propertyConfiguration.ResultAllInOneSubdirectoryLength + 3 || !filePath.Name.StartsWith(fileDirectoryName))
|
||||
{
|
||||
if (wrapped)
|
||||
continue;
|
||||
directory = directories[directoryIndex];
|
||||
directory = keyValuePairs[cei.Enum][cei.Index];
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!wrapped)
|
||||
wrapped = true;
|
||||
directory = Path.Combine(directories[directoryIndex], fileDirectoryName);
|
||||
directory = Path.Combine(keyValuePairs[cei.Enum][cei.Index], fileDirectoryName);
|
||||
}
|
||||
if (ifCanUseId && filePath.IsIntelligentIdFormat && filePath.Id is not null && filePath.DirectoryFullPath is not null)
|
||||
{
|
||||
|
Reference in New Issue
Block a user