/* 
* Copyright 2016 Agencia Estatal de Administración Tibutaria
*
* Licencia con arreglo a la EUPL, Versión 1.1 o –en cuanto
* sean aprobadas por la Comisión Europea– versiones
* posteriores de la EUPL (la «Licencia»);
* Solo podrá usarse esta obra si se respeta la Licencia.
* Puede obtenerse una copia de la Licencia en:
*  
* https://joinup.ec.europa.eu/software/page/eupl
*  
* Salvo cuando lo exija la legislación aplicable o se acuerde
* por escrito, el programa distribuido con arreglo a la
* Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES
* DE NINGÚN TIPO, ni expresasni implícitas.
*
* Véase la Licencia en el idioma concreto que rige los permisos y 
* limitaciones que establece la Licencia.
 */
package monitor;

import java.awt.*;
import monitor.utiles.*;

public class Configuracion extends ConfiguracionBase {

    private static final String nombreFichero = "ConfiguracionMonitor.ini";
    private static Configuracion _yo = null;

    public static Configuracion instanciaUnica() {
        if (_yo == null) {
            _yo = new Configuracion();
        }
        return _yo;
    }
    public String ipServidor;
    public int ipPort;
    public String ipServidorSec;
    public int ipPortSec;
    public String nombreServidor;
    public boolean usandoUDP = false;
    public boolean vozActivada = false;
    public boolean sonidoActivado = false;
    long segundosPanel = 4;
    public long milisegPanel = 6000;
    public String[] salasValidas;
    float altoTipo;
    public boolean asesores = false;
    public boolean enVentana = false;
    public boolean ocultarHora = false;
    public String nombreMonitor;
    public boolean mostrarSalaAtencion = true;
    public boolean mostrarColumnaSalaAtencion = true;
    public boolean mostrarTiquesEnTransito = true;
    public boolean mostrarTiquesEnTransitoUnaVez = false;
    public boolean alternarTiquesYCarteles = false;

    public Color colorBanda1 = new Color(0, 0, 175);
    public Color colorBanda2 = new Color(220, 220, 220);
    public Color colorBanda3 = new Color(220, 220, 220);
    public Color colorBanda4 = new Color(0, 0, 175);
    public Color colorTicket = new Color(0, 0, 0);
    public Color colorMesa = new Color(0, 0, 175);
    public Color colorSala = new Color(255, 0, 0);
    public Color colorHora = new Color(0, 0, 0);
    public boolean mostrarAnteriores = true;
    public int numFilas = 6;
    public int pausaEntreIdiomas = 0;
    public static String ficheroEjecucion = "javaw -jar monitor.jar";

    public String rutaRecursos = "recursos";
    public boolean mostrarInmediato = true;

    public Color colorFondoBanner = Color.lightGray;
    public Color colorTextoBanner = Color.red;
    public String fuenteBanner = "Arial";
    public int porcentajeBanner = 8;
    public float proporcionFuenteBanner = 0.9f;
    public int estiloFuenteBanner = 3;

    private Configuracion() {
        super();
    }

    public boolean cargar() {
        super.cargar(nombreFichero);
        nombreServidor = valor("nombreServidor", "");
        if (!nombreServidor.equals("")) {
            usandoUDP = true;
        }
        ipServidor = valor("IpServidor", "");
        ipPort = valor("IpPort", 5000);
        ipServidorSec = valor("IpServidorSec", "");
        if (ipServidorSec.equals("")) {
            ipServidorSec = ipServidor;
        }
        ipPortSec = valor("IpPortSec", 0);
        if (ipPortSec == 0) {
            ipPortSec = ipPort;
        }
        vozActivada = valor("reproducirVoz", false);
        sonidoActivado = valor("reproducirSonido", false);
        segundosPanel = valor("segundosPanel", segundosPanel);
        if (segundosPanel < 4) {
            segundosPanel = 4;
        }
        milisegPanel = segundosPanel * 1000;
        String listaSalasValidas = valor("salasValidas", "");
        if (listaSalasValidas.length() > 0) {
            salasValidas = Global.split(listaSalasValidas.toUpperCase(), ',');
        }
        altoTipo = (float) valor("altoTipo", 110.0);
        asesores = valor("asesores", false);
        enVentana = valor("enVentana", false);
        ocultarHora = valor("OcultarHora", false);
        nombreMonitor = valor("nombre", "Sin especificar");
        mostrarSalaAtencion = valor("mostrarSalaAtencion", true);
        mostrarColumnaSalaAtencion = valor("MostrarColumnaSalaAtencion", mostrarColumnaSalaAtencion);
        colorBanda1 = valorColor("colorBanda1", colorBanda1);
        colorBanda2 = valorColor("colorBanda2", colorBanda2);
        colorBanda3 = valorColor("colorBanda3", colorBanda2);
        colorBanda4 = valorColor("colorBanda4", colorBanda1);
        colorTicket = valorColor("colorTicket", colorTicket);
        colorMesa = valorColor("colorMesa", colorMesa);
        colorSala = valorColor("colorSala", colorSala);
        colorHora = valorColor("colorHora", colorHora);
        mostrarAnteriores = valor("MostrarTicketsAnteriores", mostrarAnteriores);
        pausaEntreIdiomas = valor("PausaEntreIdiomas", pausaEntreIdiomas);
        ficheroEjecucion = valor("FicheroEjecucion", ficheroEjecucion);
        mostrarTiquesEnTransito = valor("MostrarTiquesEnTransito", mostrarTiquesEnTransito);
        mostrarTiquesEnTransitoUnaVez = valor("mostrarTiquesEnTransitoUnaVez", mostrarTiquesEnTransitoUnaVez);
        alternarTiquesYCarteles = valor("AlternarTiquesYCarteles", alternarTiquesYCarteles);
        rutaRecursos = valor("RutaRecursos", rutaRecursos);
        mostrarInmediato = valor("mostrarInmediato", true);
        numFilas = valor("numFilas", 6);

        colorFondoBanner = valorColor("ColorFondoBanner", colorFondoBanner);
        colorTextoBanner = valorColor("ColorTextoBanner", colorTextoBanner);
        fuenteBanner = valor("NombreFuenteBanner", fuenteBanner);
        porcentajeBanner = valor("PorcentajePantallaBanner", porcentajeBanner);
        proporcionFuenteBanner = valor("ProporcionFuenteBanner", proporcionFuenteBanner);
        estiloFuenteBanner = valor("EstiloFuenteBanner", estiloFuenteBanner);

        return true;
    }

    @Override
    public boolean guardar() {
        float tipoGuardado = valor("altoTipo", 0f);
        if (altoTipo != tipoGuardado) {
            ponValor("altoTipo", String.valueOf(altoTipo));
            return super.guardar();
        }
        return true;
    }
}
