Beispiel #1
0
		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;
			});
		}
Beispiel #2
0
		/// <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;
        }