public MainWindow() { InitializeComponent(); var ts = TranslationSource.Instance; if (!string.IsNullOrEmpty(Settings.Default.SubstDriveLetter)) { Settings.Default.SubstDriveLetter = Settings.Default.SubstDriveLetter.ToUpper(); } if (!DosDeviceHelpers.IsDriveLetter(Settings.Default.SubstDriveLetter)) { DisplayError(ts["WarningInvalidDriveLetter"]); Settings.Default.SubstDriveLetter = "Z:"; } if (Settings.Default.MRU == null) { Settings.Default.MRU = new System.Collections.Specialized.StringCollection(); } else { foreach (var item in Settings.Default.MRU) { PathComboBox.Items.Add(item); } } LimitTextBox.Text = Settings.Default.Limit.ToString(); _scanResult = new ObservableCollection <ScanItem>(); ResultDataGrid.ItemsSource = _scanResult; }
private void Window_Closing(object sender, CancelEventArgs e) { int.TryParse(LimitTextBox.Text, out int limit); Settings.Default.Limit = limit; Settings.Default.MRU.Clear(); Settings.Default.MRU.AddRange(PathComboBox.Items.Cast <string>().ToArray()); Settings.Default.Save(); DosDeviceHelpers.RemoveAllAddedDosDevices(); }
private void DataGridRow_MouseDoubleClick(object sender, MouseButtonEventArgs e) { // Handling of long paths has changed in .NET 4.6.2 and .NET Standard. // Consider using System.IO.Path to manipulate paths if targeting a // newer framework version. // (https://blogs.msdn.microsoft.com/jeremykuhne/2016/06/21/more-on-new-net-path-handling/) var row = (DataGridRow)sender; var scanResult = (ScanItem)row.DataContext; var path = scanResult.Path.TrimEnd(Path.DirectorySeparatorChar); if (!scanResult.IsDirectory) { int i = path.Length - 1; while (i > 0 && path[i] != Path.DirectorySeparatorChar) { i--; } if (i <= 0) { return; } path = path.Substring(0, i); path.TrimEnd(Path.DirectorySeparatorChar); } if (path.Length >= MAX_PATH) { int i = MAX_PATH - 1; while (i > 0 && path[i] != Path.DirectorySeparatorChar) { i--; } if (i <= 0) { return; } string root = path.Substring(0, i); string sub = path.Substring(i + 1, path.Length - i - 1); if (DosDeviceHelpers.DosDeviceExist(Settings.Default.SubstDriveLetter)) { if (!DosDeviceHelpers.RemoveDosDevice(Settings.Default.SubstDriveLetter)) { return; } } if (!DosDeviceHelpers.AddDosDevice(root, Settings.Default.SubstDriveLetter)) { return; } path = Settings.Default.SubstDriveLetter + Path.DirectorySeparatorChar + sub; } System.Diagnostics.Process.Start(path); }