/* * internal void DeleteSelf() * { * LibraryViewModel.Current.RemoveMix(rootModel); * * rootModel.DeleteSelf(); * } * * internal void Save() * { * if (RootType != null) * { * string s = RootType.Save(this.Id); * * Logger.Current.Log(string.Format("Saving Mix {0} root {1} result {2}", RootType.Id, this.Id, s)); * } * else * { * Logger.Current.Log("Saving Mix NULL root " + this.Id); * } * } * * * * * * internal bool IsPlaylistNested(int targetId) * { * return RootType.IsPlaylistNested(targetId); * } * * internal bool IsMixNested(int targetId) * { * return RootType.IsMixNested(targetId); * } * * internal bool ContainsSong(SongViewModel song) * { * return CurrentSongs.Contains(song); * } */ internal void SetEvaluator(IMixEvaluator mixEvaluator) { // TODO: probably a better way of handling this rootModel.ClearMixEntries(); mixEvaluator.Save(rootModel.MixId, true); rootModel.UpdateMixEntries(); RootEvaluator = mixEvaluator; }
public MixViewModel(MixModel mix) : base(mix) { mix.PropertyChanged += HandleMixModelPropertyChanged; RootEvaluator = MixEntryModelToMixEvaluator(mix.RootMixEntry); _currentSongs = new LimitedList <SongViewModel>(new SongSortGenericOrder(MixSortOrderToSongProperty(mix.SortType), MixSortOrderToIsAscending(mix.SortType)), mix.Limit, mix.HasLimit); ResetLength(); }
private void HandleContentDialogPrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args) { if ((deleteMix.IsChecked.HasValue && deleteMix.IsChecked.Value) && (deleteMixConfirm.IsChecked.HasValue && deleteMixConfirm.IsChecked.Value)) { LibraryViewModel.Current.DeleteMix(Mix); } else { Mix.Name = editMixName.Text; if (mixLimitCheckBox.IsChecked.HasValue) { Mix.HasLimit = mixLimitCheckBox.IsChecked.Value; } uint newMixLimit; if (uint.TryParse(mixLimitTextBox.Text, out newMixLimit)) { Mix.Limit = newMixLimit; } if (mixHiddenCheckBox.IsChecked.HasValue) { Mix.IsHidden = mixHiddenCheckBox.IsChecked.Value; } SelectableOption <MixSortOrder> selectedType = DebugHelper.CastAndAssert <SelectableOption <MixSortOrder> >(SortTypeComboBox.SelectedItem); SelectableOption <MixSortOrder> selectedOrder = DebugHelper.CastAndAssert <SelectableOption <MixSortOrder> >(SortOrderComboBox.SelectedItem); Mix.SortType = selectedType.Type | selectedOrder.Type; IMixEvaluator mixEval = RootMixEntry.ConvertToEvaluator(); Mix.SetEvaluator(mixEval); Mix.Reset(); } }
public void LoadEvaluator(IMixEvaluator evaluator) { MixType mixType = evaluator.MixType; SelectableOption<MixType> selectedMixTypeEntry = AllMixTypes.Where((m) => { return (m.Type == (mixType & MixType.SUBTYPE_MASK) || m.Type == mixType); }).FirstOrDefault(); MixEntryType.SelectedItem = selectedMixTypeEntry; switch (mixType & MixType.TYPE_MASK) { case MixType.NUMBER_TYPE: NumericMixEvaluator<IComparable> numericEvaluator = DebugHelper.CastAndAssert<NumericMixEvaluator<IComparable>>(evaluator); SelectableOption<NumericEvalType> selectedNumericTypeEntry = NumericInfo.Where((m) => { return (m.Type == numericEvaluator.EvalType); }).FirstOrDefault(); NumericPicker.SelectedItem = selectedNumericTypeEntry; UpdateNumericStartingValue(mixType, numericEvaluator.Target); return; case MixType.STRING_TYPE: StringMixEvaluator stringEvaluator = DebugHelper.CastAndAssert<StringMixEvaluator>(evaluator); SelectableOption<StringEvalType> selectedStringTypeEntry = StringInfo.Where((m) => { return (m.Type == stringEvaluator.EvalType); }).FirstOrDefault(); StringPicker.SelectedItem = selectedStringTypeEntry; StringValue.Text = stringEvaluator.Target; return; case MixType.NESTED_TYPE: NestedMixEvaluator nestedEvaluator = DebugHelper.CastAndAssert<NestedMixEvaluator>(evaluator); foreach (IMixEvaluator mixEvaluator in nestedEvaluator.Mixes) { MixEntry nestedEntry = new MixEntry(this, Depth + 1); nestedEntry.LoadEvaluator(mixEvaluator); NestedList.Children.Add(nestedEntry); nestedEntry.TextBotGotFocus += HandleTextBoxGotFocus; nestedEntry.TextBotLostFocus += HandleTextBoxLostFocus; } return; case MixType.MEMBER_TYPE: MemberMixEvaluator memberEvaluator = DebugHelper.CastAndAssert<MemberMixEvaluator>(evaluator); if ((mixType & MixType.SUBTYPE_MASK) == MixType.PLAYLISTMEMBER_SUBTYPE) { PlaylistViewModel playlist = LibraryViewModel.Current.LookupPlaylistById(memberEvaluator.Target); PlaylistMemberPicker.SelectedItem = playlist; } else if ((mixType & MixType.SUBTYPE_MASK) == MixType.MIXMEMBER_SUBTYPE) { MixViewModel mix = LibraryViewModel.Current.LookupMixById(memberEvaluator.Target); MixMemberPicker.SelectedItem = mix; } else { DebugHelper.Alert(new CallerInfo(), "Unexpected member type: {0}", mixType); return; } return; case MixType.RANGE_TYPE: RangeMixEvaluator rangeEvaluator = DebugHelper.CastAndAssert<RangeMixEvaluator>(evaluator); RangeValue.Text = rangeEvaluator.Target.ToString(); return; default: DebugHelper.Assert(new CallerInfo(), mixType == MixType.None, "Unexpected mix type: {0}", mixType); VisualStateManager.GoToState(this, "UnknownSelected", false); return; } }
public void LoadEvaluator(IMixEvaluator evaluator) { MixType mixType = evaluator.MixType; SelectableOption <MixType> selectedMixTypeEntry = AllMixTypes.Where((m) => { return(m.Type == (mixType & MixType.SUBTYPE_MASK) || m.Type == mixType); }).FirstOrDefault(); MixEntryType.SelectedItem = selectedMixTypeEntry; switch (mixType & MixType.TYPE_MASK) { case MixType.NUMBER_TYPE: NumericMixEvaluator <IComparable> numericEvaluator = DebugHelper.CastAndAssert <NumericMixEvaluator <IComparable> >(evaluator); SelectableOption <NumericEvalType> selectedNumericTypeEntry = NumericInfo.Where((m) => { return(m.Type == numericEvaluator.EvalType); }).FirstOrDefault(); NumericPicker.SelectedItem = selectedNumericTypeEntry; UpdateNumericStartingValue(mixType, numericEvaluator.Target); return; case MixType.STRING_TYPE: StringMixEvaluator stringEvaluator = DebugHelper.CastAndAssert <StringMixEvaluator>(evaluator); SelectableOption <StringEvalType> selectedStringTypeEntry = StringInfo.Where((m) => { return(m.Type == stringEvaluator.EvalType); }).FirstOrDefault(); StringPicker.SelectedItem = selectedStringTypeEntry; StringValue.Text = stringEvaluator.Target; return; case MixType.NESTED_TYPE: NestedMixEvaluator nestedEvaluator = DebugHelper.CastAndAssert <NestedMixEvaluator>(evaluator); foreach (IMixEvaluator mixEvaluator in nestedEvaluator.Mixes) { MixEntry nestedEntry = new MixEntry(this, Depth + 1); nestedEntry.LoadEvaluator(mixEvaluator); NestedList.Children.Add(nestedEntry); nestedEntry.TextBotGotFocus += HandleTextBoxGotFocus; nestedEntry.TextBotLostFocus += HandleTextBoxLostFocus; } return; case MixType.MEMBER_TYPE: MemberMixEvaluator memberEvaluator = DebugHelper.CastAndAssert <MemberMixEvaluator>(evaluator); if ((mixType & MixType.SUBTYPE_MASK) == MixType.PLAYLISTMEMBER_SUBTYPE) { PlaylistViewModel playlist = LibraryViewModel.Current.LookupPlaylistById(memberEvaluator.Target); PlaylistMemberPicker.SelectedItem = playlist; } else if ((mixType & MixType.SUBTYPE_MASK) == MixType.MIXMEMBER_SUBTYPE) { MixViewModel mix = LibraryViewModel.Current.LookupMixById(memberEvaluator.Target); MixMemberPicker.SelectedItem = mix; } else { DebugHelper.Alert(new CallerInfo(), "Unexpected member type: {0}", mixType); return; } return; case MixType.RANGE_TYPE: RangeMixEvaluator rangeEvaluator = DebugHelper.CastAndAssert <RangeMixEvaluator>(evaluator); RangeValue.Text = rangeEvaluator.Target.ToString(); return; default: DebugHelper.Assert(new CallerInfo(), mixType == MixType.None, "Unexpected mix type: {0}", mixType); VisualStateManager.GoToState(this, "UnknownSelected", false); return; } }