Exemplo n.º 1
0
        private void FindDuplicate()
        {
            Bitmap icon;

            if ((listView.SelectedItem is FileElement) && IsImage((listView.SelectedItem as Element).Name))
            {
                MemoryStream ms = new MemoryStream();
                (listView.SelectedItem as FileElement).SaveTo(ms);
                ms.Position = 0;
                Bitmap tmp = new Bitmap(ms);
                icon = ImgConverter.ResizeImage(tmp, thumbnailSize);
                tmp?.Dispose();
                ms.Dispose();
            }
            else
            {
                icon = (listView.SelectedItem as Element).Icon;
            }

            DirElement dir = (listView.Tag as DirElement) != null ? (listView.Tag as DirElement) : xdb;
            Finder     f   = new Finder(dir, icon, ShowList);

            icon    = null;
            f.Owner = this;
            f.Show();
        }
Exemplo n.º 2
0
 public Finder(DirElement Root, CallBackResult Result) : this(Root)
 {
     image.Source = null;
     _bitmap?.Dispose();
     resultCallback = Result;
     textBox.Focus();
 }
Exemplo n.º 3
0
        private void InsertCut()
        {
            if (IsReadOnly)
            {
                return;
            }

            if (!editable)
            {
                //return;
            }

            DirElement newParent = (listView.Tag as DirElement);

            foreach (var item in CutList)
            {
                try
                {
                    item.Parent = newParent;
                }
                catch
                {
                }
            }

            if (CutList.Count > 0)
            {
                CutList.Clear();
                ShowFiles(newParent);
            }
        }
Exemplo n.º 4
0
        private void SetFilterElementByName(string name)
        {
            DirElement parent = (listView.Tag as DirElement);

            if ((xdb == null) || (parent == null))
            {
                if (listView.ItemsSource == null)
                {
                    return;
                }
            }

            List <Element> list;

            if (parent != null)
            {
                list = parent.Elements.Where(x => x.Name.ToLower().IndexOf(name.ToLower()) >= 0).ToList();
            }
            else
            {
                list = temp_search_list.Where(x => x.Name.ToLower().IndexOf(name.ToLower()) >= 0).ToList();
            }

            listView.ItemsSource = OrderBy(list);

            ShowInfo();
        }
Exemplo n.º 5
0
        private void Files_Drop(object sender, System.Windows.DragEventArgs e)
        {
            DirElement parent = (listView.Tag as DirElement);

            if ((xdb == null) || (parent == null) || IsReadOnly)
            {
                return;
            }

            if (e.Data.GetDataPresent(System.Windows.DataFormats.FileDrop))
            {
                string[] files = (string[])e.Data.GetData(System.Windows.DataFormats.FileDrop);

                foreach (var file in files)
                {
                    var exists = false;
                    foreach (var item in addedFilesList)
                    {
                        if (item.name == file && item.parentElement == parent)
                        {
                            exists = true;
                        }
                    }

                    if (!exists)
                    {
                        addedFilesList.Add(new FileItem(file, parent));
                    }
                }

                int count = 0;
                foreach (var item in addedFilesList)
                {
                    count += item.SubFilesCount();
                }

                TextBlockStatus4.Text = count.ToString();

                if (!FileLoadWorker.IsBusy)
                {
                    AddedFilesCount         = 0;
                    statusBlock3.Visibility = Visibility.Visible;
                    TextBlockStatus3.Text   = AddedFilesCount.ToString();
                    FileLoadWorker.RunWorkerAsync(parent);
                }
                else
                {
                    if (multithreadImageResizer != null)
                    {
                        multithreadImageResizer.UpdateFilesList(addedFilesList);
                    }
                }
            }
        }
Exemplo n.º 6
0
        private void OpenParentDir(Element element)
        {
            if (element.Parent == null)
            {
                return;
            }

            ShowList(element.Parent.Elements.ToList());
            SelectItem(element);
            LastParent   = element.Parent;
            listView.Tag = element.Parent;
        }
Exemplo n.º 7
0
        private void _GetAllElementsWithIcon(DirElement parent, IList <Element> resultList)
        {
            foreach (Element element in parent.Elements)
            {
                if (element.IconSize > 0 && MainWindow.IsImage(element.Name))
                {
                    resultList.Add(element);
                }

                if (element is DirElement)
                {
                    _GetAllElementsWithIcon(element as DirElement, resultList);
                }
            }
        }
Exemplo n.º 8
0
        private void _FindAllDuplicateImage(DirElement parent, List <Element> resultList)
        {
            foreach (Element element in parent.Elements)
            {
                if (element.IconSize > 0)
                {
                    var result = getSearchableDir().FindAllByPHash(element.PHash, (byte)slider.Value);
                    if (result.Count > 1)
                    {
                        resultList.AddRange(result);
                    }
                }

                if (element is DirElement)
                {
                    _FindAllDuplicateImage(element as DirElement, resultList);
                }
            }
        }
Exemplo n.º 9
0
        private void SetViewsElement(DirElement parent, IList <Element> elements, Element selected = null, bool with_orders = true)
        {
            RefreshPathPanel(parent != null ? parent : LastParent);
            listView.ItemsSource = with_orders ? OrderBy(elements) : new BindingList <Element>(elements);;

            if (parent != null)
            {
                listView.Focus();
            }

            if (selected != null)
            {
                SelectItem(selected);
            }

            temp_search_list = elements;

            LastParent   = parent == null ? LastParent : parent;
            listView.Tag = parent;
            ShowInfo();
        }
