Implement BeatmapSearchParameters and refactor all the components

This commit is contained in:
Andrei Zavatski
2020-02-21 02:28:33 +03:00
parent 20b49bea4b
commit 3c56118f45
4 changed files with 96 additions and 59 deletions

View File

@ -144,70 +144,43 @@ namespace osu.Game.Overlays
var sortCriteria = sortControl.Current;
var sortDirection = sortControl.SortDirection;
searchSection.Query.BindValueChanged(query =>
searchSection.SearchParameters.BindValueChanged(parameters =>
{
sortCriteria.Value = string.IsNullOrEmpty(query.NewValue) ? DirectSortCriteria.Ranked : DirectSortCriteria.Relevance;
sortDirection.Value = SortDirection.Descending;
if (parameters.OldValue.Query != parameters.NewValue.Query)
{
sortCriteria.Value = string.IsNullOrEmpty(parameters.NewValue.Query) ? DirectSortCriteria.Ranked : DirectSortCriteria.Relevance;
sortDirection.Value = SortDirection.Descending;
queueUpdateSearch(true);
queueUpdateSearch(true);
}
else
{
queueUpdateSearch();
}
});
searchSection.Ruleset.BindValueChanged(_ => queueUpdateSearch());
searchSection.Category.BindValueChanged(_ => queueUpdateSearch());
searchSection.Genre.BindValueChanged(_ => queueUpdateSearch());
searchSection.Language.BindValueChanged(_ => queueUpdateSearch());
sortCriteria.BindValueChanged(_ => queueUpdateSearch());
sortDirection.BindValueChanged(_ => queueUpdateSearch());
}
public void ShowTag(string tag)
{
var currentQuery = searchSection.Query.Value;
if (currentQuery != tag)
{
setDefaultSearchValues();
searchSection.Query.Value = tag;
}
searchSection.SetTag(tag);
Show();
}
public void ShowGenre(BeatmapSearchGenre genre)
{
var currentGenre = searchSection.Genre.Value;
if (currentGenre != genre)
{
setDefaultSearchValues();
searchSection.Genre.Value = genre;
}
searchSection.SetGenre(genre);
Show();
}
public void ShowLanguage(BeatmapSearchLanguage language)
{
var currentLanguage = searchSection.Language.Value;
if (currentLanguage != language)
{
setDefaultSearchValues();
searchSection.Language.Value = language;
}
searchSection.SetLanguage(language);
Show();
}
private void setDefaultSearchValues()
{
searchSection.Query.Value = string.Empty;
searchSection.Ruleset.Value = new RulesetInfo { Name = @"Any" };
searchSection.Category.Value = BeatmapSearchCategory.Leaderboard;
searchSection.Genre.Value = BeatmapSearchGenre.Any;
searchSection.Language.Value = BeatmapSearchLanguage.Any;
}
private ScheduledDelegate queryChangedDebounce;
private void queueUpdateSearch(bool queryTextChanged = false)
@ -233,13 +206,13 @@ namespace osu.Game.Overlays
currentContent?.FadeColour(Color4.DimGray, 400, Easing.OutQuint);
getSetsRequest = new SearchBeatmapSetsRequest(searchSection.Query.Value, searchSection.Ruleset.Value)
getSetsRequest = new SearchBeatmapSetsRequest(searchSection.SearchParameters.Value.Query, searchSection.SearchParameters.Value.Ruleset)
{
SearchCategory = searchSection.Category.Value,
SearchCategory = searchSection.SearchParameters.Value.Category,
SortCriteria = sortControl.Current.Value,
SortDirection = sortControl.SortDirection.Value,
Genre = searchSection.Genre.Value,
Language = searchSection.Language.Value,
Genre = searchSection.SearchParameters.Value.Genre,
Language = searchSection.SearchParameters.Value.Language
};
getSetsRequest.Success += response => Schedule(() => recreatePanels(response));