public void AddOnlineMediaItem(OnlineMediaItem omi)
        {
            try
            {
                if (omi is RadioStation)
                {
                    Add(new RadioStationPlaylistItem(omi as RadioStation));
                }
                else if (omi is DeezerTrackItem)
                {
                    Add(new DeezerTrackPlaylistItem(omi as DeezerTrackItem));
                }


                EventRaiser(Count - 1, -1, UpdateType.Added);
                SetupRandomSequence(-1);
            }
            catch (Exception ex)
            {
                ErrorDispatcher.DispatchError(ex, true);
            }
            finally
            {
                Application.DoEvents();
            }
        }
 public void SafeRemoveItem(OnlineMediaItem item)
 {
     if (Contains(item))
     {
         OnlineMediaItems.Remove(item);
     }
 }
 public void SafeAddItem(OnlineMediaItem item)
 {
     if (Contains(item) == false)
     {
         OnlineMediaItems.Add(item);
     }
 }
        private void LvRadioStations_SelectedIndexChanged(object sender, EventArgs e)
        {
            base.SelectedItems.Clear();

            foreach (ListViewItem lvi in lvRadioStations.SelectedItems)
            {
                OnlineMediaItem rs = lvi.Tag as OnlineMediaItem;
                if (rs != null)
                {
                    base.SelectedItems.Add(rs);
                }
            }
        }
        public void LoadM3UPlaylistFromString(string content, string playlistFileName = "")
        {
            try
            {
                OnlineMediaItem omi = null;

                string[] lines = content.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                if (lines != null)
                {
                    foreach (string line in lines)
                    {
                        if (_abortLoad)
                        {
                            break;
                        }

                        if (line.StartsWith("#"))
                        {
                            if (line.StartsWith("#RADIO:"))
                            {
                                string   s      = line.Replace("#RADIO:", "").Trim();
                                string[] fields = s.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                                if (fields != null && fields.Length > 1)
                                {
                                    omi       = new RadioStation(OnlineMediaSource.ShoutCast);
                                    omi.Title = fields[1];
                                }
                            }
                            else if (line.StartsWith("#DZMEDIA:"))
                            {
                                string s   = line.Replace("#DZMEDIA:", "").Trim();
                                int    idx = s.IndexOf(',');
                                if (idx > 0)
                                {
                                    string durStr = s.Substring(0, idx);

                                    DeezerTrackItem dti = new DeezerTrackItem();

                                    int sec = 0;
                                    int.TryParse(durStr, out sec);
                                    dti.Duration = TimeSpan.FromSeconds(sec);

                                    if (idx < (s.Length - 2))
                                    {
                                        string[] fields2 = s.Substring(idx + 1).Split("`".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                                        dti.Artist = fields2[0];
                                        dti.Title  = fields2[1];
                                        dti.Album  = fields2[2];
                                    }

                                    omi = dti;
                                }
                            }
                        }
                        else
                        {
                            if (omi != null)
                            {
                                omi.Url = line;
                                AddOnlineMediaItem(omi);
                            }
                            else
                            {
                                AddItem(GetAbsoluteItemPath(line, playlistFileName));
                            }

                            omi = null;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.LogException(ex);
            }
        }
 public bool Contains(OnlineMediaItem item)
 {
     return(OnlineMediaItems.Contains(item));
 }