/// <summary> /// Se encarga de almacenar la cancion cuando ya se termino de descargar y de agregarla a la lista de canciones /// descargadas /// </summary> private void TerminarDeRecibirCancion() { _songsClient.OnInitialRecivedSong -= RecibirCancion; _songsClient.OnSongChunkRived -= RecibirChunk; _songsClient.OnTerminatedRecivedSong -= TerminarDeRecibirCancion; _estadoManjadorDeCanciones = EstadoManjadorDeCanciones.Guardando; var usuarioActual = ManejadorDeUsuariosLogeados.GetManejadorDeUsuariosLogeados().ObtenerUsuarioLogeado(); var ruta = CrearRutaParaGuardarCancion(usuarioActual.nombre_usuario, _seEncuentraDescargando.id, _extensionCancion); var seGuardo = GuardarCancion(_bufferCancion, ruta); _bufferCancion.Dispose(); if (seGuardo) { _seEncuentraDescargando.ruta_cancion = ruta; _seEncuentraDescargando.estado_descarga = CancionSinConexion.EstadoDescarga.Descargado; usuarioActual.canciones_sin_conexion.Add(_seEncuentraDescargando); } else { _colaCancionesSinConexion.Enqueue(_seEncuentraDescargando); _seEncuentraDescargando.estado_descarga = CancionSinConexion.EstadoDescarga.Error; } _seEncuentraDescargando = null; ActualizarCancionesPendientesDeUsuario(); IniciarDescarga(); }
/// <summary> /// Empieza a descargar la cancion con el id indicado /// </summary> /// <param name="idCancion">El id de la cancion a descargar</param> private void EmpezarADescargarCancion(int idCancion) { _songsClient.OnInitialRecivedSong += RecibirCancion; _songsClient.OnSongChunkRived += RecibirChunk; _songsClient.OnTerminatedRecivedSong += TerminarDeRecibirCancion; _songsClient.OnErrorRaised += ManejarError; _songsClient.GetSong(idCancion, Calidad.Alta, false); _estadoManjadorDeCanciones = EstadoManjadorDeCanciones.Descargando; ActualizarCancionesPendientesDeUsuario(); }
/// <summary> /// Coloca la siguiente cancion en la cola a descargar /// </summary> protected void IniciarDescarga() { if (_colaCancionesSinConexion.Count > 0 && _seEncuentraDescargando == null) { _seEncuentraDescargando = _colaCancionesSinConexion.Dequeue(); _seEncuentraDescargando.estado_descarga = CancionSinConexion.EstadoDescarga.Descargando; EmpezarADescargarCancion(_seEncuentraDescargando.id); } else { _estadoManjadorDeCanciones = EstadoManjadorDeCanciones.Detenido; } ActualizarCancionesPendientesDeUsuario(); }
/// <summary> /// Coloca todas las canciones pendientes de descarga o descargando en la lista de canciones pendientes del usuario /// </summary> public void TerminarDeDescargarCanciones() { var usuario = ManejadorDeUsuariosLogeados.GetManejadorDeUsuariosLogeados().ObtenerUsuarioLogeado(); if (usuario != null) { if (_seEncuentraDescargando != null) { _colaCancionesSinConexion.Enqueue(_seEncuentraDescargando); } usuario.canciones_pendientes_descarga = _colaCancionesSinConexion.ToList(); if (_songsClient != null) { _songsClient.OnInitialRecivedSong -= RecibirCancion; _songsClient.OnSongChunkRived -= RecibirChunk; _songsClient.OnTerminatedRecivedSong -= TerminarDeRecibirCancion; _songsClient = new SongsClient(); } _extensionCancion = ""; _estadoManjadorDeCanciones = EstadoManjadorDeCanciones.Detenido; _colaCancionesSinConexion.Clear(); _seEncuentraDescargando = null; } }