private void FillDriveList(bool isRefreshing = false) { var list = DriveInfo.GetDrives().Where(x => x.IsReady && (showAllDrives || (x.DriveType == DriveType.Removable && x.DriveFormat.StartsWith("FAT")))).ToArray(); if (isRefreshing) { if (DriveList.Select(x => x.Name).SequenceEqual(list.Select(x => x.Name))) { return; } DriveList.Clear(); } //fill drive list and try to find drive with gdemu contents foreach (DriveInfo drive in list) { DriveList.Add(drive); //look for GDEMU.ini file if (SelectedDrive == null && File.Exists(Path.Combine(drive.RootDirectory.FullName, Constants.MenuConfigTextFile))) { SelectedDrive = drive; } } //look for 01 folder if (SelectedDrive == null) { foreach (DriveInfo drive in list) { if (Directory.Exists(Path.Combine(drive.RootDirectory.FullName, "01"))) { SelectedDrive = drive; break; } } } if (!DriveList.Any()) { return; } if (SelectedDrive == null) { SelectedDrive = DriveList.LastOrDefault(); } }
private void FillDriveList(bool isRefreshing = false) { DriveInfo[] list; if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { list = DriveInfo.GetDrives().Where(x => x.IsReady && (showAllDrives || (x.DriveType == DriveType.Removable && x.DriveFormat.StartsWith("FAT")))).ToArray(); } else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { list = DriveInfo.GetDrives().Where(x => x.IsReady && (showAllDrives || x.DriveType == DriveType.Removable || x.DriveType == DriveType.Fixed)).ToArray();//todo need to test } else//linux { list = DriveInfo.GetDrives().Where(x => x.IsReady && (showAllDrives || ((x.DriveType == DriveType.Removable || x.DriveType == DriveType.Fixed) && x.DriveFormat.Equals("msdos", StringComparison.InvariantCultureIgnoreCase) && x.Name.StartsWith("/media/", StringComparison.InvariantCultureIgnoreCase)))).ToArray(); } if (isRefreshing) { if (DriveList.Select(x => x.Name).SequenceEqual(list.Select(x => x.Name))) { return; } DriveList.Clear(); } //fill drive list and try to find drive with gdemu contents //look for GDEMU.ini file foreach (DriveInfo drive in list) { try { DriveList.Add(drive); if (SelectedDrive == null && File.Exists(Path.Combine(drive.RootDirectory.FullName, Constants.MenuConfigTextFile))) { SelectedDrive = drive; } } catch { } } //look for 01 folder if (SelectedDrive == null) { foreach (DriveInfo drive in list) { try { if (Directory.Exists(Path.Combine(drive.RootDirectory.FullName, "01"))) { SelectedDrive = drive; break; } } catch { } } } //look for /media mount if (SelectedDrive == null) { foreach (DriveInfo drive in list) { try { if (drive.Name.StartsWith("/media/", StringComparison.InvariantCultureIgnoreCase)) { SelectedDrive = drive; break; } } catch { } } } if (!DriveList.Any()) { return; } if (SelectedDrive == null) { SelectedDrive = DriveList.LastOrDefault(); } }