Пример #1
0
        public bool IsAlreadyInPlaylist(PlaylistItemType pType, int id)
        {
            string[] items = PlaylistItems.Split('|');

            foreach (string pitem in items)
            {
                string[] parms = pitem.Split(';');
                if (parms.Length != 2)
                {
                    continue;
                }

                int objType;
                int objID;

                if (!int.TryParse(parms[0], out objType))
                {
                    continue;
                }
                if (!int.TryParse(parms[1], out objID))
                {
                    continue;
                }

                if (objType == (int)pType && objID == id)
                {
                    return(true);
                }
            }

            return(false);
        }
Пример #2
0
        public PlaylistItemVM(int playlistID, PlaylistItemType itemType, object playlistItem)
        {
            PlaylistID = playlistID;
            ItemType = itemType;
            PlaylistItem = playlistItem;

            if (ItemType == PlaylistItemType.AnimeSeries) Series = PlaylistItem as AnimeSeriesVM;

            if (ItemType == PlaylistItemType.Episode)
            {
                Episode = PlaylistItem as AnimeEpisodeVM;
                if (MainListHelperVM.Instance.AllSeriesDictionary.ContainsKey(Episode.AnimeSeriesID))
                    Series = MainListHelperVM.Instance.AllSeriesDictionary[Episode.AnimeSeriesID];
            }
        }
Пример #3
0
        //public static void Delete(this MusicDb musicDb, MusicFile mf)
        //{
        //    musicDb.RemovePlaylistItems(mf);
        //    var tags = mf.IdTags.ToArray();
        //    musicDb.IdTags.RemoveRange(tags);
        //    musicDb.MusicFiles.Remove(mf);
        //}
        public static void RemovePlaylistItems <T>(this MusicDb musicDb, T entity)
        {
            PlaylistItemType itemType = PlaylistItemType.MusicFile;
            long             itemId   = 0;

            switch (entity)
            {
            case Performance p:
                itemType = PlaylistItemType.Performance;
                itemId   = p.Id;
                break;

            case Work w:
                itemType = PlaylistItemType.Work;
                itemId   = w.Id;
                break;

            case Track t:
                itemType = PlaylistItemType.Track;
                itemId   = t.Id;
                break;

            case MusicFile mf:
                itemType = PlaylistItemType.MusicFile;
                itemId   = mf.Id;
                break;
            }
            var items = musicDb.PlaylistItems.Where(x => x.Type == itemType && x.ItemId == itemId).ToArray();

            foreach (var item in items)
            {
                var playlist = item.Playlist;
                item.Playlist = null;
                playlist.Items.Remove(item);
                musicDb.PlaylistItems.Remove(item);
                //log.Information($"playlist item {item.Title} removed from {playlist.Name}");
                if (playlist.Items.Count() == 0)
                {
                    musicDb.Playlists.Remove(playlist);
                    //log.Information($"playlist {playlist.Name} removed");
                }
            }
        }
Пример #4
0
        public PlaylistItemVM(int playlistID, PlaylistItemType itemType, object playlistItem)
        {
            PlaylistID   = playlistID;
            ItemType     = itemType;
            PlaylistItem = playlistItem;

            if (ItemType == PlaylistItemType.AnimeSeries)
            {
                Series = PlaylistItem as AnimeSeriesVM;
            }

            if (ItemType == PlaylistItemType.Episode)
            {
                Episode = PlaylistItem as AnimeEpisodeVM;
                if (MainListHelperVM.Instance.AllSeriesDictionary.ContainsKey(Episode.AnimeSeriesID))
                {
                    Series = MainListHelperVM.Instance.AllSeriesDictionary[Episode.AnimeSeriesID];
                }
            }
        }
