package com.example.galeria_xml


import android.graphics.Color
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.widget.Button
import android.widget.EditText
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.Switch
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat

class MainActivity : AppCompatActivity() {

    private var currentImageIndex = 0 // Indeks bieżącego obrazka
    private val images = arrayOf(R.drawable.kwiatek1, R.drawable.kwiatek2, R.drawable.kwiatek3, R.drawable.kwiatek4) // Tablica obrazków


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_main)
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }

        // można to pominąć właczając View Binding w pliku build.gradle!
        // kiedy View Binding jest włączone, Android automatycznie generuje klasę związane z layoutem
        val btnPrev: Button = findViewById(R.id.button)
        val btnNext: Button = findViewById(R.id.button2)
        val imgView: ImageView = findViewById(R.id.imageView)
        val edText: EditText = findViewById(R.id.editTextText)
        val switchBg: Switch = findViewById(R.id.switch1)
        val lineLayoutMain: LinearLayout = findViewById(R.id.main)


        // zmiana koloru tła (tylko tak działa)
        btnNext.setBackgroundColor(Color.parseColor("#FF004C40"))
        btnPrev.setBackgroundColor(Color.parseColor("#FF004C40"))

        // przycisk wprzód
        btnPrev.setOnClickListener {
            //println("Przycisk prev został kliknięty!")
            currentImageIndex = (currentImageIndex - 1)
            if(currentImageIndex < 0){
                currentImageIndex = 3
            }
            imgView.setImageResource(images[currentImageIndex]) // Ustaw nowy obrazek
        }

        // przycisk w tył
        btnNext.setOnClickListener {
            //println("Przycisk next został kliknięty!")
            // Zwiększ indeks i zrób cykl
            currentImageIndex = (currentImageIndex + 1) % images.size
            imgView.setImageResource(images[currentImageIndex]) // Ustaw nowy obrazek
        }

        // TextWatcher to interface z trzema metodam. które należy zaimplementować:
        // # beforeTextChanged
        // # afterTextChanged
        // # onTextChanged
        // https://developer.android.com/reference/android/text/TextWatcher.html
        // Dodajemy TextWatcher do EditText
        edText.addTextChangedListener(object : TextWatcher {
            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
                // Nie robimy nic
                //TODO("Not yet implemented")
            }

            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
                // Sprawdzamy, czy wprowadzone dane są liczbą
                val input = s.toString()
                if (input.isNotEmpty()) {
                    val index = input.toInt() - 1 // Przesunięcie o 1 dla indeksu tablicy
                    if (index in images.indices) {  // sprawdzenie czy podana liczba jest w zakresie tablicy
                        imgView.setImageResource(images[index])  // zmiana zdjęcia
                        currentImageIndex = index
                    }
                }
            }

            override fun afterTextChanged(s: Editable?) {
                //TODO("Not yet implemented")
            }
        })

        // Ustawienie nasłuchiwania na zmiany stanu przełącznika
        // podkreślenie ignoruje pierwszy parametr - referencja do switcha
        switchBg.setOnCheckedChangeListener { _, isChecked ->
            if (isChecked) {
                // Zmieniamy tło na niebieskie, gdy przełącznik jest włączony
                lineLayoutMain.setBackgroundColor(Color.parseColor("#FF1565C0"))
            } else {
                // Zmieniamy tło na zielone, gdy przełącznik jest wyłączony
                lineLayoutMain.setBackgroundColor(Color.parseColor("#00796B"))
            }
        }

    }
}