package es.upvmaster.fullmediaplayer;

import android.content.Context;
import android.os.Environment;

import java.io.File;
import java.util.Vector;

/**
 * Created by crpor on 06/08/2016.
 */
public class InfoGlobal {
    private static InfoGlobal INSTANCIA = new InfoGlobal();
    private static boolean iniciada = false;

    private Context contextoAplicacion;

    private Vector<ListaMedios> vectorListaListas;
    private AdaptadorListas adaptadorListaListas;
    private AdaptadorMedios adaptadorMedios;

    private File directorio;

    private InfoGlobal() {};
    public static InfoGlobal getINSTANCIA() {
        return INSTANCIA;
    }

    public void inicializa(Context contextoAplicacion) {
        if (!iniciada) {
            this.contextoAplicacion = contextoAplicacion;
            vectorListaListas = new Vector<ListaMedios>();
            adaptadorListaListas = new AdaptadorListas(this.contextoAplicacion, this.vectorListaListas);
            adaptadorMedios = new AdaptadorMedios(this.contextoAplicacion, null);
            directorio = obtenerRuta();
            iniciada = true;
        }
    }

    public Context getContextoAplicacion() { return this.contextoAplicacion; }

    public AdaptadorListas getAdaptadorListaListas() {
        return this.adaptadorListaListas;
    }

    public Vector<ListaMedios> getVectorListaListas() {
        return this.vectorListaListas;
    }

    public AdaptadorMedios getAdaptadorMedio() {
        return this.adaptadorMedios;
    }

    public File getDirectorio() {
        return this.directorio;
    }

    public void agregarMedios(Vector<Medio> vectorMedios) {
        adaptadorMedios.vectorMedios = vectorMedios;
        adaptadorMedios.notifyDataSetChanged();
    }

    public boolean eliminarListaMedios(int indice,boolean actualizar) {
        File file = new File(directorio.getAbsolutePath() + File.separator + vectorListaListas.get(indice).getNameFile());
        boolean borrado = file.delete();
        if (borrado) {
            this.vectorListaListas.removeElementAt(indice);
            if (actualizar) adaptadorMedios.notifyDataSetChanged();
        }
        return borrado;
    }

    public Vector<Medio> getVectorMedios() {
        return adaptadorMedios.vectorMedios;
    }

    private File obtenerRuta() {
        String rutaInterna = contextoAplicacion.getFilesDir().getAbsolutePath();
        String rutaExterna = Environment.getExternalStorageDirectory().toString() + File.separator + getContextoAplicacion().getString(R.string.app_name);
        File directorio = new File(rutaExterna);
        if (!directorio.exists())
            if (!directorio.mkdir())
                directorio = new File(rutaInterna);
        return directorio;
    }
}
