Example #1
0
        /*
         * 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;
        }
Example #2
0
        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();
        }
Example #3
0
        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();
            }
        }
Example #4
0
        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;
            }
        }
Example #5
0
        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;
            }
        }