Пример #5
0
        public VM_PlaylistItem(int playlistID, PlaylistItemType itemType, object playlistItem)
        {
            PlaylistID   = playlistID;
            ItemType     = itemType;
            PlaylistItem = playlistItem;

            if (ItemType == PlaylistItemType.AnimeSeries)
            {
                Series = PlaylistItem as VM_AnimeSeries_User;
            }

            if (ItemType == PlaylistItemType.Episode)
            {
                Episode = (VM_AnimeEpisode_User)PlaylistItem;
                if (VM_MainListHelper.Instance.AllSeriesDictionary.ContainsKey(Episode.AnimeSeriesID))
                {
                    Series = VM_MainListHelper.Instance.AllSeriesDictionary[Episode.AnimeSeriesID];
                }
            }
        }
Пример #6
0
        public void Drop(IDropInfo dropInfo)
        {
            PlaylistItemType itemType = PlaylistItemType.AnimeSeries;
            int objIDOld = -1;

            VM_PlaylistItem pli = dropInfo.Data as VM_PlaylistItem;

            if (pli == null)
            {
                return;
            }

            if (pli.ItemType == PlaylistItemType.Episode)
            {
                VM_AnimeEpisode_User ep = (VM_AnimeEpisode_User)pli.PlaylistItem;
                itemType = PlaylistItemType.Episode;
                objIDOld = ep.AnimeEpisodeID;
            }
            if (pli.ItemType == PlaylistItemType.AnimeSeries)
            {
                VM_AnimeSeries_User ep = (VM_AnimeSeries_User)pli.PlaylistItem;
                itemType = PlaylistItemType.AnimeSeries;
                objIDOld = ep.AnimeSeriesID;
            }

            int iType = (int)itemType;

            // find where this item was previously

            if (string.IsNullOrEmpty(PlaylistItems))
            {
                return;
            }

            string[] items = PlaylistItems.Split('|');

            // create a new list without the moved item
            string newItemList = "";

            foreach (string pitem in items)
            {
                string[] parms = pitem.Split(';');
                if (parms.Length != 2)
                {
                    continue;
                }

                int objType;
                int objID;

                if (!int.TryParse(parms[0], out objType))
                {
                    continue;
                }
                if (!int.TryParse(parms[1], out objID))
                {
                    continue;
                }

                if (objType == iType && objID == objIDOld)
                {
                    // skip the old item
                }
                else
                {
                    if (newItemList.Length > 0)
                    {
                        newItemList += "|";
                    }
                    newItemList += $"{objType};{objID}";
                }
            }

            // insert the moved item into it's new position
            items = newItemList.Split('|');

            PlaylistItems = "";
            int curPos = 0;

            if (string.IsNullOrEmpty(newItemList))
            {
                // means there was only one item in list to begin with
                PlaylistItems += $"{iType};{objIDOld}";
            }
            else
            {
                foreach (string pitem in items)
                {
                    string[] parms = pitem.Split(';');
                    if (parms.Length != 2)
                    {
                        continue;
                    }

                    int objType;
                    int objID;

                    int.TryParse(parms[0], out objType);
                    int.TryParse(parms[1], out objID);

                    if (curPos == dropInfo.InsertIndex)
                    {
                        // insert moved item
                        if (PlaylistItems.Length > 0)
                        {
                            PlaylistItems += "|";
                        }
                        PlaylistItems += $"{iType};{objIDOld}";
                    }


                    if (PlaylistItems.Length > 0)
                    {
                        PlaylistItems += "|";
                    }
                    PlaylistItems += $"{objType};{objID}";

                    curPos++;
                }
            }

            // moved to the end of the list
            if (dropInfo.InsertIndex > items.Length)
            {
                if (PlaylistItems.Length > 0)
                {
                    PlaylistItems += "|";
                }
                PlaylistItems += $"{iType};{objIDOld}";
            }

            Save();
            PopulatePlaylistObjects();

            VM_PlaylistHelper.Instance.OnPlaylistModified(new PlaylistModifiedEventArgs(PlaylistID));
        }
Пример #7
0
 public PlaylistMenuCommand(PlaylistItemType addType, int playlistID)
 {
     AddType = addType;
     PlaylistID = playlistID;
 }
