mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2024-11-22 05:45:38 +00:00
GameList: Support excluding disc sets
This commit is contained in:
parent
7665b1c760
commit
71ca14a77a
|
@ -104,7 +104,7 @@ static bool ScanFile(std::string path, std::time_t timestamp, std::unique_lock<s
|
||||||
static bool LoadOrInitializeCache(std::FILE* fp, bool invalidate_cache);
|
static bool LoadOrInitializeCache(std::FILE* fp, bool invalidate_cache);
|
||||||
static bool LoadEntriesFromCache(BinaryFileReader& reader);
|
static bool LoadEntriesFromCache(BinaryFileReader& reader);
|
||||||
static bool WriteEntryToCache(const Entry* entry, BinaryFileWriter& writer);
|
static bool WriteEntryToCache(const Entry* entry, BinaryFileWriter& writer);
|
||||||
static void CreateDiscSetEntries(const PlayedTimeMap& played_time_map);
|
static void CreateDiscSetEntries(const std::vector<std::string>& excluded_paths, const PlayedTimeMap& played_time_map);
|
||||||
|
|
||||||
static std::string GetPlayedTimeFile();
|
static std::string GetPlayedTimeFile();
|
||||||
static bool ParsePlayedTimeLine(char* line, std::string& serial, PlayedTimeEntry& entry);
|
static bool ParsePlayedTimeLine(char* line, std::string& serial, PlayedTimeEntry& entry);
|
||||||
|
@ -819,7 +819,7 @@ void GameList::Refresh(bool invalidate_cache, bool only_cache, ProgressCallback*
|
||||||
s_cache_map.clear();
|
s_cache_map.clear();
|
||||||
|
|
||||||
// merge multi-disc games
|
// merge multi-disc games
|
||||||
CreateDiscSetEntries(played_time);
|
CreateDiscSetEntries(excluded_paths, played_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
GameList::EntryList GameList::TakeEntryList()
|
GameList::EntryList GameList::TakeEntryList()
|
||||||
|
@ -829,7 +829,7 @@ GameList::EntryList GameList::TakeEntryList()
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameList::CreateDiscSetEntries(const PlayedTimeMap& played_time_map)
|
void GameList::CreateDiscSetEntries(const std::vector<std::string>& excluded_paths, const PlayedTimeMap& played_time_map)
|
||||||
{
|
{
|
||||||
std::unique_lock lock(s_mutex);
|
std::unique_lock lock(s_mutex);
|
||||||
|
|
||||||
|
@ -927,8 +927,9 @@ void GameList::CreateDiscSetEntries(const PlayedTimeMap& played_time_map)
|
||||||
|
|
||||||
DEV_LOG("Created disc set {} from {} entries", disc_set_name, num_parts);
|
DEV_LOG("Created disc set {} from {} entries", disc_set_name, num_parts);
|
||||||
|
|
||||||
// entry is done :)
|
// we have to do the exclusion check at the end, because otherwise the individual discs get added
|
||||||
s_entries.push_back(std::move(set_entry));
|
if (!IsPathExcluded(excluded_paths, disc_set_name))
|
||||||
|
s_entries.push_back(std::move(set_entry));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1584,6 +1584,11 @@ void MainWindow::onGameListEntryContextMenuRequested(const QPoint& point)
|
||||||
menu.addSeparator();
|
menu.addSeparator();
|
||||||
|
|
||||||
connect(menu.addAction(tr("Select Disc")), &QAction::triggered, this, &MainWindow::onGameListEntryActivated);
|
connect(menu.addAction(tr("Select Disc")), &QAction::triggered, this, &MainWindow::onGameListEntryActivated);
|
||||||
|
|
||||||
|
menu.addSeparator();
|
||||||
|
|
||||||
|
connect(menu.addAction(tr("Exclude From List")), &QAction::triggered,
|
||||||
|
[this, entry]() { getSettingsWindow()->getGameListSettingsWidget()->addExcludedPath(entry->path); });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue