예제 #1
0
        private void HandleAlbumModelPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            switch (e.PropertyName)
            {
            case AlbumModel.Properties.AlbumArt:
                _albumArt = null;
                NotifyPropertyChanged(Properties.AlbumArtSource);
                NotifyPropertyChanged(Properties.HasAlbumArt);
                UpdateAlbumArt();
                break;

            case AlbumModel.Properties.ArtistId:
                NotifyPropertyChanged(Properties.Artist);
                NotifyPropertyChanged(Properties.ArtistName);
                break;

            case AlbumModel.Properties.AlbumId:
                DebugHelper.Alert(new CallerInfo(), "AlbumId Probably Shouldn't Change...");
                NotifyPropertyChanged(Properties.AlbumId);
                break;

            case AlbumModel.Properties.Name:
                _sortName = null;
                NotifyPropertyChanged(Properties.SortName);
                NotifyPropertyChanged(Properties.Name);
                break;
            }
        }
예제 #2
0
        public static IMixEvaluator RangeMixEntryModelToMixEvaluator(MixType mixType, string input)
        {
            PropertyInfo info = null;

            switch (mixType & MixType.SUBTYPE_MASK)
            {
            case MixType.LASTPLAYED_SUBTYPE:
                info = typeof(SongViewModel).GetRuntimeProperty(SongViewModel.Properties.LastPlayed);
                break;

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected RANGE_TYPE MixType {0}", mixType);
                break;
            }

            RangeEvalType rangeEvalType = RangeEvalType.Unknown;

            switch (mixType & MixType.VARIANT_MASK)
            {
            case MixType.RANGE_DAYS_VARIANT:
                rangeEvalType = RangeEvalType.Days;
                break;

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected RANGE_TYPE VARIANT_MASK MixType {0}", mixType);
                break;
            }

            if (info != null)
            {
                return(new RangeMixEvaluator(info, int.Parse(input), rangeEvalType, mixType));
            }

            return(null);
        }
예제 #3
0
        internal void SaveState(Dictionary <string, object> pageState)
        {
            if (Root.ItemsPanelRoot == null)
            {
                return;
            }

            ItemsStackPanel stackPanel = Root.ItemsPanelRoot as ItemsStackPanel;

            if (stackPanel != null)
            {
                pageState.Add(LAST_INDEX_KEY, stackPanel.LastVisibleIndex);
            }
            else
            {
                ItemsWrapGrid wrapGrid = Root.ItemsPanelRoot as ItemsWrapGrid;

                if (wrapGrid != null)
                {
                    pageState.Add(LAST_INDEX_KEY, wrapGrid.LastVisibleIndex);
                }
                else
                {
                    DebugHelper.Alert(new CallerInfo(), "Unexpected root type: {0}", Root.ItemsPanelRoot.GetType());
                }
            }
        }
예제 #4
0
        public void RemoveEntry(int entryId)
        {
            PlaylistEntryModel songToRemove = null;

            if (!IndexLookupMap.TryGetValue(entryId, out songToRemove))
            {
                DebugHelper.Alert(new CallerInfo(), "Tried to remove play queue entry {0} but its not in our lookup", entryId);

                return;
            }

            PlaylistEntryModel previousModel = null;

            if (IndexLookupMap.TryGetValue(songToRemove.PrevId, out previousModel))
            {
                previousModel.NextId = songToRemove.NextId;
            }

            PlaylistEntryModel nextModel = null;

            if (IndexLookupMap.TryGetValue(songToRemove.NextId, out nextModel))
            {
                nextModel.PrevId = songToRemove.PrevId;
            }

            SongIds.Remove(songToRemove.SongId);
            Songs.Remove(songToRemove);
            IndexLookupMap.Remove(songToRemove.RowId);
            DatabaseManager.Current.DeletePlaylistEntry(songToRemove.RowId);
        }
예제 #5
0
        public bool Eval(SongViewModel song)
        {
            switch (EvalType)
            {
            case MemberEvalType.Playlist:
                PlaylistViewModel playlist = LibraryViewModel.Current.LookupPlaylistById(Target);
                if (playlist == null)
                {
                    return(false);
                }
                return(playlist.ContainsSong(song));

            case MemberEvalType.Mix:
                MixViewModel mix = LibraryViewModel.Current.LookupMixById(Target);
                if (mix == null)
                {
                    return(false);
                }
                return(mix.ContainsSong(song));

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected MemberEvalType: {0}", EvalType);
                return(false);
            }
        }
예제 #6
0
        public static IMixEvaluator NestedMixEntryModelToMixEvaluator(MixType mixType, List <IMixEvaluator> mixes)
        {
            NestedEvalType nestedEvalType = NestedEvalType.Unknown;

            switch (mixType)
            {
            case MixType.And:
                nestedEvalType = NestedEvalType.All;
                break;

            case MixType.Or:
                nestedEvalType = NestedEvalType.Any;
                break;

            case MixType.Not:
                nestedEvalType = NestedEvalType.None;
                break;

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected NESTED_TYPE MixType {0}", mixType);
                break;
            }

            return(new NestedMixEvaluator(mixes, nestedEvalType, mixType));
        }
예제 #7
0
        private Type NavigationLocationToPageType(NavigationLocation location)
        {
            switch (location)
            {
            case NavigationLocation.AlbumList:
                return(typeof(AlbumList));

            case NavigationLocation.AlbumPage:
                return(typeof(AlbumPage));

            case NavigationLocation.ArtistList:
                return(typeof(ArtistList));

            case NavigationLocation.ArtistPage:
                return(typeof(ArtistPage));

            case NavigationLocation.Home:
                return(typeof(HomePage));

            case NavigationLocation.ManageLibrary:
                return(typeof(ManageLibrary));

            case NavigationLocation.MixList:
                return(typeof(MixList));

            case NavigationLocation.MixPage:
                return(typeof(MixPage));

            case NavigationLocation.PlaylistList:
                return(typeof(PlaylistList));

            case NavigationLocation.PlaylistPage:
                return(typeof(PlaylistPage));

            case NavigationLocation.SearchPage:
                return(typeof(SearchPage));

            case NavigationLocation.SettingsPage:
                return(typeof(Settings));

            case NavigationLocation.SongList:
                return(typeof(SongList));

            case NavigationLocation.Queue:
                return(typeof(Queue));

            case NavigationLocation.NowPlaying:
                return(typeof(NowPlaying));

            case NavigationLocation.NewHome:
                return(typeof(NewHomePage));

            case NavigationLocation.Library:
                return(typeof(Library));

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected NavigationLocation {0}", location);
                return(typeof(HomePage));
            }
        }
예제 #8
0
        public bool Eval(SongViewModel song)
        {
            T targetValue = DebugHelper.CastAndAssert <T>(TargetProperty.GetValue(song));

            switch (EvalType)
            {
            case NumericEvalType.StrictLess:
                return(targetValue.CompareTo(Target) < 0);

            case NumericEvalType.Less:
                return(targetValue.CompareTo(Target) <= 0);

            case NumericEvalType.Equal:
                return(targetValue.CompareTo(Target) == 0);

            case NumericEvalType.More:
                return(targetValue.CompareTo(Target) >= 0);

            case NumericEvalType.StrictMore:
                return(targetValue.CompareTo(Target) > 0);

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected NumericEvalType: {0}", EvalType);
                return(false);
            }
        }
예제 #9
0
        private void HandleMixLimitTextBoxGotFocus(object sender, RoutedEventArgs e)
        {
            Transform stackPanelRestore = DebugHelper.CastAndAssert <Transform>(((TextBox)sender).TransformToVisual(rootGrid));

            double shift = 0;

            if (stackPanelRestore is MatrixTransform)
            {
                shift = (stackPanelRestore as MatrixTransform).Matrix.OffsetY;
            }
            else if (stackPanelRestore is TranslateTransform)
            {
                shift = (stackPanelRestore as TranslateTransform).Y;
            }
            else
            {
                DebugHelper.Alert(new CallerInfo(), "Unexpected transform type {0}", stackPanelRestore.GetType());
            }

            TranslateTransform shiftDown = new TranslateTransform();

            shiftDown.Y = 90 - shift;

            TransformGroup group = new TransformGroup();

            group.Children.Add(shiftDown);

            rootGrid.RenderTransform = group;

            RootScrollViewer.VerticalScrollMode = ScrollMode.Disabled;
        }
