Пример #1
0
        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;
        }
Пример #2
0
 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();
 }
Пример #3
0
        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);
        }