コード例 #1
0
        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
                {
                }
            });
        }
コード例 #2
0
 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;
         }
     }
 }
コード例 #3
0
        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);
            }
        }