예제 #10
0
        public static string BGMessageIdToMessageString(PlayQueueConstantBGMessageId messageId)
        {
            switch (messageId)
            {
            case PlayQueueConstantBGMessageId.BackgroundEnded:
                return(BackgroundEnded);

            case PlayQueueConstantBGMessageId.BackgroundStarted:
                return(BackgroundStarted);

            case PlayQueueConstantBGMessageId.SeekComplete:
                return(SeekComplete);

            case PlayQueueConstantBGMessageId.TrackChanged:
                return(TrackChanged);

            case PlayQueueConstantBGMessageId.TrackPlayed:
                return(TrackPlayed);

            case PlayQueueConstantBGMessageId.PlayQueueFinished:
                return(PlayQueueFinished);

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected PlayQueueConstantBGMessageId {0} encountered", messageId.ToString());
                return(Unknown);
            }
        }
예제 #11
0
        public static IMixEvaluator StringMixEntryModelToMixEvaluator(MixType type, string input)
        {
            PropertyInfo info = null;

            switch (type & MixType.SUBTYPE_MASK)
            {
            case MixType.ALBUM_SUBTYPE:
                info = typeof(SongViewModel).GetRuntimeProperty(SongViewModel.Properties.AlbumSortName);
                break;

            case MixType.ALBUMARTIST_SUBTYPE:
                info = typeof(SongViewModel).GetRuntimeProperty(SongViewModel.Properties.AlbumArtistSortName);
                break;

            case MixType.ARTIST_SUBTYPE:
                info = typeof(SongViewModel).GetRuntimeProperty(SongViewModel.Properties.AlbumSortName);
                break;

            case MixType.TRACK_SUBTYPE:
                info = typeof(SongViewModel).GetRuntimeProperty(SongViewModel.Properties.Name);
                break;

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected ALBUM_TYPE MixType {0}", type);
                break;
            }

            StringEvalType stringEvalType = StringEvalType.Unknown;

            switch (type & MixType.VARIANT_MASK)
            {
            case MixType.STRING_CONTAINS_VARIANT:
                stringEvalType = StringEvalType.SubString;
                break;

            case MixType.STRING_ENDSWITH_VARIANT:
                stringEvalType = StringEvalType.EndsWith;
                break;

            case MixType.STRING_EQUAL_VARIANT:
                stringEvalType = StringEvalType.Equal;
                break;

            case MixType.STRING_STARTSWITH_VARIANT:
                stringEvalType = StringEvalType.StartsWith;
                break;

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected ALBUM_TYPE VARIANT_MASK MixType {0}", type);
                break;
            }

            if (info != null)
            {
                return(new StringMixEvaluator(info, input, stringEvalType, type));
            }

            return(new NoneMixEvaluator());
        }
예제 #12
0
        void HandleSongModelPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            switch (e.PropertyName)
            {
            case SongModel.Properties.AlbumId:
                NotifyPropertyChanged(Properties.Album);
                NotifyPropertyChanged(Properties.AlbumName);
                NotifyPropertyChanged(Properties.AlbumArtistName);
                NotifyPropertyChanged(Properties.AlbumSortName);
                NotifyPropertyChanged(Properties.AlbumArtistSortName);
                break;

            case SongModel.Properties.ArtistId:
                NotifyPropertyChanged(Properties.Artist);
                NotifyPropertyChanged(Properties.ArtistName);
                NotifyPropertyChanged(Properties.ArtistSortName);
                break;

            case SongModel.Properties.Duration:
                Album.ResetLength();
                NotifyPropertyChanged(Properties.Duration);
                NotifyPropertyChanged(Properties.DurationText);
                NotifyPropertyChanged(Properties.DurationSeconds);
                break;

            case SongModel.Properties.SongId:
                DebugHelper.Alert(new CallerInfo(), "SongId Shouldn't Change");
                NotifyPropertyChanged(Properties.SongId);
                break;

            case SongModel.Properties.Name:
                _sortName = null;
                NotifyPropertyChanged(Properties.SortName);
                NotifyPropertyChanged(Properties.Name);
                break;

            case SongModel.Properties.PlayCount:
                NotifyPropertyChanged(Properties.PlayCount);
                NotifyPropertyChanged(Properties.ExtraInfoString);
                break;

            case SongModel.Properties.Rating:
                NotifyPropertyChanged(Properties.Rating);
                break;

            case SongModel.Properties.TrackNumber:
                NotifyPropertyChanged(Properties.TrackNumber);
                break;

            case SongModel.Properties.LastPlayed:
                _lastPlayed = null;
                NotifyPropertyChanged(Properties.LastPlayed);
                NotifyPropertyChanged(Properties.ExtraInfoString);
                break;
            }

            LibraryViewModel.Current.AlertSongChanged(this, e.PropertyName);
        }
