示例#1
0
        public PlaylistElement GetPlaylistElementFromTrack(FullTrack track)
        {
            var playlistElement = new PlaylistElement {
                Track = track.Name, TrackId = track.Id
            };

            var ids     = track.Artists.Select(a => a.Id).ToList();
            var artists = GetSeveralArtists(ids);

            var artistsList = new List <string>();
            var genresList  = new List <string>();

            if (artists.Artists != null)
            {
                foreach (var fullArtist in artists.Artists)
                {
                    artistsList.Add(fullArtist.Name);
                    genresList.AddRange(fullArtist.Genres);
                }
            }
            artistsList.Sort();
            genresList.Sort();
            var artistList = track.Artists.Select(x => x.Name).ToList();

            artistList.Sort();
            playlistElement.Artists = artistsList.Any() ? new List <string>(artistsList) : new List <string>();
            playlistElement.Genres  = genresList.Any() ? new List <string>(genresList) : new List <string>();

            return(playlistElement);
        }
示例#2
0
 public PlaylistElement(PlaylistElement pe)
 {
     Cover = new CStatic(pe.Cover);
     Background = new CStatic(pe.Background);
     Text1 = new CText(pe.Text1);
     SelectSlide = new CSelectSlide(pe.SelectSlide);
     Content = pe.Content;
 }
