#!/usr/bin/env bash
#
# Skripti, joka automatisoi toistuvaa Ctrl+P → navigointi → valinta -toimintoa

set -u    # estää määrittelemättömien muuttujien käytön

# ==================
#  Asetukset / viiveet
# ==================

ALOITUSVIIVE=5           # sekuntia ennen ohjelman aloittamista

TABULAATTORIPAINALLUKSET_SIVU_1=6       # alkukierroksella / ensimmäisellä kerralla (Firefox=6, Chromiumissa joskus 5)
TABULAATTORIPAINALLUKSET_LOPPUSIVUT=2   # pääsilmukan jokaisella kierroksella
TABULAATTORIVIIVE=0.25            # pieni viive tabulaattori painallusten välissä

ESIKATSELUVIIVE=10         # kauanko odotetaan Ctrl+P jälkeen (valikko aukeaa)
TULOSTUSIKKUNAVIIVE=10       # odotusviive tulostusikkunan avauduttua

VIIVE_ENNEN_ESC_NAPPAINTA=3         # viive ennen esc-näppäimiä SIVUN tallennuksen jälkeen
KIERROSTEN_VALINEN_VIIVE=2  # ylimääräinen viive kierrosten väliin, että uusi sivu kerkeää latautumaan

KIERROKSET=40                 # montako kertaa toistetaan

# ==================
#  Ensimmäinen sivu / ensimmäinen tulostus vaatii enemmän tabulaattoripainalluksia.
# ==================

echo "Alustava suoritus (kierros 0/aloitus)..."

sleep "$ALOITUSVIIVE"

xdotool key ctrl+p
sleep "$ESIKATSELUVIIVE"

# Navigoidaan tulosta nappulaan (määrä voi vaihdella selaimesta riippuen)
echo "   → Painetaan Tab ${TABULAATTORIPAINALLUKSET_SIVU_1} kertaa..."
for ((i=1; i<=TABULAATTORIPAINALLUKSET_SIVU_1; i++)); do
    xdotool key Tab
    sleep "$TABULAATTORIVIIVE"
done

xdotool key Return
sleep "$TULOSTUSIKKUNAVIIVE"

xdotool key Return
sleep 3

xdotool key Return
sleep 4

# Suljetaan mahdolliset avoimet valikot/ikkunat
for ((i=1; i<=4; i++)); do
    xdotool key 0xff1b
    sleep 0.2
done

# Seuraava sivu. Nuoli oikealle	
xdotool key Right       
sleep 2

# ==================
#  Pääsilmukka
# ==================

echo "Aloitetaan $KIERROKSET kierrosta..."

for ((round=1; round<=KIERROKSET; round++)); do
    printf "Kierros %2d / %d\n" "$round" "$KIERROKSET"

    # Ctrl+P → avaa esikatseluvalikko
    xdotool key ctrl+p
    sleep "$ESIKATSELUVIIVE"

    echo "   → Painetaan Tab ${TABULAATTORIPAINALLUKSET_LOPPUSIVUT} kertaa..."
    for ((i=1; i<=TABULAATTORIPAINALLUKSET_LOPPUSIVUT; i++)); do
        xdotool key Tab
        sleep "$TABULAATTORIVIIVE"
    done

    # Valitaan eka ehdotus
    xdotool key Return
    sleep "$TULOSTUSIKKUNAVIIVE"

    # Seuraavat enterit
    xdotool key Return
    sleep 3

    xdotool key Return
    sleep 4

    # Esc neljä kertaa. Sulkee esikatseluikkunan ja mahdolliset häiriöt, estää myös viimeisen sivun tallentamisen yhä uudestaan.
    for ((i=1; i<=4; i++)); do
        xdotool key 0xff1b
        sleep 0.2
    done
    # Seuraava sivu. Nuoli oikealle	
    xdotool key Right 
    sleep 0.3

    # Varmuuden vuoksi pieni hengähdystauko kierrosten väliin
    sleep "$KIERROSTEN_VALINEN_VIIVE"
done

echo "Valmis! Tehtiin $KIERROKSET kierrosta."

