public static async Task<List<IOView>> loading(string path) { return await Task.Run(() => { if(Directory.Exists(path)) { List<IOView> io = new List<IOView>(); DirectoryInfo dir = new DirectoryInfo(path); DirectoryInfo[] dirs = dir.GetDirectories(); FileInfo[] files = dir.GetFiles(); if (path.Substring(path.Length - 2, 2) != @":\") { IOView tmp = new IOView(); tmp.img = null; tmp.Name = ".."; tmp.Type = ""; tmp.Size = "<DIR>"; tmp.Time = ""; io.Add(tmp); } foreach (DirectoryInfo item in dirs) { IOView tmp = new IOView(); //tmp.img = GetIcon.Icon(item.Name, true, true); tmp.Name = item.Name; tmp.Type = ""; tmp.Size = "<DIR>"; tmp.Time = item.LastWriteTime.ToString(); io.Add(tmp); } foreach(FileInfo item in files) { IOView tmp = new IOView(); //tmp.img = GetIcon.Icon(item.Name, true, false); tmp.Name = Path.GetFileNameWithoutExtension(item.Name); tmp.Type = WorkPath.GetTypeFile(item.Name); tmp.Size = Size.Convert(item.Length); tmp.Time = item.LastWriteTime.ToString(); io.Add(tmp); } return io; } else return null; }); }
/// <summary> /// Метод для отображения файлов и деректорий в ListView /// </summary> /// <param name="data"></param> /// <returns></returns> public static async Task<bool> ViewFiles(Info data) { List<ListViewItem> lst = new List<ListViewItem>(); ListOfType listType = ListOfType.GetInstance(); #region old // if (Directory.Exists(data.path)) //{ // DirectoryInfo dir = new DirectoryInfo(data.path); // DirectoryInfo[] dirs = dir.GetDirectories(); // FileInfo[] files = dir.GetFiles(); // if (data.path.Substring(data.path.Length - 2, 2) != ":\\") // { // ListViewItem lvitem = new ListViewItem(); // IOView tmp = new IOView(); // tmp.img = null; // tmp.Name = ".."; // tmp.Type = ""; // tmp.Size = "<DIR>"; // tmp.Time = ""; // lvitem.Content = tmp; // lst.Add(lvitem); // } // foreach (DirectoryInfo item in dirs) // { // ListViewItem lvitem = new ListViewItem(); // IOView tmp = new IOView(); // tmp.img = GetIcon.Icon(item.Name, true, true); // tmp.Name = item.Name; // tmp.Type = ""; // tmp.Size = "<DIR>"; // tmp.Time = item.LastWriteTime.ToString(); // lvitem.Content = tmp; // lst.Add(lvitem); // } // foreach (FileInfo item in files) // { // ListViewItem lvitem = new ListViewItem(); // IOView tmp = new IOView(); // tmp.img=GetIcon.Icon(item.Name,true,false); // tmp.Name = WorkPath.GetNameFile(item.Name); // tmp.Type = WorkPath.GetTypeFile(item.Name); // //if (listType.TypeImage().Contains(tmp.Type)) // //{ // // try // // { // // #region tooltip image // // Image img = new Image(); // // img.Height = 320; // // BitmapImage t = new BitmapImage(); // // t.BeginInit(); // // t.UriSource = new Uri(data.path + tmp.Name + "." + tmp.Type); // // t.DecodePixelHeight = 320; // // t.EndInit(); // // img.Source = t; // // ToolTip tp = new ToolTip(); // // tp.Content = img; // // lvitem.ToolTip = tp; // // #endregion // // } // // catch (Exception error) // // { // // MessageBox.Show(error.ToString()); // // } // //} // tmp.Size = Size.Convert(item.Length); // tmp.Time = item.LastWriteTime.ToString(); // lvitem.Content = tmp; // lst.Add(lvitem); // } //} #endregion List<IOView> tmp = new List<IOView>(); IOView a = new IOView(); a.Name = "loading.."; tmp.Add(a); data.lv.ItemsSource = tmp; data.lv.IsEnabled = false; data.lv.ItemsSource = await loading(data.path); data.lv.IsEnabled = true; #region Сортировка списка ListCollectionView dataView = (ListCollectionView)CollectionViewSource.GetDefaultView(data.lv.ItemsSource); SortLogic sort = new SortLogic(data); dataView.CustomSort = sort; #endregion return true; }
/// <summary> /// Передвижение по деректориям и запуск файлов /// </summary> /// <param name="data"></param> /// <param name="file"></param> private async Task<string> move(Info data, IOView file) { if (file.Name == "..") { #region один шаг назад по директории data.path = data.path.Substring(0, data.path.Substring(0, data.path.Length - 1).LastIndexOf(@"\")) + @"\"; if (await Display.ViewFiles(data)) { if (data.lv == FileViewL) { DeleteWatch(watchL); AddWatch(watchL, data.path); ViewPathL.Content = data.path; } else if (data.lv == FileViewR) { DeleteWatch(watchR); AddWatch(watchR, data.path); ViewPathR.Content = data.path; } } else { data.path = data.path.Substring(0, data.path.Substring(0, data.path.Length - 1).LastIndexOf(@"\")) + @"\"; await Display.ViewFiles(data); } Keyboard.Focus(data.lv); #endregion; } else { string str = data.path + file.Name; if (file.Type != "" && file.Type != null) str += "." + file.Type; if (Directory.Exists(str)) { #region Продвижение вглуб директории if (file.Name != "" && file.Name != null) data.path = str + @"\"; if (await Display.ViewFiles(data)) { if (data.lv == FileViewL) { DeleteWatch(watchL); AddWatch(watchL, data.path); ViewPathL.Content = data.path; } else if (data.lv == FileViewR) { DeleteWatch(watchR); AddWatch(watchR, data.path); ViewPathR.Content = data.path; } Keyboard.Focus(data.lv); } else { data.path = data.path.Substring(0, data.path.Substring(0, data.path.Length - 1).LastIndexOf(@"\")) + @"\"; await Display.ViewFiles(data); } #endregion } if (File.Exists(str)) { #region Запуск файла на виполнение try { Process.Start(str); } catch (Exception error) { MessageBox.Show(error.ToString()); } #endregion } } return data.path; }