예제 #1
0
        public static void FillMenu(DuplPairViewModel res, out string firstToSecond, out string secondToFirst,
                                    out IUCommand firstToSecondCommand, out IUCommand secondToFirstCommand)
        {
            string menuText;

            if (Path.GetDirectoryName(res.FirstFile.Path) == Path.GetDirectoryName(res.SecondFile.Path))
            {
                menuText = "Переименовать {0} в {1}";
                string firstNewName = GetSimilarName(res.SecondFile.Path, res.FirstFile.Path);
                firstToSecond        = String.Format(menuText, Path.GetFileName(res.FirstFile.Path), Path.GetFileName(firstNewName));
                firstToSecondCommand = new RenameLikeCommand(res, firstNewName, PositionInDuplPair.First);

                string secondNewName = GetSimilarName(res.FirstFile.Path, res.SecondFile.Path);
                secondToFirst        = String.Format(menuText, Path.GetFileName(res.SecondFile.Path), Path.GetFileName(secondNewName));
                secondToFirstCommand = new RenameLikeCommand(res, secondNewName, PositionInDuplPair.Second);
            }
            else
            {
                menuText = "Переместить в {0} и переименовать {1} в {2}";
                string firstNewName = GetSimilarName(res.SecondFile.Path, res.FirstFile.Path);
                firstToSecond = String.Format(menuText, Path.GetDirectoryName(res.SecondFile.Path),
                                              Path.GetFileName(res.FirstFile.Path), Path.GetFileName(firstNewName));
                firstToSecondCommand = new RenameLikeCommand(res, firstNewName, PositionInDuplPair.First);
                string secondNewName = GetSimilarName(res.FirstFile.Path, res.SecondFile.Path);
                secondToFirst = String.Format(menuText, Path.GetDirectoryName(res.FirstFile.Path),
                                              Path.GetFileName(res.SecondFile.Path), Path.GetFileName(secondNewName));
                secondToFirstCommand = new RenameLikeCommand(res, secondNewName, PositionInDuplPair.Second);
            }
        }
예제 #2
0
 public DuplicateGroup(DuplPairViewModel result)
 {
     ResultList = new List <DuplPairViewModel>(1);
     ResultList.Add(result);
     FileList = new ObservableCollection <ImageInfoClass>();
     FileList.Add(result.FirstFile);
     FileList.Add(result.SecondFile);
 }
예제 #3
0
        public static void CalculateIndex(DuplPairViewModel viewResultOfDupl, IConfigurationModel configuration)
        {
            List <ImageInfoClass> list = new List <ImageInfoClass>(2);

            list.Add(viewResultOfDupl.FirstFile);
            list.Add(viewResultOfDupl.SecondFile);
            CalculateIndex(list, configuration);
        }
예제 #4
0
 public DeleteOtherFromPairCommand(ImageInfoClass currentInfo, DuplPairViewModel result,
                                   ObservableCollection <DuplPairViewModel> resultList, IEditableCollectionView collectionView, int index)
 {
     _forSaveInfo    = currentInfo;
     _result         = result;
     _resultList     = resultList;
     _collectionView = collectionView;
     _index          = index;
 }
예제 #5
0
 internal void AddResult(DuplPairViewModel result)
 {
     ResultList.Add(result);
     if (!FileList.Contains(result.FirstFile))
     {
         FileList.Add(result.FirstFile);
     }
     if (!FileList.Contains(result.SecondFile))
     {
         FileList.Add(result.SecondFile);
     }
 }
예제 #6
0
 private ImageInfoClass GetBadImage(DuplPairViewModel deleteResult)
 {
     if (deleteResult.FirstFile.UtilityIndex > deleteResult.SecondFile.UtilityIndex)
     {
         return(deleteResult.SecondFile);
     }
     else if (deleteResult.FirstFile.UtilityIndex < deleteResult.SecondFile.UtilityIndex)
     {
         return(deleteResult.FirstFile);
     }
     else
     {
         throw new ArgumentException("Не знаю какой файл худщий!");
     }
 }
예제 #7
0
        void AssociatedObject_ContextMenuOpening(object sender, ContextMenuEventArgs e)
        {
            var grid = sender as MultiSelector;

            if (grid != null)
            {
                if (grid.SelectedItems.Count > 1)
                {
                    if (grid.SelectedItem is DuplPairViewModel)
                    {
                        IList viewResultsOfDupl = (IList)grid.SelectedItems;
                        if (MenuGeneratorMultiDuplPair != null)
                        {
                            grid.ContextMenu.ItemsSource = MenuGeneratorMultiDuplPair(viewResultsOfDupl);
                        }
                    }

                    /* else if (grid.SelectedItem is DuplicateGroup)
                     * {
                     *   IList viewResults = (IList)grid.SelectedItems;
                     *   if (MenuGeneratorMultiDuplGroup != null)
                     *       grid.ContextMenu.ItemsSource = MenuGeneratorMultiDuplGroup(viewResults);
                     * }*/
                }
                else
                {
                    if (grid.SelectedItem is DuplPairViewModel)
                    {
                        DuplPairViewModel viewResultOfDupl = (DuplPairViewModel)grid.SelectedItem;
                        if (MenuGeneratorDuplPair != null)
                        {
                            grid.ContextMenu.ItemsSource = MenuGeneratorDuplPair(viewResultOfDupl);
                        }
                    }

                    /*else if (grid.SelectedItem is DuplicateGroup)
                     * {
                     *  DuplicateGroup duplicateGroup = (DuplicateGroup)grid.SelectedItem;
                     *  if (MenuGeneratorDuplGroup != null)
                     *      grid.ContextMenu.ItemsSource = MenuGeneratorDuplGroup(duplicateGroup);
                     * }*/
                }
            }
        }
