citra_qt: support multiple game directories

This commit is contained in:
BreadFish64 2018-04-19 19:56:24 -05:00
parent 88ebd844e5
commit 1a57f9488f
26 changed files with 561 additions and 132 deletions

View file

@ -202,8 +202,34 @@ void Config::ReadValues() {
qt_config->beginGroup("Paths");
UISettings::values.roms_path = qt_config->value("romsPath").toString();
UISettings::values.symbols_path = qt_config->value("symbolsPath").toString();
UISettings::values.gamedir = qt_config->value("gameListRootDir", ".").toString();
UISettings::values.gamedir_deepscan = qt_config->value("gameListDeepScan", false).toBool();
UISettings::values.game_dir_deprecated = qt_config->value("gameListRootDir", ".").toString();
UISettings::values.game_dir_deprecated_deepscan =
qt_config->value("gameListDeepScan", false).toBool();
int size = qt_config->beginReadArray("gamedirs");
for (int i = 0; i < size; ++i) {
qt_config->setArrayIndex(i);
UISettings::GameDir game_dir;
game_dir.path = qt_config->value("path").toString();
game_dir.deep_scan = qt_config->value("deep_scan", false).toBool();
game_dir.expanded = qt_config->value("expanded", true).toBool();
UISettings::values.game_dirs.append(game_dir);
}
qt_config->endArray();
// create NAND and SD card directories if empty, these are not removable through the UI, also
// carries over old game list settings if present
if (UISettings::values.game_dirs.isEmpty()) {
UISettings::GameDir game_dir;
game_dir.path = "INSTALLED";
game_dir.expanded = true;
UISettings::values.game_dirs.append(game_dir);
game_dir.path = "SYSTEM";
UISettings::values.game_dirs.append(game_dir);
if (UISettings::values.game_dir_deprecated != ".") {
game_dir.path = UISettings::values.game_dir_deprecated;
game_dir.deep_scan = UISettings::values.game_dir_deprecated_deepscan;
UISettings::values.game_dirs.append(game_dir);
}
}
UISettings::values.recent_files = qt_config->value("recentFiles").toStringList();
UISettings::values.language = qt_config->value("language", "").toString();
qt_config->endGroup();
@ -378,8 +404,15 @@ void Config::SaveValues() {
qt_config->beginGroup("Paths");
qt_config->setValue("romsPath", UISettings::values.roms_path);
qt_config->setValue("symbolsPath", UISettings::values.symbols_path);
qt_config->setValue("gameListRootDir", UISettings::values.gamedir);
qt_config->setValue("gameListDeepScan", UISettings::values.gamedir_deepscan);
qt_config->beginWriteArray("gamedirs");
for (int i = 0; i < UISettings::values.game_dirs.size(); ++i) {
qt_config->setArrayIndex(i);
const auto& game_dir = UISettings::values.game_dirs.at(i);
qt_config->setValue("path", game_dir.path);
qt_config->setValue("deep_scan", game_dir.deep_scan);
qt_config->setValue("expanded", game_dir.expanded);
}
qt_config->endArray();
qt_config->setValue("recentFiles", UISettings::values.recent_files);
qt_config->setValue("language", UISettings::values.language);
qt_config->endGroup();