Пример #8
0
        public bool IsAlreadyInPlaylist(PlaylistItemType pType, int id)
        {
            string[] items = this.PlaylistItems.Split('|');

            foreach (string pitem in items)
            {
                string[] parms = pitem.Split(';');
                if (parms.Length != 2) continue;

                int objType = -1;
                int objID = -1;

                if (!int.TryParse(parms[0], out objType)) continue;
                if (!int.TryParse(parms[1], out objID)) continue;

                if (objType == (int)pType && objID == id)
                    return true;

            }

            return false;
        }
Пример #9
0
        void GongSolutions.Wpf.DragDrop.IDropTarget.Drop(DropInfo dropInfo)
        {
            PlaylistItemType itemType = PlaylistItemType.AnimeSeries;
            int objIDOld = -1;

            PlaylistItemVM pli = dropInfo.Data as PlaylistItemVM;

            if (pli == null)
            {
                return;
            }

            if (pli.ItemType == PlaylistItemType.Episode)
            {
                AnimeEpisodeVM ep = (AnimeEpisodeVM)pli.PlaylistItem;
                itemType = PlaylistItemType.Episode;
                objIDOld = ep.AnimeEpisodeID;
            }
            if (pli.ItemType == PlaylistItemType.AnimeSeries)
            {
                AnimeSeriesVM ep = (AnimeSeriesVM)pli.PlaylistItem;
                itemType = PlaylistItemType.AnimeSeries;
                objIDOld = ep.AnimeSeriesID.Value;
            }

            int iType = (int)itemType;

            // find where this item was previously

            if (string.IsNullOrEmpty(this.PlaylistItems))
            {
                return;
            }

            string[] items = this.PlaylistItems.Split('|');

            // create a new list without the moved item
            string newItemList = "";

            foreach (string pitem in items)
            {
                string[] parms = pitem.Split(';');
                if (parms.Length != 2)
                {
                    continue;
                }

                int objType = -1;
                int objID   = -1;

                if (!int.TryParse(parms[0], out objType))
                {
                    continue;
                }
                if (!int.TryParse(parms[1], out objID))
                {
                    continue;
                }

                if (objType == iType && objID == objIDOld)
                {
                    // skip the old item
                }
                else
                {
                    if (newItemList.Length > 0)
                    {
                        newItemList += "|";
                    }
                    newItemList += string.Format("{0};{1}", objType, objID);
                }
            }

            // insert the moved item into it's new position
            items = newItemList.Split('|');

            this.PlaylistItems = "";
            int curPos = 0;

            if (string.IsNullOrEmpty(newItemList))
            {
                // means there was only one item in list to begin with
                PlaylistItems += string.Format("{0};{1}", iType, objIDOld);
            }
            else
            {
                foreach (string pitem in items)
                {
                    string[] parms = pitem.Split(';');
                    if (parms.Length != 2)
                    {
                        continue;
                    }

                    int objType = -1;
                    int objID   = -1;

                    int.TryParse(parms[0], out objType);
                    int.TryParse(parms[1], out objID);

                    if (curPos == dropInfo.InsertIndex)
                    {
                        // insert moved item
                        if (PlaylistItems.Length > 0)
                        {
                            PlaylistItems += "|";
                        }
                        PlaylistItems += string.Format("{0};{1}", iType, objIDOld);
                    }


                    if (PlaylistItems.Length > 0)
                    {
                        PlaylistItems += "|";
                    }
                    PlaylistItems += string.Format("{0};{1}", objType, objID);

                    curPos++;
                }
            }

            // moved to the end of the list
            if (dropInfo.InsertIndex > items.Length)
            {
                if (PlaylistItems.Length > 0)
                {
                    PlaylistItems += "|";
                }
                PlaylistItems += string.Format("{0};{1}", iType, objIDOld);
            }

            Save();
            PopulatePlaylistObjects();

            PlaylistHelperVM.Instance.OnPlaylistModified(new PlaylistModifiedEventArgs(PlaylistID));
        }