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(); }
public Finder(DirElement Root, CallBackResult Result) : this(Root) { image.Source = null; _bitmap?.Dispose(); resultCallback = Result; textBox.Focus(); }
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); } }
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(); }
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); } } } }
private void OpenParentDir(Element element) { if (element.Parent == null) { return; } ShowList(element.Parent.Elements.ToList()); SelectItem(element); LastParent = element.Parent; listView.Tag = element.Parent; }
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); } } }
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); } } }
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(); }
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)); } } }
public FileItem(string file, DirElement parentElement = null) : this(file, parentElement, 0) { }
public Finder(DirElement Root, Bitmap thumbnail, CallBackResult Result) : this(Root) { resultCallback = Result; SetThumbnail(thumbnail); }
private Finder(DirElement Root) : this() { search_dir = Root; }
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; } }
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; }