Esempio n. 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);
        }
Esempio n. 2
0
        public void RemoveEpisode(int animeEpisodeID)
        {
            if (string.IsNullOrEmpty(PlaylistItems))
            {
                return;
            }

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

            // create a new list without the moved item
            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)PlaylistItemType.Episode && objID == animeEpisodeID)
                {
                    // remove this old item
                }
                else
                {
                    if (PlaylistItems.Length > 0)
                    {
                        PlaylistItems += "|";
                    }
                    PlaylistItems += $"{objType};{objID}";
                }
            }
        }
Esempio n. 3
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));
        }
Esempio n. 4
0
        public void PopulatePlaylistObjects()
        {
            PlaylistObjects.Clear();

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

            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 ((PlaylistItemType)objType == PlaylistItemType.AnimeSeries)
                {
                    VM_AnimeSeries_User ser;
                    if (VM_MainListHelper.Instance.AllSeriesDictionary.TryGetValue(objID, out ser) == false)
                    {
                        // get the series
                        ser = (VM_AnimeSeries_User)VM_ShokoServer.Instance.ShokoServices.GetSeries(objID, VM_ShokoServer.Instance.CurrentUser.JMMUserID);
                        if (ser != null)
                        {
                            VM_MainListHelper.Instance.AllSeriesDictionary[objID] = ser;
                        }
                    }

                    if (ser != null)
                    {
                        PlaylistObjects.Add(new VM_PlaylistItem(PlaylistID, PlaylistItemType.AnimeSeries, ser));
                    }
                }
                else
                {
                    // get the episode
                    VM_AnimeEpisode_User ep = (VM_AnimeEpisode_User)VM_ShokoServer.Instance.ShokoServices.GetEpisode(objID,
                                                                                                                     VM_ShokoServer.Instance.CurrentUser.JMMUserID);
                    if (ep != null)
                    {
                        //ep.SetTvDBInfo();
                        PlaylistObjects.Add(new VM_PlaylistItem(PlaylistID, PlaylistItemType.Episode, ep));
                    }
                }
            }

            SetDependendProperties();
        }