예제 #13
0
        public static MixType RangeEvalTypeToMixTypeVariant(RangeEvalType evalType)
        {
            switch (evalType)
            {
            case RangeEvalType.Days:
                return(MixType.RANGE_DAYS_VARIANT);

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected eval type");
                return(MixType.None);
            }
        }
예제 #14
0
        internal bool AddSong(StorageProviderSong song, bool resetSongData)
        {
            SongModel songFromSource = LibraryModel.Current.GetSongFromSource(StorageProviderSourceToSongOriginSource(song.Origin), song.Source);

            if (songFromSource != null)
            {
                if (resetSongData)
                {
                    SongViewModel songViewModel = LookupSong(songFromSource);

                    songViewModel.Name = song.Name;

                    songViewModel.ArtistName = song.Artist;

                    string newAlbumName      = song.Album;
                    string newAlbumAristName = song.AlbumArtist;

                    if (newAlbumName != songViewModel.Album.Name || newAlbumAristName != songViewModel.Album.ArtistName)
                    {
                        ArtistViewModel albumArtistViewModel = LibraryViewModel.Current.LookupArtistByName(newAlbumAristName);
                        AlbumViewModel  newAlbumViewModel    = LibraryViewModel.Current.LookupAlbumByName(newAlbumName, albumArtistViewModel.ArtistId);

                        songViewModel.UpdateAlbum(newAlbumViewModel);
                    }

                    songViewModel.TrackNumber = song.TrackNumber;
                }
                return(false);
            }

            SongModel newSongModel = LibraryModel.Current.AddNewSong(
                song.Artist,
                song.Album,
                song.AlbumArtist,
                song.Name,
                song.Source,
                StorageProviderSourceToSongOriginSource(song.Origin),
                song.Duration.Ticks,
                song.Rating,
                song.TrackNumber
                );

            if (LookupSong(newSongModel) == null)
            {
                DebugHelper.Alert(new CallerInfo(), "Failed to add song");
                return(false);
            }

            return(true);
        }
예제 #15
0
        private SongOriginSource StorageProviderSourceToSongOriginSource(StorageProviderSource sps)
        {
            switch (sps)
            {
            case StorageProviderSource.Device:
                return(SongOriginSource.Device);

            case StorageProviderSource.OneDrive:
                return(SongOriginSource.OneDrive);

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected StorageProviderSource {0}", sps);
                return(SongOriginSource.Unknown);
            }
        }
예제 #16
0
        private void HandleArtistModelPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            switch (e.PropertyName)
            {
            case ArtistModel.Properties.ArtistId:
                DebugHelper.Alert(new CallerInfo(), "ArtistId Probably Shouldn't Change...");
                NotifyPropertyChanged(Properties.ArtistId);
                break;

            case ArtistModel.Properties.Name:
                _sortName = null;
                NotifyPropertyChanged(Properties.SortName);
                NotifyPropertyChanged(Properties.Name);
                break;
            }
        }
예제 #17
0
        public bool Eval(SongViewModel song)
        {
            DateTime targetValue = DebugHelper.CastAndAssert <DateTime>(TargetProperty.GetValue(song));

            switch (EvalType)
            {
            case RangeEvalType.Days:
                DateTime target = DateTime.Now - TimeSpan.FromDays(Target);

                return(target < targetValue);

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected MemberEvalType: {0}", EvalType);
                return(false);
            }
        }
예제 #18
0
        private void Seek(double percentage)
        {
            if (BackgroundMediaPlayer.Current != null)
            {
                DebugHelper.Assert(new CallerInfo(), 0 <= percentage && percentage <= 1, "Seek to out of ranged position");

                long newTicks = (long)(percentage * BackgroundMediaPlayer.Current.NaturalDuration.Ticks);

                BackgroundMediaPlayer.Current.Position = TimeSpan.FromTicks(newTicks);
            }
            else
            {
                PlayQueueManager.Current.SendMessageToForeground(PlayQueueConstantBGMessageId.SeekComplete);

                DebugHelper.Alert(new CallerInfo(), "Seeking attempt with null BMP");
            }
        }
