From 8b8039e8b9a3d57c3238a3e3c7b56c769ff18d1d Mon Sep 17 00:00:00 2001 From: Sera <62521228+SeraUX@users.noreply.github.com> Date: Sat, 4 Jul 2020 00:57:03 +0200 Subject: [PATCH] SettingsWindow: Add the ability to add multiple game directories at once (#1314) * SettingsWindow: Add the ability to choose multiple game directories in one go * Adressed emmauss's suggestion * Simplified the check for duplicate game directories As per Xpl0itr's and emmauss's suggestion, I simplified the loop that checks if the selected game directories are already added. * Fixed a nit --- Ryujinx/Ui/SettingsWindow.cs | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/Ryujinx/Ui/SettingsWindow.cs b/Ryujinx/Ui/SettingsWindow.cs index 42764a7dab..6e681fffc6 100644 --- a/Ryujinx/Ui/SettingsWindow.cs +++ b/Ryujinx/Ui/SettingsWindow.cs @@ -289,11 +289,34 @@ namespace Ryujinx.Ui } else { - FileChooserDialog fileChooser = new FileChooserDialog("Choose the game directory to add to the list", this, FileChooserAction.SelectFolder, "Cancel", ResponseType.Cancel, "Add", ResponseType.Accept); + FileChooserDialog fileChooser = new FileChooserDialog("Choose the game directory to add to the list", this, FileChooserAction.SelectFolder, "Cancel", ResponseType.Cancel, "Add", ResponseType.Accept) + { + SelectMultiple = true + }; if (fileChooser.Run() == (int)ResponseType.Accept) { - _gameDirsBoxStore.AppendValues(fileChooser.Filename); + foreach (string directory in fileChooser.Filenames) + { + bool directoryAdded = false; + + if (_gameDirsBoxStore.GetIterFirst(out TreeIter treeIter)) + { + do + { + if (directory.Equals((string)_gameDirsBoxStore.GetValue(treeIter, 0))) + { + directoryAdded = true; + break; + } + } while(_gameDirsBoxStore.IterNext(ref treeIter)); + } + + if (!directoryAdded) + { + _gameDirsBoxStore.AppendValues(directory); + } + } } fileChooser.Dispose(); @@ -413,4 +436,4 @@ namespace Ryujinx.Ui Dispose(); } } -} \ No newline at end of file +}