示例#3
0
 private static bool IsBackgroundFile(PlaylistElement element)
 {
     foreach (PlaylistElement elements in _BGMusicFileNames)
     {
         if (elements.MusicFilePath == element.MusicFilePath)
         {
             return(true);
         }
     }
     return(false);
 }
        void ok(object sender, EventArgs e)
        {
            if (query == "Fromremote")
            {
                if (listaslocales.Count > 0)
                {
                    var listilla  = new List <PlaylistElement>();
                    var texto     = File.ReadAllText(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/gr3playerplaylist/" + listaslocales[playlistidx].Name);
                    var nombreses = texto.Split('$')[0].Split(';').ToList();
                    var links     = texto.Split('$')[1].Split(';').ToList();

                    var listaelementos = new List <PlaylistElement>();
                    for (int i = 0; i < nombreses.Count; i++)
                    {
                        if (nombreses[i].Trim() != "" || links[i].Trim() != "")
                        {
                            var elemento = new PlaylistElement()
                            {
                                Name = nombreses[i],
                                Link = links[i]
                            };
                            listaelementos.Add(elemento);
                        }
                    }
                    listaslocales[playlistidx].MediaElements = listaelementos;
                    Mainmenu.gettearinstancia()
                    .clientelalistas
                    .Client
                    .Send(Encoding.UTF8.GetBytes(query + "__==__==__" + JsonConvert.SerializeObject(listaslocales[playlistidx])));
                }
                else
                {
                    Toast.MakeText(this, "La lista esta vacia", ToastLength.Long).Show();
                }
            }
            else
            {
                if (listasremotas.Count > 0)
                {
                    Mainmenu.gettearinstancia()
                    .clientelalistas
                    .Client
                    .Send(Encoding.UTF8.GetBytes(query + "__==__==__" + JsonConvert.SerializeObject(listasremotas[playlistidx])));
                }
                else
                {
                    Toast.MakeText(this, "La lista esta vacia", ToastLength.Long).Show();
                }
            }
        }
示例#5
0
        public static void Next()
        {
            if (_AllFileNames.Count > 0)
            {
                if (_PreviousMusicIndex == _PreviousFileNames.Count - 1 || _PreviousFileNames.Count == 0) //We are not currently in the previous list
                {
                    Stop();
                    if (_NotPlayedFileNames.Count == 0)
                    {
                        _NotPlayedFileNames.AddRange(_AllFileNames);
                    }

                    _CurrentPlaylistElement = _NotPlayedFileNames[CGame.Rand.Next(_NotPlayedFileNames.Count)];
                    _NotPlayedFileNames.Remove(_CurrentPlaylistElement);

                    _PreviousFileNames.Add(_CurrentPlaylistElement);
                    _PreviousMusicIndex = _PreviousFileNames.Count - 1;
                }
                else if (_PreviousFileNames.Count > 0) //We are in the previous list
                {
                    Stop();
                    _PreviousMusicIndex++;

                    _CurrentPlaylistElement = _PreviousFileNames[_PreviousMusicIndex];
                }
                _CurrentMusicStream = CSound.Load(_CurrentPlaylistElement.MusicFilePath);
                CSound.SetStreamVolumeMax(_CurrentMusicStream, CConfig.BackgroundMusicVolume);

                //Seek to #Start-Tag, if found
                if (_CurrentPlaylistElement.Start != 0f)
                {
                    CSound.SetPosition(_CurrentMusicStream, _CurrentPlaylistElement.Start);
                }

                if (_VideoEnabled)
                {
                    LoadVideo();
                }
                CSound.SetStreamVolume(_CurrentMusicStream, 0f);
                Play();
            }
            else
            {
                Stop();
            }
        }
示例#6
0
        public static void Stop()
        {
            if (!_Playing)
            {
                return;
            }

            if (_VideoEnabled && _Video != -1)
            {
                CVideo.VdClose(_Video);
                CDraw.RemoveTexture(ref _CurrentVideoTexture);
                _Video = -1;
            }
            CSound.FadeAndStop(_CurrentMusicStream, 0f, CSettings.BackgroundMusicFadeTime);

            _CurrentPlaylistElement = new PlaylistElement();
            _Playing = false;
        }
示例#7
0
        public static void Previous()
        {
            if (_PreviousFileNames.Count > 0 || _PreviousMusicIndex >= 0)
            {
                float pos = CSound.GetPosition(_CurrentMusicStream);
                if (CSound.GetPosition(_CurrentMusicStream) >= 1.5f)
                {
                    CSound.SetPosition(_CurrentMusicStream, 0);
                    if (_VideoEnabled && _Video != -1)
                    {
                        CVideo.VdSkip(_Video, 0f, _CurrentPlaylistElement.VideoGap);
                    }
                }
                else
                {
                    Stop();
                    _PreviousMusicIndex--;
                    if (_PreviousMusicIndex < 0)
                    {
                        _PreviousMusicIndex = 0; //No previous songs left, so play the first
                    }
                    _CurrentPlaylistElement = _PreviousFileNames[_PreviousMusicIndex];

                    _CurrentMusicStream = CSound.Load(_CurrentPlaylistElement.MusicFilePath);
                    CSound.SetStreamVolumeMax(_CurrentMusicStream, CConfig.BackgroundMusicVolume);
                    if (_VideoEnabled)
                    {
                        LoadVideo();
                    }
                    CSound.SetStreamVolume(_CurrentMusicStream, 0f);
                    Play();
                }
            }
            else if (_CurrentMusicStream != -1)
            {
                CSound.SetPosition(_CurrentMusicStream, 0);
                if (_VideoEnabled && _Video != -1)
                {
                    CVideo.VdSkip(_Video, 0f, _CurrentPlaylistElement.VideoGap);
                }
            }
        }
示例#8
0
        public static void Stop()
        {
            if (!_Playing)
                return;

            if (_VideoEnabled && _Video != -1)
            {
                CVideo.VdClose(_Video);
                CDraw.RemoveTexture(ref _CurrentVideoTexture);
                _Video = -1;
            }
            CSound.FadeAndStop(_CurrentMusicStream, 0f, CSettings.BackgroundMusicFadeTime);

            _CurrentPlaylistElement = new PlaylistElement();
            _Playing = false;
        }
示例#9
0
        private void UpdatePlaylistElementList(Playlist playlist, IEnumerable <PlaylistUpdateViewModel> playlistElementListTO)
        {
            var playlistElementList = playlist.PlaylistElements;
            var index = 0;

            foreach (var playlistElementTO in playlistElementListTO)
            {
                int?playlistId;
                int?songId;
                if (playlistElementTO.Name != null)
                {
                    playlistId = playlistElementTO.Id;
                    songId     = null;
                }
                else
                {
                    playlistId = null;
                    songId     = playlistElementTO.Id;
                }
                PlaylistElement playlistElement;
                lock (obj)
                {
                    _dbContext.Entry(playlist).Reload();
                    _dbContext.Entry(playlist).Collection(pl => pl.PlaylistElements).Load();
                    if (index >= playlist.PlaylistElements.Count())
                    {
                        playlistElement = new PlaylistElement
                        {
                            ParentPlaylistId = playlist.Id,
                            Position         = index,
                            PlaylistId       = playlistId,
                            SongId           = songId
                        };
                        _dbContext.Add(playlistElement);
                        _dbContext.SaveChanges();
                    }
                    else
                    {
                        playlistElement            = playlist.PlaylistElements.Single(pe => pe.Position == index);
                        playlistElement.SongId     = songId;
                        playlistElement.PlaylistId = playlistId;
                        _dbContext.SaveChanges();
                    }
                }
                ++index;
            }
            if (playlistElementListTO.Count() < playlist.PlaylistElements.Count())
            {
                index = playlist.PlaylistElements.Count() - 1;
                while (playlistElementListTO.Count() < playlist.PlaylistElements.Count())
                {
                    lock (obj)
                    {
                        var playlistElement = playlist.PlaylistElements.SingleOrDefault(pe => pe.Position == index);
                        if (playlistElement != null)
                        {
                            _dbContext.Remove(playlistElement);
                            _dbContext.SaveChanges();
                        }
                        --index;
                        _dbContext.Entry(playlist).Reload();
                        _dbContext.Entry(playlist).Collection(pl => pl.PlaylistElements).Load();
                    }
                }
            }
        }
示例#10
0
        public bool HandleMouse(MouseEvent MouseEvent)
        {
            _Interactions.HandleMouse(MouseEvent);

            if (CHelper.IsInBounds(CompleteRect, MouseEvent) && Visible)
            {
                //Scroll
                if (MouseEvent.Wheel > 0)
                {
                    if (PlaylistElements.Count + Offset + MouseEvent.Wheel <= PlaylistElementContents.Count)
                    {
                        Offset += MouseEvent.Wheel;
                        Update();
                    }
                    return true;
                }
                else if (MouseEvent.Wheel < 0)
                {
                    if (Offset + MouseEvent.Wheel >= 0)
                    {
                        Offset += MouseEvent.Wheel;
                        Update();
                    }
                    return true;
                }

                bool hover_set = false;
                for (int i = 0; i < PlaylistElements.Count; i++)
                {
                    //Hover for playlist-element
                    if (PlaylistElementContents.Count - 1 >= i && CHelper.IsInBounds(PlaylistElements[i].Background.Rect, MouseEvent))
                    {
                        hover_set = true;
                        CurrentPlaylistElement = i;
                        _Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
                        _Interactions.ProcessMouseMove(MouseEvent.X, MouseEvent.Y);
                    }

                    //Delete Entry with RB
                    if (CHelper.IsInBounds(PlaylistElements[i].Background.Rect, MouseEvent) && MouseEvent.RB && PlaylistElements[i].Content != -1)
                    {
                        CPlaylists.Playlists[ActivePlaylistID].DeleteSong(PlaylistElements[i].Content);
                        UpdatePlaylist();
                        return true;
                    }
                }
                if (!hover_set)
                {
                    CurrentPlaylistElement = -1;
                }

                switch (_EditMode)
                {
                    //Normal mode
                    case EEditMode.None:

                        //LB actions
                        if (MouseEvent.LB)
                        {
                            if (CurrentPlaylistElement != -1)
                            {
                                CPlaylists.Playlists[ActivePlaylistID].Songs[CurrentPlaylistElement + Offset].GameMode = PlaylistElementContents[CurrentPlaylistElement + Offset].Modes[PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection];
                                UpdatePlaylist();
                            }
                            if (_Theme.ButtonPlaylistClose.Selected)
                            {
                                ClosePlaylist();
                                return true;
                            }
                            else if (_Theme.ButtonPlaylistSing.Selected)
                            {
                                StartPlaylistSongs();
                                return true;
                            }
                            else if (_Theme.ButtonPlaylistSave.Selected)
                            {
                                CPlaylists.SavePlaylist(ActivePlaylistID);
                                return true;
                            }
                            else if (_Theme.ButtonPlaylistDelete.Selected)
                            {
                                CPlaylists.DeletePlaylist(ActivePlaylistID);
                                ClosePlaylist();
                                return true;
                            }
                            else if (_Theme.ButtonPlaylistName.Selected)
                            {
                                _EditMode = EEditMode.PlaylistName;
                                _Theme.ButtonPlaylistName.EditMode = true;
                                return true;
                            }
                        }

                        //Change order with holding LB
                        if (MouseEvent.LBH && CurrentPlaylistElement != -1 && PlaylistElementContents.Count > 0 && DragAndDropSongID == -1)
                        {

                            ChangeOrderSource = CurrentPlaylistElement + Offset;

                            //Update of Drag/Drop-Texture
                            if (ChangeOrderSource >= PlaylistElementContents.Count)
                                return true;

                            ChangeOrderElement = new PlaylistElement(PlaylistElements[CurrentPlaylistElement]);
                            ChangeOrderElement.Background.Rect.Z = CSettings.zNear;
                            ChangeOrderElement.Cover.Rect.Z = CSettings.zNear;
                            ChangeOrderElement.SelectSlide.Rect.Z = CSettings.zNear;
                            ChangeOrderElement.SelectSlide.RectArrowLeft.Z = CSettings.zNear;
                            ChangeOrderElement.SelectSlide.RectArrowRight.Z = CSettings.zNear;
                            ChangeOrderElement.Text1.Z = CSettings.zNear;

                            ChangeOrderElement.Background.Texture = CTheme.GetSkinTexture(_Theme.TextureBackgroundName);
                            ChangeOrderElement.Background.Color = BackgroundColor;

                            OldMousePosX = MouseEvent.X;
                            OldMousePosY = MouseEvent.Y;

                            _EditMode = EEditMode.ChangeOrder;
                        }

                        if (!MouseEvent.LBH && DragAndDropSongID != -1)
                        {
                            EGameMode gm = EGameMode.TR_GAMEMODE_NORMAL;
                            CSong song = CSongs.GetSong(DragAndDropSongID);

                            if (song != null)
                            {
                                if (song.IsDuet)
                                    gm = EGameMode.TR_GAMEMODE_DUET;

                                if (CurrentPlaylistElement != -1)
                                {
                                    CPlaylists.Playlists[ActivePlaylistID].SongInsert(CurrentPlaylistElement + Offset, DragAndDropSongID, gm);
                                    UpdatePlaylist();
                                }
                                else
                                {
                                    if (MouseEvent.Y < PlaylistElements[0].Background.Rect.Y && Offset == 0)
                                    {
                                        CPlaylists.Playlists[ActivePlaylistID].SongInsert(0, DragAndDropSongID, gm);
                                        UpdatePlaylist();
                                    }
                                    else
                                    {
                                        if (PlaylistElements.Count + Offset >= PlaylistElementContents.Count)
                                        {
                                            float min = 0f;
                                            for (int i = PlaylistElements.Count - 1; i >= 0; i--)
                                            {
                                                if (PlaylistElements[i].SelectSlide.Visible)
                                                {
                                                    min = PlaylistElements[i].SelectSlide.Rect.Y + PlaylistElements[i].SelectSlide.Rect.H;
                                                    break;
                                                }
                                            }

                                            if (MouseEvent.Y > min)
                                            {
                                                CPlaylists.Playlists[ActivePlaylistID].AddSong(DragAndDropSongID, gm);
                                                UpdatePlaylist();
                                                ScrollToBottom();
                                            }
                                        }
                                    }
                                    DragAndDropSongID = -1;
                                    UpdatePlaylist();
                                }
                            }
                        }

                        break;

                    case EEditMode.PlaylistName:
                        _Interactions.SetInteractionToButton(_Theme.ButtonPlaylistName);
                        CurrentPlaylistElement = -1;
                        if (MouseEvent.LB)
                        {
                            if (_Theme.ButtonPlaylistName.Selected)
                            {
                                CPlaylists.Playlists[ActivePlaylistID].PlaylistName = _Theme.ButtonPlaylistName.Text.Text;
                                CPlaylists.Playlists[ActivePlaylistID].SavePlaylist();
                                _EditMode = EEditMode.None;
                                return true;
                            }
                        }
                        else if (MouseEvent.RB)
                        {
                            if (_Theme.ButtonPlaylistName.Selected)
                            {
                                _Theme.ButtonPlaylistName.Text.Text = CPlaylists.Playlists[ActivePlaylistID].PlaylistName;
                                _EditMode = EEditMode.None;
                                _Theme.ButtonPlaylistName.EditMode = false;
                                return true;
                            }
                        }
                        break;

                    case EEditMode.ChangeOrder:
                        //Actions according to playlist-element

                        //Update coords for Drag/Drop-Texture
                        ChangeOrderElement.MouseMove(MouseEvent.X, MouseEvent.Y, OldMousePosX, OldMousePosY);
                        OldMousePosX = MouseEvent.X;
                        OldMousePosY = MouseEvent.Y;

                        if (!MouseEvent.LBH)
                        {
                            if (CurrentPlaylistElement != -1 && CurrentPlaylistElement + Offset != ChangeOrderSource)
                            {
                                CPlaylists.Playlists[ActivePlaylistID].SongMove(ChangeOrderSource, CurrentPlaylistElement + Offset);
                                UpdatePlaylist();
                            }
                            else if (CurrentPlaylistElement == -1)
                            {
                                if (MouseEvent.Y < PlaylistElements[0].Background.Rect.Y && Offset == 0)
                                {
                                    CPlaylists.Playlists[ActivePlaylistID].SongMove(ChangeOrderSource, 0);
                                }
                                else
                                {
                                    if (PlaylistElements.Count + Offset >= PlaylistElementContents.Count)
                                    {
                                        float min = 0f;
                                        for (int i = PlaylistElements.Count - 1; i >= 0; i--)
                                        {
                                            if (PlaylistElements[i].SelectSlide.Visible)
                                            {
                                                min = PlaylistElements[i].SelectSlide.Rect.Y + PlaylistElements[i].SelectSlide.Rect.H;
                                                break;
                                            }
                                        }

                                        if (MouseEvent.Y > min)
                                        {
                                            CPlaylists.Playlists[ActivePlaylistID].SongMove(ChangeOrderSource, PlaylistElementContents.Count - 1);
                                        }
                                    }
                                }

                                UpdatePlaylist();
                            }
                            _EditMode = EEditMode.None;
                        }
                        break;
                }
            }
            return false;
        }
示例#11
0
        public static void Previous()
        {
            if (_PreviousFileNames.Count > 0 || _PreviousMusicIndex >= 0)
            {
                float pos = CSound.GetPosition(_CurrentMusicStream);
                if (CSound.GetPosition(_CurrentMusicStream) >= 1.5f)
                {
                    CSound.SetPosition(_CurrentMusicStream, 0);
                    if (_VideoEnabled && _Video != -1)
                        CVideo.VdSkip(_Video, 0f, _CurrentPlaylistElement.VideoGap);
                }
                else
                {
                    Stop();
                    _PreviousMusicIndex--;
                    if (_PreviousMusicIndex < 0)
                        _PreviousMusicIndex = 0; //No previous songs left, so play the first

                    _CurrentPlaylistElement = _PreviousFileNames[_PreviousMusicIndex];

                    _CurrentMusicStream = CSound.Load(_CurrentPlaylistElement.MusicFilePath);
                    CSound.SetStreamVolumeMax(_CurrentMusicStream, CConfig.BackgroundMusicVolume);
                    if (_VideoEnabled)
                        LoadVideo();
                    CSound.SetStreamVolume(_CurrentMusicStream, 0f);
                    Play();
                }
            }
            else if (_CurrentMusicStream != -1)
            {
                CSound.SetPosition(_CurrentMusicStream, 0);
                if (_VideoEnabled && _Video != -1)
                    CVideo.VdSkip(_Video, 0f, _CurrentPlaylistElement.VideoGap);
            }
        }
示例#12
0
        private void PrepareList()
        {
            PlaylistElements.Clear();
            
            for (int i = 0; i < Math.Floor(Rect.H / _Theme.EntryHeight); i++)
            {
                PlaylistElement en = new PlaylistElement();

                en.Background = new CStatic(_Theme.TextureBackgroundName, BackgroundColor, new SRectF(Rect.X, Rect.Y + (i * _Theme.EntryHeight), Rect.W, _Theme.EntryHeight, Rect.Z));

                en.Cover = new CStatic(_Theme.StaticCover);
                en.Cover.Rect.Y += Rect.Y + (i * _Theme.EntryHeight);
                en.Cover.Rect.X += Rect.X;

                en.Text1 = new CText(_Theme.Text1);
                en.Text1.X += Rect.X;
                en.Text1.Y += Rect.Y + (i * _Theme.EntryHeight);

                en.SelectSlide = new CSelectSlide(_Theme.SelectSlideGameMode);
                en.SelectSlide.Rect.X += Rect.X;
                en.SelectSlide.Rect.Y += Rect.Y + (i * _Theme.EntryHeight);
                en.SelectSlide.RectArrowLeft.X += Rect.X;
                en.SelectSlide.RectArrowLeft.Y += Rect.Y + (i * _Theme.EntryHeight);
                en.SelectSlide.RectArrowRight.X += Rect.X;
                en.SelectSlide.RectArrowRight.Y += Rect.Y + (i * _Theme.EntryHeight);

                en.Content = -1;

                PlaylistElements.Add(en);
                _Interactions.AddSelectSlide(en.SelectSlide);
                _Interactions.AddText(en.Text1);
                _Interactions.AddStatic(en.Background);
                _Interactions.AddStatic(en.Cover);
            }
        }
示例#13
0
 private void AssertEqual(PlaylistElement e1, PlaylistElement e2)
 {
     Assert.AreEqual(e1.Title, e2.Title);
     Assert.AreEqual(e1.Duration, e2.Duration);
     Assert.AreEqual(e1.Uri.ToString(), e2.Uri.ToString());
 }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.dialogolistas);
            var          inst            = Reproducirlistaact.gettearinstancia();
            ImageView    fondo           = FindViewById <ImageView>(Resource.Id.fondo1);
            ImageView    imgaccion       = FindViewById <ImageView>(Resource.Id.imagenaccion);
            TextView     textoaccion     = FindViewById <TextView>(Resource.Id.textView3);
            TextView     textoheader     = FindViewById <TextView>(Resource.Id.textView1);
            LinearLayout botonreproducir = FindViewById <LinearLayout>(Resource.Id.imageView3);
            LinearLayout botonaccion     = FindViewById <LinearLayout>(Resource.Id.imageView2);
            LinearLayout botoninfo       = FindViewById <LinearLayout>(Resource.Id.imageView5);

            this.SetFinishOnTouchOutside(true);
            textoheader.Text = Intent.GetStringExtra("nombrelista");
            Glide.With(this)
            .Load("http://i.ytimg.com/vi/" + Intent.GetStringExtra("portada").Split('=')[1] + "/mqdefault.jpg")
            .Into(fondo);
            var query = Intent.GetStringExtra("querry");

            if (query == "Fromlocal")
            {
                imgaccion.SetBackgroundResource(Resource.Drawable.downloadbutton);
                textoaccion.Text = "Guardar lista";
            }
            else
            {
                imgaccion.SetBackgroundResource(Resource.Drawable.upload);
                textoaccion.Text = "Enviar lista";
            }
            var arch    = File.ReadAllText(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/gr3playerplaylist/" + inst.listaslocales[inst.playlistidx].Name);
            var counter = arch.Split('$')[1].Split(';').ToList();

            if (counter.Count > 0)
            {
                if (counter[0].Trim() == "")
                {
                    this.Finish();
                    Toast.MakeText(this, "La lista esta vacia", ToastLength.Long).Show();
                }
            }
            else
            {
                this.Finish();
                Toast.MakeText(this, "La lista esta vacia", ToastLength.Long).Show();
            }
            botonaccion.Click += delegate
            {
                new Thread(() =>
                {
                    if (query == "Fromlocal")
                    {
                        Mainmenu.gettearinstancia().playlistreceived = false;
                        RunOnUiThread(() =>
                        {
                            new Android.Support.V7.App.AlertDialog.Builder(this)
                            .SetTitle("Advertencia")
                            .SetMessage("Desea guardar la lista de reproduccion remota: " + Intent.GetStringExtra("nombrelista") + "??\n NOTA:\nSi hay una lista con este mismo nombre sera sustituida por esta")
                            .SetPositiveButton("Si", (aa, aaa) =>
                            {
                                new Thread(() =>
                                {
                                    var elementos = inst.listasremotas[inst.playlistidx];
                                    var nombreses = string.Join(";", elementos.MediaElements.Select(axx => axx.Name).ToArray()) + ";";
                                    var linkeses  = string.Join(";", elementos.MediaElements.Select(axx => axx.Link).ToArray()) + ";";
                                    var archi     = File.CreateText(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/gr3playerplaylist/" + Intent.GetStringExtra("nombrelista"));
                                    archi.Write(nombreses + "$" + linkeses);
                                    archi.Close();
                                    RunOnUiThread(() => Toast.MakeText(this, "Lista guardada exitosamente", ToastLength.Long).Show());
                                }).Start();
                            })
                            .SetNegativeButton("No", (aa, ff) => { })
                            .Create()
                            .Show();
                        });
                    }
                    else
                    {
                        var listilla  = new List <PlaylistElement>();
                        var texto     = File.ReadAllText(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/gr3playerplaylist/" + inst.listaslocales[inst.playlistidx].Name);
                        var nombreses = texto.Split('$')[0].Split(';').ToList();
                        var links     = texto.Split('$')[1].Split(';').ToList();

                        var listaelementos = new List <PlaylistElement>();
                        for (int i = 0; i < nombreses.Count; i++)
                        {
                            if (nombreses[i].Trim() != "" && links[i].Trim() != "")
                            {
                                var elemento = new PlaylistElement()
                                {
                                    Name = nombreses[i],
                                    Link = links[i]
                                };
                                listaelementos.Add(elemento);
                            }
                        }
                        inst.listaslocales[inst.playlistidx].MediaElements = listaelementos;
                        Mainmenu.gettearinstancia()
                        .clientelalistas
                        .Client
                        .Send(Encoding.UTF8.GetBytes("Receive__==__==__" + JsonConvert.SerializeObject(inst.listaslocales[inst.playlistidx])));
                        RunOnUiThread(() => Toast.MakeText(this, "Lista enviada exitosamente", ToastLength.Long).Show());



                        RunOnUiThread(() => this.Finish());
                    }
                }).Start();
            };

            botoninfo.Click += delegate
            {
                new Thread(() =>
                {
                    if (query == "Fromremote")
                    {
                        if (inst.listaslocales.Count > 0)
                        {
                            var listilla  = new List <PlaylistElement>();
                            var texto     = File.ReadAllText(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/gr3playerplaylist/" + inst.listaslocales[inst.playlistidx].Name);
                            var nombreses = texto.Split('$')[0].Split(';').ToList();
                            var links     = texto.Split('$')[1].Split(';').ToList();

                            var listaelementos = new List <PlaylistElement>();
                            for (int i = 0; i < nombreses.Count; i++)
                            {
                                if (nombreses[i].Trim() != "" || links[i].Trim() != "")
                                {
                                    var elemento = new PlaylistElement()
                                    {
                                        Name = nombreses[i],
                                        Link = links[i]
                                    };
                                    listaelementos.Add(elemento);
                                }
                            }
                            RunOnUiThread(() =>
                            {
                                ListView lista           = new ListView(this);
                                adapterlistaremoto adapt = new adapterlistaremoto(this, listaelementos.Select(ax => ax.Name).ToList(), listaelementos.Select(ax => ax.Link).ToList());
                                lista.Adapter            = adapt;

                                new AlertDialog.Builder(this)
                                .SetTitle("Elementos de esta lista de reproducción")
                                .SetView(lista).SetPositiveButton("Entendido!", (dd, fgf) => { })
                                .Create()
                                .Show();
                            });
                        }
                    }
                    else
                    {
                        var elementos = inst.listasremotas[inst.playlistidx];
                        RunOnUiThread(() =>
                        {
                            ListView lista           = new ListView(this);
                            adapterlistaremoto adapt = new adapterlistaremoto(this, elementos.MediaElements.Select(ax => ax.Name).ToList(), elementos.MediaElements.Select(ax => ax.Link).ToList());
                            lista.Adapter            = adapt;
                            new AlertDialog.Builder(this)
                            .SetTitle("Elementos de esta lista de reproducción")
                            .SetView(lista).SetPositiveButton("Entendido!", (dd, fgf) => { })
                            .Create()
                            .Show();
                        });
                    }
                }).Start();
            };

            botonreproducir.Click += delegate {
                if (query == "Fromremote")
                {
                    if (inst.listaslocales.Count > 0)
                    {
                        var listilla  = new List <PlaylistElement>();
                        var texto     = File.ReadAllText(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/gr3playerplaylist/" + inst.listaslocales[inst.playlistidx].Name);
                        var nombreses = texto.Split('$')[0].Split(';').ToList();
                        var links     = texto.Split('$')[1].Split(';').ToList();

                        var listaelementos = new List <PlaylistElement>();
                        for (int i = 0; i < nombreses.Count; i++)
                        {
                            if (nombreses[i].Trim() != "" && links[i].Trim() != "")
                            {
                                var elemento = new PlaylistElement()
                                {
                                    Name = nombreses[i],
                                    Link = links[i]
                                };
                                listaelementos.Add(elemento);
                            }
                        }
                        inst.listaslocales[inst.playlistidx].MediaElements = listaelementos;
                        Mainmenu.gettearinstancia()
                        .clientelalistas
                        .Client
                        .Send(Encoding.UTF8.GetBytes(query + "__==__==__" + JsonConvert.SerializeObject(inst.listaslocales[inst.playlistidx])));
                    }
                    else
                    {
                        Toast.MakeText(this, "No hay listas de reproduccion", ToastLength.Long).Show();
                    }
                }
                else
                {
                    if (inst.listasremotas.Count > 0)
                    {
                        Mainmenu.gettearinstancia()
                        .clientelalistas
                        .Client
                        .Send(Encoding.UTF8.GetBytes(query + "__==__==__" + JsonConvert.SerializeObject(inst.listasremotas[inst.playlistidx])));
                    }
                    else
                    {
                        Toast.MakeText(this, "La lista esta vacia", ToastLength.Long).Show();
                    }
                }



                this.Finish();
            };



            // Create your application here
        }
示例#15
0
        public static void Next()
        {
            if (_AllFileNames.Count > 0)
            {
                if (_PreviousMusicIndex == _PreviousFileNames.Count - 1 || _PreviousFileNames.Count == 0) //We are not currently in the previous list
                {
                    Stop();
                    if (_NotPlayedFileNames.Count == 0)
                        _NotPlayedFileNames.AddRange(_AllFileNames);

                    _CurrentPlaylistElement = _NotPlayedFileNames[CGame.Rand.Next(_NotPlayedFileNames.Count)];
                    _NotPlayedFileNames.Remove(_CurrentPlaylistElement);

                    _PreviousFileNames.Add(_CurrentPlaylistElement);
                    _PreviousMusicIndex = _PreviousFileNames.Count - 1;
                }
                else if(_PreviousFileNames.Count > 0) //We are in the previous list
                {
                    Stop();
                    _PreviousMusicIndex++;

                    _CurrentPlaylistElement = _PreviousFileNames[_PreviousMusicIndex];
                }
                _CurrentMusicStream = CSound.Load(_CurrentPlaylistElement.MusicFilePath);
                CSound.SetStreamVolumeMax(_CurrentMusicStream, CConfig.BackgroundMusicVolume);

                //Seek to #Start-Tag, if found
                if (_CurrentPlaylistElement.Start != 0f)
                    CSound.SetPosition(_CurrentMusicStream, _CurrentPlaylistElement.Start);

                if (_VideoEnabled)
                    LoadVideo();
                CSound.SetStreamVolume(_CurrentMusicStream, 0f);
                Play();
            }
            else
                Stop();
        }
        public static Dictionary <string, PlaylistElement> AddToFavouriteList(Activity context, Dictionary <string, PlaylistElement> list, PlaylistElement elements)
        {
            if (list.ContainsKey(elements.Link))
            {
                list.Remove(elements.Link);
                context.RunOnUiThread(() => { Toast.MakeText(context, "Elemento eliminado de favoritos", ToastLength.Long).Show(); });
            }
            else
            {
                list.Add(elements.Link, elements);
                context.RunOnUiThread(() => { Toast.MakeText(context, "Elemento agregado a favoritos. Ahora aparecera en su pantalla de inicio", ToastLength.Long).Show(); });
            }
            var arch = File.CreateText(Constants.CachePath + "/favourites.json");

            arch.Write(JsonConvert.SerializeObject(list));
            arch.Close();
            return(list);
        }
示例#17
0
 private static bool IsBackgroundFile(PlaylistElement element)
 {
     foreach (PlaylistElement elements in _BGMusicFileNames)
     {
         if (elements.MusicFilePath == element.MusicFilePath)
             return true;
     }
     return false;
 }