/// <summary> /// Método que obtiene las canciones pertenecientes a las listas de reproducción del usuario /// </summary> /// <returns></returns> private async Task ObtenerCancionesDeListasReproduccion() { if (_listasReproduccion != null) { var ocurrioExcepcion = false; ListaReproduccionListView.Visibility = Visibility.Visible; foreach (var playlist in _listasReproduccion) { try { SinConexionGrid.Visibility = Visibility.Hidden; ListaReproduccionListView.Visibility = Visibility.Visible; AgregarPlaylistButton.Visibility = Visibility.Visible; playlist.canciones = await CancionClient.GetSongsFromPlaylist(playlist.id); ListaReproduccionListView.ItemsSource = null; ListaReproduccionListView.ItemsSource = _listasReproduccion; } catch (HttpRequestException) { SinConexionGrid.Visibility = Visibility.Visible; ListaReproduccionListView.Visibility = Visibility.Hidden; AgregarPlaylistButton.Visibility = Visibility.Hidden; break; } }
/// <summary> /// Método que recupera las canciones que pertenecen a una determinada ListaReproduccion /// </summary> /// <param name="idListaReproduccion">Identificador de lista de reproducción seleccionada</param> /// <returns></returns> private async Task ObtenerCancionesDeListasReproduccion(int idListaReproduccion) { var ocurrioExcepcion = false; try { SinConexionGrid.Visibility = Visibility.Hidden; CancionesListView.Visibility = Visibility.Visible; _listaReproduccion.canciones = await CancionClient.GetSongsFromPlaylist(idListaReproduccion); CancionesListView.ItemsSource = _listaReproduccion.canciones; } catch (HttpRequestException) { SinConexionGrid.Visibility = Visibility.Visible; CancionesListView.Visibility = Visibility.Hidden; } catch (Exception ex) { ocurrioExcepcion = true; new MensajeEmergente().MostrarMensajeError(ex.Message); } if (ocurrioExcepcion) { new MensajeEmergente().MostrarMensajeAdvertencia("No se pudieron recuperar algunas canciones"); } }
/// <summary> /// Manda a reproducir la radio de la cancion seleccionada /// </summary> /// <param name="sender">El objeto que invoco el eventp</param> /// <param name="e">El evento invocado</param> private async void OnClickEmpezarRadio(object sender, RoutedEventArgs e) { var idCancion = (int)((Button)sender).Tag; List <Cancion> radio; try { radio = await CancionClient.GetRadioFromSong(idCancion); SinConexionGrid.Visibility = Visibility.Hidden; AlbumsListView.Visibility = Visibility.Visible; Player.Player.GetPlayer().AñadirRadioAListaDeReproduccion(radio); } catch (HttpRequestException) { SinConexionGrid.Visibility = Visibility.Visible; AlbumsListView.Visibility = Visibility.Hidden; } catch (Exception ex) { if (ex.Message == "AuntenticacionFallida") { new MensajeEmergente().MostrarMensajeError("No se puede autentican con las credenciales " + "proporcionadas, se cerra la sesion"); MainWindow.OcultarMenu(); MainWindow.OcultarReproductor(); NavigationService?.Navigate(new IniciarSesion()); } else { new MensajeEmergente().MostrarMensajeError(ex.Message); } } }
private async void OnClickIniciarRadio(object sender, RoutedEventArgs e) { if (_cancionActual != null) { List <Cancion> radio; try { MostrarElementosSinConexion(); radio = await CancionClient.GetRadioFromSong(_cancionActual.id); Player.Player.GetPlayer().AñadirRadioAListaDeReproduccion(radio); } catch (HttpRequestException) { OcultarElementosSinConexion(); } catch (Exception ex) { if (ex.Message == "AuntenticacionFallida") { new MensajeEmergente().MostrarMensajeError("No se puede autentican con las credenciales " + "proporcionadas, se cerra la sesion"); OnClickCerrarSesion(null, null); PantallaFrame.Navigate(new IniciarSesion()); } else { new MensajeEmergente().MostrarMensajeError("Ocurrio un error y no se puede iniciar la radio"); } } } }
/// <summary> /// Registra la informacion de una cancion y sube la cancion al servidor /// </summary> private async void RegistrarNuevaCancion() { if (ValidarNombre() && ValidarGeneroSeleccionado() && ValidarCancionSeleccionada()) { DeshabilitarElementosPantalla(); var cancionARegistrar = CrearCancion(); try { _cancionRegistrada = await CancionClient.RegisterSong(_idAlbum, cancionARegistrar); try { var clienteCanciones = new SongsClient(); clienteCanciones.OnPorcentageUp += SubirPorcentajeAvanza; clienteCanciones.OnUploadTerminated += TerminarSubirCancion; await clienteCanciones.UploadSong(ArchivoSeleccionadoText.Text, _cancionRegistrada.id, false); } catch (RpcException) { new MensajeEmergente().MostrarMensajeError("No se pudo subir la cancion, la puede volver a " + "subir mas adelante"); Close(); } catch (Exception ex) { if (ex.Message == "AuntenticacionFallida") { new MensajeEmergente().MostrarMensajeError("No se pudo autenticar con el usuario con el " + "cual inicio sesión, se guardo la informacion de la " + "cancion pero no el archivo"); } else { new MensajeEmergente().MostrarMensajeError(ex.Message); } Close(); } } catch (HttpRequestException) { new MensajeEmergente().MostrarMensajeError("No se puede conectar al servidor, porfavor verifique " + "su conexión a internet"); } catch (Exception ex) { if (ex.Message == "AuntenticacionFallida") { new MensajeEmergente().MostrarMensajeError("No se pudo autenticar con el usuario con el " + "cual inicio sesión, no se ha guardado la canción"); Close(); } else { new MensajeEmergente().MostrarMensajeError(ex.Message); } } HabilitarElementosPantalla(); } }
/// <summary> /// Recupera los generos de la cancion y marca como seleccionadas los generos que tenga la cancion /// </summary> private async Task <List <Genero> > InicializarEstadoCheckBox(List <Genero> generos) { _cancionAEditar.generos = await CancionClient.GetGenerosFromCancion(_cancionAEditar.id, _idAlbum); foreach (var genero in _cancionAEditar.generos) { var index = generos?.FindIndex(g => g.id == genero.id); if (index != null) { generos[(int)index].seleccionado = true; _listaGeneros.Add(generos[(int)index]); } } return(generos); }
/// <summary> /// Busca las canciones que coincide con el texto introducido en el TextBox Buscar /// </summary> /// <param name="sender">El objeto que invoco el evento</param> /// <param name="e">El evento invocado</param> private async void BuscarCancionTextBox(object sender, KeyEventArgs e) { var cadenaBusqueda = buscarTextBox.Text; if (cadenaBusqueda != "") { try { _canciones = await CancionClient.SearchCanciones(cadenaBusqueda); CancionesListView.ItemsSource = _canciones; SinConexionGrid.Visibility = Visibility.Hidden; CancionesListView.Visibility = Visibility.Visible; ColocarImagenesCanciones(); } catch (HttpRequestException) { CancionesListView.Visibility = Visibility.Hidden; SinConexionGrid.Visibility = Visibility.Visible; } }