void ChangeDirectory(string directory) { var di = new DirectoryInfo(directory); var pdi = di.Parent; var items = Enumerable.Repeat((Item) new ParentItem(pdi != null ? pdi.FullName : "drives"), 1) .Concat(di.GetDirectories().Select(n => new DirectoryItem { Name = n.FullName, Date = n.LastAccessTime })) .Concat(di.GetFiles().Select(n => new FileItem { Name = n.FullName, Date = n.LastAccessTime, Size = n.Length })).ToArray(); List.ItemsSource = items; List1.ItemsSource = items; Task.Run(() => { try { foreach (var item in (items as Item[]).OfType <FileItem>()) { item.Version = FileVersion.Get(item.Name); } } catch { } }); }
public override void FillConflicts(ConflictItem conflict, bool target) { if (conflict != null) { var source = Path.Combine(Directory, conflict.NameWithSubPath); var info = new FileInfo(source); if (target) { conflict.TargetFileSize = info.Length; conflict.TargetVersion = FileVersion.Get(source); conflict.TargetDateTime = info.LastWriteTime; } else { conflict.SourceVersion = FileVersion.Get(source); conflict.SourceDateTime = info.LastWriteTime; } } }
ItemUpdate GetItemUpdate(string directory, Item item, int index, int requestNumber) { try { if (Interlocked.CompareExchange(ref this.requestNumber, requestNumber, requestNumber) != requestNumber) { return(null); } string version = null; var fullName = Path.Combine(directory, item.Name); var updateTime = default(DateTime); if (item.Extension.ToLower() == ".jpg") { using (var er = new ExifReader(fullName)) { DateTime exifTime; if (er.GetTagValue <DateTime>(ExifReader.ExifTags.DateTimeOriginal, out exifTime)) { updateTime = exifTime; } } } else { version = FileVersion.Get(fullName); } if (!string.IsNullOrEmpty(version) || updateTime != default(DateTime)) { return(new ItemUpdate(index, version, updateTime)); } return(null); } catch (Exception) { return(null); } }