diff --git a/osu.Game/Overlays/Settings/ISettingsItem.cs b/osu.Game/Overlays/Settings/ISettingsItem.cs
index e7afa48502..e6b1e68741 100644
--- a/osu.Game/Overlays/Settings/ISettingsItem.cs
+++ b/osu.Game/Overlays/Settings/ISettingsItem.cs
@@ -9,5 +9,11 @@ namespace osu.Game.Overlays.Settings
public interface ISettingsItem : IDrawable, IDisposable
{
event Action SettingChanged;
+
+ ///
+ /// Apply the default values of a setting item, if the setting item specifies a "classic" default via .
+ ///
+ /// Whether to apply the classic value. If false, the standard default is applied.
+ void ApplyClassicDefault(bool useClassicDefault);
}
}
diff --git a/osu.Game/Overlays/Settings/SettingsItem.cs b/osu.Game/Overlays/Settings/SettingsItem.cs
index 1c5668479f..845a7f5cdf 100644
--- a/osu.Game/Overlays/Settings/SettingsItem.cs
+++ b/osu.Game/Overlays/Settings/SettingsItem.cs
@@ -30,6 +30,8 @@ namespace osu.Game.Overlays.Settings
///
public object SettingSourceObject { get; internal set; }
+ public const string CLASSIC_DEFAULT_SEARCH_TERM = @"has-classic-default";
+
private IHasCurrentValue controlWithCurrent => Control as IHasCurrentValue;
protected override Container Content => FlowContent;
@@ -96,7 +98,23 @@ namespace osu.Game.Overlays.Settings
set => controlWithCurrent.Current = value;
}
- public virtual IEnumerable FilterTerms => Keywords == null ? new[] { LabelText.ToString() } : new List(Keywords) { LabelText.ToString() }.ToArray();
+ public virtual IEnumerable FilterTerms
+ {
+ get
+ {
+ var keywords = new List(Keywords ?? Array.Empty())
+ {
+ LabelText.ToString()
+ };
+
+ if (GetClassicDefault != null)
+ {
+ keywords.Add(CLASSIC_DEFAULT_SEARCH_TERM);
+ }
+
+ return keywords;
+ }
+ }
public IEnumerable Keywords { get; set; }
@@ -108,6 +126,22 @@ namespace osu.Game.Overlays.Settings
public event Action SettingChanged;
+ ///
+ /// An action which when invoked will apply a classic default value to this setting.
+ ///
+ public Func GetClassicDefault { get; set; }
+
+ public void ApplyClassicDefault(bool useClassicDefault)
+ {
+ if (GetClassicDefault != null)
+ {
+ if (useClassicDefault)
+ Current.Value = GetClassicDefault();
+ else
+ Current.SetDefault();
+ }
+ }
+
protected SettingsItem()
{
RelativeSizeAxes = Axes.X;