예제 #8
0
        public bool Execute()
        {
            // _index = ((ICollectionView)_collectionView).CurrentPosition;
            //_collectionView.EditItem(_resultList[_index]);
            _ignoredResult = _resultList[_index];
            //_dispatcher.Invoke(() =>
            //{
            _resultList.RemoveAt(_index);
            //});
            _ignoreList.Add(_ignoredResult);
            //_collectionView.Refresh();
            //http://drwpf.com/blog/2008/10/20/itemscontrol-e-is-for-editable-collection/
            //_collectionView.CommitEdit();
            //_collectionView.RemoveAt(_index);
            string res = Application.Current.Resources["desc_ignorePair"] as string;

            _description = String.Format(res, _ignoredResult.FirstFile.Path, _ignoredResult.SecondFile.Path);
            return(true);
        }
예제 #9
0
        public RenameLikeCommand(DuplPairViewModel result, string newPath, PositionInDuplPair place)
        {
            _newPath = newPath;
            _result  = result;
            _place   = place;

            //_oldPath = oldPath;
            if (place == PositionInDuplPair.First)
            {
                _oldPath = result.FirstFile.Path;
            }
            else if (place == PositionInDuplPair.Second)
            {
                _oldPath = result.SecondFile.Path;
            }
            else
            {
                throw new ArgumentException("Неизвестно значение PositionInDuplPair " + place);
            }
        }
예제 #10
0
        public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (values[2] != DependencyProperty.UnsetValue && values[3] != DependencyProperty.UnsetValue)
            {
                DuplPairViewModel  result   = values[0] as DuplPairViewModel;
                PositionInDuplPair position = (PositionInDuplPair)values[1];
                Color       goodColor       = (Color)values[2];
                Color       badColor        = (Color)values[3];
                MaxProperty property        = (MaxProperty)parameter;
                if (result != null && position != null && goodColor != null && badColor != null && property != null)
                {
                    switch (property)
                    {
                    case MaxProperty.FileSize:
                        if (result.FirstFile.FileSize == result.SecondFile.FileSize)
                        {
                            return(new SolidColorBrush());
                        }
                        if (result.FirstFile.FileSize < result.SecondFile.FileSize)
                        {
                            return(position == PositionInDuplPair.First ? new SolidColorBrush(badColor) : new SolidColorBrush(goodColor));
                        }
                        else
                        {
                            return(position == PositionInDuplPair.Second ? new SolidColorBrush(badColor) : new SolidColorBrush(goodColor));
                        }

                    //чем выше JpegQuality тем лучше изображение
                    case MaxProperty.JpegQuality:
                        if (result.FirstFile.JpegQuality == result.SecondFile.JpegQuality)
                        {
                            return(new SolidColorBrush());
                        }
                        if (result.FirstFile.JpegQuality < result.SecondFile.JpegQuality)
                        {
                            return(position == PositionInDuplPair.First ? new SolidColorBrush(badColor) : new SolidColorBrush(goodColor));
                        }
                        else
                        {
                            return(position == PositionInDuplPair.Second ? new SolidColorBrush(badColor) : new SolidColorBrush(goodColor));
                        }

                    case MaxProperty.Sharpness:
                        if (result.FirstFile.Sharpness == result.SecondFile.Sharpness)
                        {
                            return(new SolidColorBrush());
                        }
                        if (result.FirstFile.Sharpness < result.SecondFile.Sharpness)
                        {
                            return(position == PositionInDuplPair.First ? new SolidColorBrush(badColor) : new SolidColorBrush(goodColor));
                        }
                        else
                        {
                            return(position == PositionInDuplPair.Second ? new SolidColorBrush(badColor) : new SolidColorBrush(goodColor));
                        }

                    case MaxProperty.Resolution:
                        if (result.FirstFile.Width * result.FirstFile.Height == result.SecondFile.Width * result.SecondFile.Height)
                        {
                            return(new SolidColorBrush());
                        }
                        if (result.FirstFile.Width * result.FirstFile.Height < result.SecondFile.Width * result.SecondFile.Height)
                        {
                            return(position == PositionInDuplPair.First ? new SolidColorBrush(badColor) : new SolidColorBrush(goodColor));
                        }
                        else
                        {
                            return(position == PositionInDuplPair.Second ? new SolidColorBrush(badColor) : new SolidColorBrush(goodColor));
                        }

                    case MaxProperty.UtilityIndex:
                        if (result.FirstFile.UtilityIndex == result.SecondFile.UtilityIndex)
                        {
                            return(new SolidColorBrush());
                        }
                        if (result.FirstFile.UtilityIndex < result.SecondFile.UtilityIndex)
                        {
                            return(position == PositionInDuplPair.First ? new SolidColorBrush(badColor) : new SolidColorBrush(goodColor));
                        }
                        else
                        {
                            return(position == PositionInDuplPair.Second ? new SolidColorBrush(badColor) : new SolidColorBrush(goodColor));
                        }
                    }
                }
            }
            return(new SolidColorBrush());
        }