package com.example.apk_deteksi_kualitas_telur.Ui.Activity

import android.content.Intent
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.Typeface
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.text.SpannableString
import android.text.Spanned
import android.text.style.ForegroundColorSpan
import android.text.style.StyleSpan
import android.text.style.UnderlineSpan
import androidx.core.content.ContextCompat
import androidx.core.text.HtmlCompat
import com.example.apk_deteksi_kualitas_telur.MainActivity
import com.example.apk_deteksi_kualitas_telur.R
import com.example.apk_deteksi_kualitas_telur.databinding.ActivityKualitasTelurSedangBinding

class KualitasTelurSedangActivity : AppCompatActivity() {
    private lateinit var binding: ActivityKualitasTelurSedangBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityKualitasTelurSedangBinding.inflate(layoutInflater)
        binding.imgBack.setOnClickListener {
            val intent = Intent(this, MainActivity::class.java)
            startActivity(intent)
            finish()
        }
        selectQualityTelurImgSedang()
        expandedTextViewTelurSedang()
        setContentView(binding.root)
    }

    //pilih gambar dan akan menampilkan pada CardView
    private fun selectQualityTelurImgSedang() {
        binding.imgItem1.setOnClickListener {
            binding.imgViewShow.setImageBitmap(getSampleImage(R.drawable.sedang01))
        }
        binding.imgItem2.setOnClickListener {
            binding.imgViewShow.setImageBitmap(getSampleImage(R.drawable.sedang02))
        }
        binding.imgItem3.setOnClickListener {
            binding.imgViewShow.setImageBitmap(getSampleImage(R.drawable.sedang03))
        }
        binding.imgItem4.setOnClickListener {
            binding.imgViewShow.setImageBitmap(getSampleImage(R.drawable.sedang04))
        }
    }

    //tampilkan sedikit dan banyak pada text view ketika di klik
    private fun expandedTextViewTelurSedang() {
        var isExpanded = false
        val penjelasanTelurSedang = getString(R.string.penjelasan_telur_sedang)
        val tampilkanLebihBanyak = getString(R.string.tamplkan_semua)
        val fullText = textStyleOutputPenjelasan(penjelasanTelurSedang, tampilkanLebihBanyak)
        binding.tvPenjelasanTelurSedang.text = fullText

        binding.tvPenjelasanTelurSedang.setOnClickListener {
            isExpanded = !isExpanded
            if (isExpanded) {
                val penjelasanTelurSedangFull = getString(R.string.penjelasan_telur_sedang_full)
                val tampilkanSedikit = getString(R.string.tampilkan_sedikit)
                val fullText =
                    textStyleOutputPenjelasan(penjelasanTelurSedangFull, tampilkanSedikit)
                binding.tvPenjelasanTelurSedang.text = fullText
                binding.tvPenjelasanTelurSedang.maxLines = 10000
            } else {
                val penjelasanTelurSedang = getString(R.string.penjelasan_telur_sedang)
                val tampilkanLebihBanyak = getString(R.string.tamplkan_semua)
                val fullText =
                    textStyleOutputPenjelasan(penjelasanTelurSedang, tampilkanLebihBanyak)
                binding.tvPenjelasanTelurSedang.text = fullText
                binding.tvPenjelasanTelurSedang.maxLines = 3
            }
        }
    }

    private fun textStyleOutputPenjelasan(textAwal: String, textAkhir: String): SpannableString {
        val spannableString = SpannableString("$textAwal$textAkhir")

        val startIndex = spannableString.indexOf(textAkhir)
        val colorSpan = ContextCompat.getColor(this, R.color.coklatTelur)

        val boldSpan = StyleSpan(Typeface.BOLD)
        val underlineSpan = UnderlineSpan()

        if (startIndex != -1) {
            val endIndex = startIndex + textAkhir.length
            //memberi garis bawah
            spannableString.setSpan(
                underlineSpan, startIndex, endIndex, Spanned.SPAN_INCLUSIVE_INCLUSIVE
            )

            //memberi warna akhir color text
            spannableString.setSpan(
                ForegroundColorSpan(colorSpan),
                startIndex,
                endIndex,
                Spanned.SPAN_INCLUSIVE_INCLUSIVE
            )

            //memberi warna akhir color text
            spannableString.setSpan(
                boldSpan, startIndex, endIndex, Spanned.SPAN_INCLUSIVE_INCLUSIVE
            )
        }
        return spannableString
    }

    private fun getSampleImage(drawable: Int): Bitmap {
        return BitmapFactory.decodeResource(resources, drawable, BitmapFactory.Options().apply {
            inMutable = true
        })
    }
}