Exemplo n.º 10
0
        private FileItem(string file, DirElement parentElement = null, uint count = 0)
        {
            this.parentElement = parentElement;
            name = file;
            type = FileItemType.File;

            if (Directory.Exists(file))
            {
                type = FileItemType.Dir;

                List <string> items = new List <string>();
                items.AddRange(Directory.GetDirectories(file));
                string[] files = Directory.GetFiles(file);
                items.AddRange(files);

                _fileCount = (uint)files.Length;

                foreach (string item in items)
                {
                    children.Add(new FileItem(item, parentElement));
                }
            }
        }
Exemplo n.º 11
0
 public FileItem(string file, DirElement parentElement = null) : this(file, parentElement, 0)
 {
 }
Exemplo n.º 12
0
 public Finder(DirElement Root, Bitmap thumbnail, CallBackResult Result) : this(Root)
 {
     resultCallback = Result;
     SetThumbnail(thumbnail);
 }
Exemplo n.º 13
0
 private Finder(DirElement Root) : this()
 {
     search_dir = Root;
 }
Exemplo n.º 14
0
        private void Window_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
            if ((Keyboard.Modifiers == ModifierKeys.None) && (((e.Key >= Key.D0) && (e.Key <= Key.Z)) || ((e.Key >= Key.NumPad0) && (e.Key <= Key.NumPad9))))
            {
                if (search_text_box.Visibility == Visibility.Hidden)
                {
                    search_text_box.Clear();
                }
                search_text_box.Visibility = Visibility.Visible;
                search_text_box.Focus();
            }

            if (e.Key == Key.F5)
            {
                ShowFiles(listView.Tag as DirElement);
            }

            if (search_text_box.Visibility == Visibility.Hidden)
            {
                if (e.Key == Key.Back)
                {
                    if (LastParent != null)
                    {
                        var el = listView.Tag as Element;
                        ShowFiles(LastParent.Parent == null ? LastParent : LastParent.Parent, el);
                    }
                }

                if (e.Key == Key.Escape)
                {
                    search_text_box.Visibility = Visibility.Hidden;
                    ShowFiles(LastParent);
                }
            }

            if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.S))
            {
                SaveSelectedAs();
                return;
            }

            if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.X))
            {
                CutSelected();
                return;
            }

            if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.V))
            {
                Insert_Click(null, null);
                return;
            }

            if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.F))
            {
                DirElement dir = (listView.Tag as DirElement) != null ? (listView.Tag as DirElement) : xdb;
                Finder     f   = new Finder(dir, ShowList);
                f.Owner = this;
                f.Show();
                return;
            }

            if (e.Key == Key.D && (Keyboard.Modifiers & (ModifierKeys.Control | ModifierKeys.Alt)) == (ModifierKeys.Control | ModifierKeys.Alt))
            {
                Bitmap icon;

                if ((listView.SelectedItem is FileElement) && IsImage((listView.SelectedItem as Element).Name))
                {
                    MemoryStream ms = new MemoryStream();
                    (listView.SelectedItem as FileElement).SaveTo(ms);
                    ms.Position = 0;
                    Bitmap tmp = new Bitmap(ms);
                    icon = ImgConverter.ResizeImage(tmp, thumbnailSize);
                    tmp?.Dispose();
                    ms.Dispose();
                }
                else
                {
                    icon = (listView.SelectedItem as Element).Icon;
                }

                ShowList(xdb.FindAllByIcon(icon, 0));

                return;
            }

            if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.D))
            {
                CreateNewDir();
                return;
            }
        }
Exemplo n.º 15
0
        private void MoveElementWithChange()
        {
            if (IsReadOnly)
            {
                return;
            }

            if (movedElementFrom == null || movedElementTo == null || movedElementFrom == movedElementTo)
            {
                return;
            }

            DirElement            newParent   = movedElementTo.Parent;
            BindingList <Element> bindingList = (listView.ItemsSource as BindingList <Element>);
            int index = 0;

            if (movedElementTo.Delete())
            {
                index = bindingList.IndexOf(movedElementTo);
                bindingList.Remove(movedElementTo);
            }
            else
            {
                System.Windows.MessageBox.Show("Не вдається перемістити елемент");
                return;
            }

            if (!newParent.Exists)
            {
                movedElementTo.Restore();
                bindingList.Insert(index, movedElementTo);
                System.Windows.MessageBox.Show("Не вдається перемістити елемент");
                return;
            }

            try
            {
                movedElementFrom.Parent = newParent;
                movedElementFrom.Name   = movedElementTo.Name;
            }
            catch
            {
                movedElementTo.Restore();
                bindingList.Insert(index, movedElementTo);
                System.Windows.MessageBox.Show("Не вдається перемістити елемент");
                return;
            }

            int oldIndex = bindingList.IndexOf(movedElementFrom);

            bindingList.Remove(movedElementFrom);
            if (index > oldIndex)
            {
                index = (index - 1) >= 0 ? index - 1 : 0;
            }
            bindingList.Insert(index, movedElementFrom);

            int i = 0;

            while (i < bindingList.Count)
            {
                if (!bindingList[i].Exists)
                {
                    bindingList.RemoveAt(i);
                    i--;
                }

                i++;
            }

            movedElementFrom = null;
            movedElementTo   = null;
        }