예제 #1
0
 public FolderCmpItem createCmpItem(FileInfo file, FileInfo secondFile, string imagePath, string statusCmp, string parentDir, string pathToCopy = null, string color = null, bool isCheck = false)
 {
     return(new FolderCmpItem()
     {
         firstName = file == null ? "" : file.FullName,
         firstSize = file == null ? "" : MyFile.GetFileSize(file),
         firstDate = file == null ? "" : MyFile.GetFileDate(file),
         сmpIcon = imagePath == null ? null : imagePath,
         secondDate = secondFile == null ? "" : MyFile.GetFileDate(secondFile),
         secondSize = secondFile == null ? "" : MyFile.GetFileSize(secondFile),
         secondName = secondFile == null ? "" : secondFile.FullName,
         status = statusCmp,
         parentDir = parentDir,
         pathToCopy = pathToCopy,
         color = color,
         isCheck = isCheck
     });
 }
        private void CompareFilesInFolder(string leftPath, string rightPath)
        {
            string filter = filterExtension.Text;

            filesToRightPathCopy.Clear();
            filesToLeftPathCopy.Clear();

            leftFiles  = MyFile.GetFiles(leftPath, filter);
            rightFiles = MyFile.GetFiles(rightPath, filter);
            string        imgPath;
            FolderCmpItem cpmItem = new FolderCmpItem();
            string        pathToCopy;

            if (leftFiles.Length > 0 || rightFiles.Length > 0)
            {
                SyncBtn.IsEnabled = true;
            }

            foreach (FileInfo file in leftFiles)
            {
                int index = Array.IndexOf(rightFiles, rightFiles.FirstOrDefault(f => f.Name == file.Name));
                if (index > -1)
                {
                    FileInfo secondFile = rightFiles[index];
                    imgPath = EQUAL_IMG;
                    string redItem = "red";

                    if (byDate.IsChecked == true)
                    {
                        string dateFile_1 = MyFile.GetFileDate(file);
                        string dateFile_2 = MyFile.GetFileDate(secondFile);

                        DateTime nowdate      = DateTime.Today;
                        DateTime filedate_1   = file.LastWriteTime;
                        DateTime filedate_2   = secondFile.LastWriteTime;
                        TimeSpan comparevalue = filedate_2 - filedate_1;

                        if (Math.Abs(comparevalue.Seconds) > 0)
                        {
                            imgPath    = NOT_EQUAL_IMG;
                            pathToCopy = BuiltPathToCopy(file, LEFT);

                            ListCmpFilesCollections.Add(cpmItem.createCmpItem(file, secondFile, imgPath, NOT_EQUAL_COPY_BY_DATE, rightPath, pathToCopy, redItem));
                        }
                        else
                        {
                            pathToCopy = BuiltPathToCopy(file, RIGHT);
                            ListCmpFilesCollections.Add(cpmItem.createCmpItem(file, secondFile, imgPath, NOT_EQUAL_COPY_BY_DATE, leftPath));
                        }
                    }
                    else
                    {
                        ListCmpFilesCollections.Add(cpmItem.createCmpItem(file, secondFile, imgPath, EQUALLY, leftPath));
                    }

                    //delete this file in rightFiles
                    List <FileInfo> tmp = new List <FileInfo>(rightFiles);
                    tmp.RemoveAt(index);
                    rightFiles = tmp.ToArray();
                }
                else
                {
                    imgPath    = LEFT_ARROW_IMG;
                    pathToCopy = BuiltPathToCopy(file, LEFT);

                    ListCmpFilesCollections.Add(cpmItem.createCmpItem(file, null, imgPath, NOT_EXIST_RIGHT_SIDE, leftPath, pathToCopy));
                    filesToRightPathCopy.Add(file);
                }
            }

            foreach (FileInfo secondFile in rightFiles)
            {
                imgPath    = RIGHT_ARROW_IMG;
                pathToCopy = BuiltPathToCopy(secondFile, RIGHT);
                ListCmpFilesCollections.Add(cpmItem.createCmpItem(null, secondFile, imgPath, NOT_EXIST_LEFT_SIDE, rightPath, pathToCopy));
                filesToLeftPathCopy.Add(secondFile);
            }
            foldersCmpList.ItemsSource = ListCmpFilesCollections;
        }