/**
 * Trieda DigitalneHodiny reprezentuje displej digitalnych hodin
 * v europskom 24-hodinovom formate. Na displeji zobrazuje hodiny
 * a minuty.
 * 
 * Rozsah hodin je od 00:00 do 23:59.
 * 
 * Stav hodin sa meni o minutu zakazdym po prijati spravy "tik".
 */
public class DigitalneHodiny
{
    private CiselnyDisplej aHodiny;
    private CiselnyDisplej aMinuty;
    private CiselnyDisplej aSekundy;
    private CiselnyDisplej aDen;

    /**
     * Vytvori nove digitalne hodiny. Cas bude vzdy 00:00.
     */
    public DigitalneHodiny()
    {
        aDen = new CiselnyDisplej (6);
        aHodiny = new CiselnyDisplej(23);
        aMinuty = new CiselnyDisplej(59);
        aSekundy = new CiselnyDisplej(59);       
    }

    /**
     * Aby spravne fungoval, objekt musi spravu "tik" prijimat
     * kazdu minutu. Reakcia na nu je zvysenie casu o jednu minutu.
     */
    public void tik()
    {
        aSekundy.krok();

        if (aSekundy.dajHodnotu()== 0) {
            aMinuty.krok();   

            if (aMinuty.dajHodnotu() == 0) {
                aHodiny.krok();
                
                if (aHodiny.dajHodnotu()==0) {
                aDen.krok();
            }
            }}

    }

    /**
     * Nastavi aktualny cas na specifikovane hodiny a minuty.
     */
    public void nastavCas(int paDen, int paHodiny, int paMinuty, int paSekundy)
    {
        aDen.nastavHodnotu (paDen);
        aHodiny.nastavHodnotu(paHodiny);
        aMinuty.nastavHodnotu(paMinuty);
        aSekundy.nastavHodnotu(paSekundy);
    }

    /**
     * Vrati aktualny cas vo formate HH:MM.
     */
    public String dajCas()
    {
        return aDen.dajRetazcovuHodnotu() + " " + aHodiny.dajRetazcovuHodnotu() + ":" + aMinuty.dajRetazcovuHodnotu() + ":" + aSekundy.dajRetazcovuHodnotu();
    }

    /**
     * Vrati aktualnu hodnotu Dna.
     */
    public int dajDen()
    {
        return aDen.dajHodnotu();
    }
    
    /**
     * Vrati aktualnu hodnotu hodin.
     */
    public int dajHodiny()
    {
        return aHodiny.dajHodnotu();
    }

    /**
     * Vrati aktualnu hodnotu minut.
     */
    public int dajMinuty()
    {
        return aMinuty.dajHodnotu();
    }

    /**
     * Vrati aktualnu hodnotu sekund
     */
    public int dajSekundy()
    {
        return aSekundy.dajHodnotu();
    }

}
