protected override void LoadComplete() { base.LoadComplete(); SelectedItem.BindValueChanged(item => { // the underlying playlist is regularly cleared for maintenance purposes (things which probably need to be fixed eventually). // to avoid exposing a state change when there may actually be none, ignore all nulls for now. if (item.NewValue == null) { return; } Model.Value = item.NewValue.Beatmap.Value.BeatmapSet; }, true); Progress.BindValueChanged(_ => { // incoming progress changes are going to be at a very high rate. // we don't want to flood the network with this, so rate limit how often we send progress updates. if (progressUpdate?.Completed != false) { progressUpdate = Scheduler.AddDelayed(updateAvailability, progressUpdate == null ? 0 : 500); } }); State.BindValueChanged(_ => updateAvailability(), true); }
protected override void LoadComplete() { base.LoadComplete(); Child = box = new Box { RelativeSizeAxes = Axes.Both, }; Progress.BindValueChanged(progress => box.Width = (float)progress.NewValue, true); }
public OnlinePlayBeatmapAvailablilityTracker() { State.BindValueChanged(_ => updateAvailability()); Progress.BindValueChanged(_ => updateAvailability(), true); }
protected override void LoadComplete() { base.LoadComplete(); Progress.BindValueChanged(progressChanged); }