public void AddFileInCluster(File _file) { //Random choose color if not exists SolidColorBrush color; do { color = new SolidColorBrush(Color.FromRgb((byte)random.Next(255), (byte)random.Next(255), (byte)random.Next(255))); } while (IsColorUsed(color)); var index = 0; var first = true; //Save last cluster for assign next cluster to file ContentFileCluster saveLastClusterFile = null; Cluster saveLastCluster = null; foreach (var cluster in fileSystem.Clusters) { if (cluster.Content is EmptyContentCluster) { if (first) { ((FatFileMetada)_file.Metadata).FirstCluster = cluster; first = false; } if (saveLastClusterFile != null) { saveLastClusterFile.NextCluster = cluster; } var currentFragmentFile = _file.FragmentFiles[index]; currentFragmentFile.Color = color; currentFragmentFile.PreviousCluster = saveLastCluster; cluster.Content = currentFragmentFile; saveLastClusterFile = (ContentFileCluster)cluster.Content; saveLastCluster = cluster; index++; } //if all files are initialized if (index == _file.FragmentFiles.Count) { break; } } }
public Cluster GetClusterByFragmentFile(ContentFileCluster _fragmentFile) { return(Clusters.FirstOrDefault(_cluster => _cluster.Content == _fragmentFile)); }