/// <summary> /// Предоставляет размер в единицах, зависящих от размера /// </summary> /// <param name="bytes"></param> /// <returns></returns> public static string GetSizeInStr(long bytes) { const int scale = 1024; //string[] orders = new string[] { Properties.Resources.GB, // Properties.Resources.MB, Properties.Resources.KB, // Properties.Resources.Bytes }; OneLanguage lang = LanguagesManager.GetCurrLanguage(); string[] orders = new string[] { lang.SFISGB, lang.SFISMB, lang.SFISKB, lang.SFISBytes }; //OneLanguage lang = new OneLanguage(); //lang.ResourceDictionary = new System.Windows.ResourceDictionary(); //lang.ResourceDictionary.Source = new Uri("\\Languages\\en.xaml", UriKind.Relative); //string[] orders = new string[] { lang.SFISGB, // lang.SFISMB, lang.SFISKB, lang.SFISBytes }; long max = (long)Math.Pow(scale, orders.Length - 1); foreach (string order in orders) { if (bytes > max) { return(string.Format("{0:##.##} {1}", decimal.Divide(bytes, max), order)); } max /= scale; } return("0 " + lang.SFISBytes); //return "0 " + Properties.Resources.Bytes; }
public static StackPanel GetSizeInStrWPF(long bytes) { StackPanel sp = new StackPanel(); sp.Orientation = Orientation.Horizontal; TextBlock tbSize = new TextBlock(); TextBlock tbAttr = new TextBlock(); tbAttr.Margin = new System.Windows.Thickness(5, 0, 0, 0); sp.Children.Add(tbSize); sp.Children.Add(tbAttr); const int scale = 1024; OneLanguage lang = LanguagesManager.GetCurrLanguage(); string[] orders = new string[] { "SFISGB", "SFISMB", "SFISKB", "SFISBytes" }; long max = (long)Math.Pow(scale, orders.Length - 1); foreach (string order in orders) { if (bytes > max) { tbSize.Text = string.Format("{0:##.##}", decimal.Divide(bytes, max)); //tbAttr.Text = order; tbAttr.SetResourceReference(TextBlock.TextProperty, order); return(sp); } max /= scale; } tbSize.Text = "0"; tbAttr.SetResourceReference(TextBlock.TextProperty, "SFISBytes"); //tbAttr.Text = lang.SFISBytes; return(sp); //return "0 " + lang.SFISBytes; }
/// <summary> /// Создаёт отражение участка файловой системы /// </summary> /// <param name="directory"></param> private void _BuildFileSystemView(DirectoryInfo directory) { //Очищаем список //lvFileList.Items.Clear(); lvFileList.ItemsSource = null; _currentDirectory = directory; List <CustomFileSystemCover> list = new List <CustomFileSystemCover>(); //CustomFileSystemCover cover = null; //lvFileList.ItemContainerGenerator.StatusChanged += // delegate(Object sender, EventArgs e) // { // ListViewItem lvi = (ListViewItem)lvFileList.ItemContainerGenerator.ContainerFromItem(cover); // if (lvi != null) // { // lvi.PreviewMouseLeftButtonDown += delegate(Object sender, MouseButtonEventArgs e) // { // DragDrop.do // } // } // }; // Если у текущего каталога есть родительский каталог, создаём елемент, дающий возможность // перейти в родительский каталог if (directory.Parent != null) { ParentDirectoryCover cover = new ParentDirectoryCover(directory.Parent); list.Add(cover); //lvFileList.Items.Add(cover); } // Создаём елементы отражающие директории try { foreach (var dir in directory.GetDirectories()) { DirectoryCover cover = new DirectoryCover(dir); list.Add(cover); #region comments Этот вариант был исправлен на более правельный //Получаем ListViewItem, когда он будет создан и подписываемся на его события //lvFileList.ItemContainerGenerator.StatusChanged += // delegate(Object sender, EventArgs e) // { // ListViewItem lvi = (ListViewItem)lvFileList.ItemContainerGenerator.ContainerFromItem(cover); // if (lvi != null) // { // lvi.AllowDrop = true; // //Список событий. Сделан чтобы не подписываться много раз на одно событие // List<string> eventList = null; // if (lvi.Tag == null) // { // eventList = new List<string>(); // lvi.Tag = eventList; // } // else // { // eventList = (List<string>)lvi.Tag; // } //Если события нет в списке, то подписываемся на него //if (!eventList.Contains("DragEnter")) //{ // eventList.Add("DragEnter"); // lvi.DragEnter += delegate(Object sender1, DragEventArgs e1) // { // if (e1.Effects == DragDropEffects.Move) // { // lvi.Opacity = 0.5; // } // }; //} //Если события нет в списке, то подписываемся на него //if (!eventList.Contains("DragLeave")) //{ // eventList.Add("DragLeave"); // lvi.DragLeave += delegate(Object sender1, DragEventArgs e1) // { // lvi.Opacity = 1; // }; //} //Если события нет в списке, то подписываемся на него //if (!eventList.Contains("Drop")) //{ // eventList.Add("Drop"); // lvi.Drop += delegate(Object sender1, DragEventArgs e1) // { // lvi.Opacity = 1; // DataObject dObj = (DataObject)e1.Data; // //Делаем не возможным обрабатывать Drop lvFileList // this.isListViewDroped = false; // if (dObj.GetDataPresent(typeof(List<CustomFileSystemCover>))) // { // // If the desired data format is present, use one of the GetData methods to retrieve the // // data from the data object. // List<CustomFileSystemCover> selectedList = dObj.GetData(typeof(List<CustomFileSystemCover>)) // as List<CustomFileSystemCover>; // //MessageBox.Show(selectedList[0].Name); // List<FileSystemInfo> fsiList = new List<FileSystemInfo>(); // foreach (var sl in selectedList) // { // if (sl.FileSystemElement.GetType() == typeof(DirectoryInfo)) // { // fsiList.Add(new DirectoryInfo(sl.FileSystemElement.FullName)); // } // else if (sl.FileSystemElement.GetType() == typeof(FileInfo)) // { // fsiList.Add(new FileInfo(sl.FileSystemElement.FullName)); // } // else // { // new Exception("Type not support!"); // } // } // DirectoryCover dc = (DirectoryCover)lvi.Content; // CopyWindow cw = new CopyWindow(fsiList, dc.FileSystemElement.FullName); // cw.ShowDialog(); // } // //DragDrop.RemovePreviewDropHandler(lvFileList, lvFileList_Drop); // }; //} //} //}; #endregion //comments } } catch (Exception) { MessageBox.Show(LanguagesManager.GetCurrLanguage().FPIsNotAccess, "", MessageBoxButton.OK, MessageBoxImage.Warning); this.Path = System.IO.Path.GetDirectoryName(this.Path); return; } // Создаём елементы отражающие файлы foreach (var file in directory.GetFiles()) { FileCover cover = new FileCover(file); list.Add(cover); //lvFileList.Items.Add(cover); } //list.Sort(new NameUpSorter()); SortingManager.Sort(list, SortingKind.NameUp); lvFileList.ItemsSource = list; // Задаём в текстовом поле текущий путь txtPath.Text = directory.FullName; this.watcher.Path = directory.FullName; //this.watcher.Changed += new FileSystemEventHandler(watcher_Changed); this.watcher.EnableRaisingEvents = true; }
/// <summary> /// Заполняем элементы управления данными /// </summary> private void ShowDriveData() { DriveData driveData = new DriveData(drive); txtSize.Text = driveData.LongSize; try { pbSize.Maximum = driveData.MaximumSize; pbSize.Value = driveData.MaximumSize - driveData.AvailableFreeSpace; } catch (Exception) { //pbSize.MaxWidth = 300; } imgDriveType.Source = driveData.DriveIcon; //txtInfo.Text = string.Format("name:{0} type:{1}", // drive.Name[0].ToString(), drive.DriveType); txtDriveLabel.Text = driveData.VolumeLabel; txtDriveName.Text = driveData.Drive.Name[0].ToString(); txtDriveType.Text = driveData.Drive.DriveType.ToString(); if (!driveData.Drive.IsReady) { //txtSize.Text = Properties.Resources.TheDriveIsNotReady; txtSize.Text = LanguagesManager.GetCurrLanguage().DDDriveIsNotReady; } //if (drive.IsReady) //{ // string totalShort = SizeFileInString.GetSizeInStr(drive.TotalSize); // string totalLong = drive.TotalSize.ToString(); // string availableShort = SizeFileInString.GetSizeInStr(drive.AvailableFreeSpace); // string availableLong = drive.AvailableFreeSpace.ToString(); // txtSize.Text = string.Format("Free: {0} from {1} ({2} from {3})", availableShort, totalShort, availableLong, totalLong); // pbSize.Maximum = drive.TotalSize; // try // { // pbSize.Value = drive.TotalSize - drive.AvailableFreeSpace; // } // catch (Exception) // { // } // txtInfo.Text = string.Format("name:{0} label:{1} type:{2}", // drive.Name[0].ToString(), drive.VolumeLabel, drive.DriveType); //} //else //{ // txtInfo.Text = string.Format("name:{0} type:{1}", // drive.Name[0].ToString(), drive.DriveType); // txtSize.Text = "The drive is not read"; //} //switch (drive.DriveType) //{ // case DriveType.CDRom: // imgDriveType.Source = new BitmapImage(new Uri("/Icons/drive_cdrom.ico", UriKind.Relative)); // break; // case DriveType.Fixed: // imgDriveType.Source = new BitmapImage(new Uri("/Icons/drive_fixed.ico", UriKind.Relative)); // break; // case DriveType.Network: // imgDriveType.Source = new BitmapImage(new Uri("/Icons/drive_network.ico", UriKind.Relative)); // break; // case DriveType.NoRootDirectory: // break; // case DriveType.Ram: // break; // case DriveType.Removable: // imgDriveType.Source = new BitmapImage(new Uri("/Icons/drive_removable.ico", UriKind.Relative)); // break; // case DriveType.Unknown: // imgDriveType.Source = new BitmapImage(new Uri("/Icons/drive_unknown.ico", UriKind.Relative)); // break; // default: // break; //} }