예제 #19
0
        private void UpdateMemberState(MixType type)
        {
            switch (type & MixType.SUBTYPE_MASK)
            {
            case MixType.PLAYLISTMEMBER_SUBTYPE:
                VisualStateManager.GoToState(this, "MemberPlaylistSelected", false);
                break;

            case MixType.MIXMEMBER_SUBTYPE:
                VisualStateManager.GoToState(this, "MemberMixSelected", false);
                break;

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected numeric mix type: {0}", type);
                VisualStateManager.GoToState(this, "MemberUnknownSelected", false);
                return;
            }
        }
예제 #20
0
        private string ConvertNumericValueToString(MixType type)
        {
            switch (type & MixType.SUBTYPE_MASK)
            {
            case MixType.LENGTH_SUBTYPE:
                return(NumericValue.Text);

            case MixType.RATING_SUBTYPE:
                return(NumericStarRater.Rating.ToString());

            case MixType.PLAYCOUNT_SUBTYPE:
                return(NumericValue.Text);

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected numeric mix type: {0}", type);
                return("0");
            }
        }
예제 #21
0
        private void UpdateFullTime()
        {
            if (CurrentEntry == null)
            {
                FullTime = TimeSpan.Zero;
            }
            else
            {
                SongTable song = DatabaseManager.Current.LookupSongById(CurrentEntry.SongId);

                if (song == null)
                {
                    DebugHelper.Alert(new CallerInfo(), "SongId {0} got from a playqueue row but couldn't find it in database!!", CurrentEntry.SongId);
                    FullTime = TimeSpan.Zero;
                }
                else
                {
                    FullTime = TimeSpan.FromTicks(song.Duration);
                }
            }
        }
예제 #22
0
        public static IMixEvaluator MemberMixEntryModelToMixEvaluator(MixType mixType, string input)
        {
            MemberEvalType memberEvalType = MemberEvalType.Unknown;

            switch (mixType & MixType.SUBTYPE_MASK)
            {
            case MixType.MIXMEMBER_SUBTYPE:
                memberEvalType = MemberEvalType.Mix;
                break;

            case MixType.PLAYLISTMEMBER_SUBTYPE:
                memberEvalType = MemberEvalType.Playlist;
                break;

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected MEMBER_TYPE MixType {0}", mixType);
                break;
            }

            return(new MemberMixEvaluator(int.Parse(input), memberEvalType, mixType));
        }
예제 #23
0
        public static MixType StringEvalTypeToMixTypeVariant(StringEvalType evalType)
        {
            switch (evalType)
            {
            case StringEvalType.EndsWith:
                return(MixType.STRING_ENDSWITH_VARIANT);

            case StringEvalType.StartsWith:
                return(MixType.STRING_STARTSWITH_VARIANT);

            case StringEvalType.SubString:
                return(MixType.STRING_CONTAINS_VARIANT);

            case StringEvalType.Equal:
                return(MixType.STRING_EQUAL_VARIANT);

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected eval type");
                return(MixType.None);
            }
        }
예제 #24
0
        private void UpdateView()
        {
            switch (this.ViewType)
            {
            case SongListItemView.SongList:
                VisualStateManager.GoToState(this, "ViewTypeSongList", false);
                break;

            case SongListItemView.AlbumPage:
                VisualStateManager.GoToState(this, "ViewTypeAlbumPage", false);
                break;

            case SongListItemView.ArtistPage:
                VisualStateManager.GoToState(this, "ViewTypeArtistPage", false);
                break;

            default:
                DebugHelper.Alert(new CallerInfo(), "Unknown SongListItemView {0}", this.ViewType);
                break;
            }
        }
예제 #25
0
        public bool Eval(SongViewModel song)
        {
            switch (EvalType)
            {
            case NestedEvalType.Any:
                foreach (IMixEvaluator nestedMix in Mixes)
                {
                    if (nestedMix.Eval(song))
                    {
                        return(true);
                    }
                }
                return(false);

            case NestedEvalType.All:
                foreach (IMixEvaluator nestedMix in Mixes)
                {
                    if (!nestedMix.Eval(song))
                    {
                        return(false);
                    }
                }
                return(true);

            case NestedEvalType.None:
                foreach (IMixEvaluator nestedMix in Mixes)
                {
                    if (nestedMix.Eval(song))
                    {
                        return(false);
                    }
                }
                return(true);

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected NestedEvalType: {0}", EvalType);
                return(false);
            }
        }
예제 #26
0
        private void UpdateNumericState(MixType type)
        {
            switch (type & MixType.SUBTYPE_MASK)
            {
            case MixType.LENGTH_SUBTYPE:
                VisualStateManager.GoToState(this, "NumericDurationSelected", false);
                break;

            case MixType.RATING_SUBTYPE:
                VisualStateManager.GoToState(this, "NumericRatingSelected", false);
                break;

            case MixType.PLAYCOUNT_SUBTYPE:
                VisualStateManager.GoToState(this, "NumericPlayCountSelected", false);
                break;

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected numeric mix type: {0}", type);
                VisualStateManager.GoToState(this, "NumericUnknownSelected", false);
                return;
            }
        }
예제 #27
0
        private void UpdateNumericStartingValue(MixType type, IComparable target)
        {
            switch (type & MixType.SUBTYPE_MASK)
            {
            case MixType.LENGTH_SUBTYPE:
                NumericValue.Text = target.ToString();
                break;

            case MixType.RATING_SUBTYPE:
                NumericStarRater.Rating = DebugHelper.CastAndAssert <uint>(target);
                break;

            case MixType.PLAYCOUNT_SUBTYPE:
                NumericValue.Text = target.ToString();
                break;

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected numeric mix type: {0}", type);
                NumericValue.Text = "0";
                return;
            }
        }
예제 #28
0
        public void RemoveEntry(int entryId)
        {
            if (entryId == CurrentPlaybackQueueEntryId)
            {
                Stop();
                CurrentPlaybackQueueEntryId = 0;
            }

            PlayQueueEntryModel songToRemove = null;

            if (!LookupMap.TryGetValue(entryId, out songToRemove))
            {
                DebugHelper.Alert(new CallerInfo(), "Tried to remove play queue entry {0} but its not in our lookup", entryId);

                return;
            }

            PlayQueueEntryModel previousModel = null;

            if (LookupMap.TryGetValue(songToRemove.PrevId, out previousModel))
            {
                previousModel.NextId = songToRemove.NextId;
            }

            PlayQueueEntryModel nextModel = null;

            if (LookupMap.TryGetValue(songToRemove.NextId, out nextModel))
            {
                nextModel.PrevId = songToRemove.PrevId;
            }

            PlaybackQueue.Remove(songToRemove);
            LookupMap.Remove(songToRemove.RowId);
            DatabaseManager.Current.DeletePlayQueueEntry(songToRemove.RowId);

            NotifyPropertyChanged(Properties.NextTrack);
            NotifyPropertyChanged(Properties.PrevTrack);
        }
예제 #29
0
        public bool Eval(SongViewModel song)
        {
            string targetValue = DebugHelper.CastAndAssert <string>(TargetProperty.GetValue(song));

            switch (EvalType)
            {
            case StringEvalType.Equal:
                return(targetValue == Target);

            case StringEvalType.SubString:
                return(targetValue.Contains(Target));

            case StringEvalType.StartsWith:
                return(targetValue.StartsWith(Target));

            case StringEvalType.EndsWith:
                return(targetValue.EndsWith(Target));

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected StringEvalType: {0}", EvalType);
                return(false);
            }
        }
예제 #30
0
        internal static string FGMessageIdToMessageString(PlayQueueConstantFGMessageId messageId)
        {
            switch (messageId)
            {
            case PlayQueueConstantFGMessageId.AppResumed:
                return(AppResumed);

            case PlayQueueConstantFGMessageId.AppSuspended:
                return(AppSuspended);

            case PlayQueueConstantFGMessageId.LoggingEnabledChanged:
                return(LoggingEnabledChanged);

            case PlayQueueConstantFGMessageId.PlayPauseTrack:
                return(PlayPauseTrack);

            case PlayQueueConstantFGMessageId.PossibleChromeChange:
                return(PossibleChromeChange);

            case PlayQueueConstantFGMessageId.PrevTrack:
                return(PrevTrack);

            case PlayQueueConstantFGMessageId.ScrubToPercentage:
                return(ScrubToPercentage);

            case PlayQueueConstantFGMessageId.SkipTrack:
                return(SkipTrack);

            case PlayQueueConstantFGMessageId.StartPlayback:
                return(StartPlayback);

            default:
                DebugHelper.Alert(new CallerInfo(), "Unexpected PlayQueueConstantFGMessageId {0} encountered", messageId.ToString());
                return(Unknown);
            }
        }