package com.example.smart119

import android.app.Activity
import android.content.Context
import android.text.SpannableStringBuilder
import android.util.TypedValue
import android.widget.TextView
import androidx.appcompat.app.AlertDialog

object AlertDialogUtil {
    // 기본 AlertDialog 생성 함수
    fun showAlert(
        context: Context,
        title: String,
        message: String,
        positiveText: String = "확인",
        negativeText: String = "취소",
        onPositiveClick: (() -> Unit)? = null,
        onNegativeClick: (() -> Unit)? = null
    ) {
        val builder = AlertDialog.Builder(context)
        builder.setTitle(title)
//        builder.setMessage(message)

        val messageTextView = TextView(context).apply {
            text = message
            setPadding(40, 40, 40, 0)
            textSize = 16f
            setLineSpacing(10f, 1.2f)  // 첫 번째 인자는 추가 간격(px), 두 번째 인자는 배수
        }
        builder.setView(messageTextView)

        // Positive 버튼 설정
        builder.setPositiveButton(positiveText) { dialog, _ ->
            onPositiveClick?.invoke() // Positive 버튼 클릭 동작
            dialog.dismiss()
        }

        // Negative 버튼 설정
        builder.setNegativeButton(negativeText) { dialog, _ ->
            onNegativeClick?.invoke() // Negative 버튼 클릭 동작
            dialog.dismiss()
        }

        // 팝업 표시
        val dialog = builder.create()
        dialog.show()
    }

    fun showAlert_OK(
        context: Context,
        title: String,
        message: String,
        positiveText: String = "확인",
        negativeText: String = "취소",
        onPositiveClick: (() -> Unit)? = null
//        onNegativeClick: (() -> Unit)? = null
    ) {
        val builder = AlertDialog.Builder(context)
        builder.setTitle(title)
//        builder.setMessage(message)

        val messageTextView = TextView(context).apply {
            text = message
            setPadding(40, 40, 40, 0)
            textSize = 16f
            setLineSpacing(10f, 1.2f)  // 첫 번째 인자는 추가 간격(px), 두 번째 인자는 배수
        }
        builder.setView(messageTextView)

        // Positive 버튼 설정
        builder.setPositiveButton(positiveText) { dialog, _ ->
            onPositiveClick?.invoke() // Positive 버튼 클릭 동작
            dialog.dismiss()
        }

        // Negative 버튼 설정
//        builder.setNegativeButton(negativeText) { dialog, _ ->
//            onNegativeClick?.invoke() // Negative 버튼 클릭 동작
//            dialog.dismiss()
//        }

        // 팝업 표시
        val dialog = builder.create()
        dialog.show()
    }

    fun showAlert_CUSTOM(
        context: Context,
        title: String,
        sppStr: SpannableStringBuilder,
        positiveText: String = "확인",
        negativeText: String = "취소",
        onPositiveClick: (() -> Unit)? = null,
        onNegativeClick: (() -> Unit)? = null
    ) {
        val builder = AlertDialog.Builder(context)
        builder.setTitle(title)
        /*
        val spannableMessage = SpannableStringBuilder().apply {
            val boldText = "확인"
            append(boldText)
            setSpan(StyleSpan(Typeface.BOLD), 0, boldText.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
            append(" 선택시 환자정보가 전송됩니다.")
        }
        */

        val textView = TextView(context).apply {
            text = sppStr
            setTextSize(TypedValue.COMPLEX_UNIT_SP, 16f)
            setLineSpacing(12f, 1.3f)  // 줄간 간격 조절 (추가간격 px, 배수)
            setPadding(40, 40, 40, 0)  // 내부 여백도 함께 설정
        }

//        builder.setMessage(sppStr)
        builder.setView(textView)

        // Positive 버튼 설정
        builder.setPositiveButton(positiveText) { dialog, _ ->
            onPositiveClick?.invoke() // Positive 버튼 클릭 동작
            dialog.dismiss()
        }

        // Negative 버튼 설정
        builder.setNegativeButton(negativeText) { dialog, _ ->
            onNegativeClick?.invoke() // Negative 버튼 클릭 동작
            dialog.dismiss()
        }

        // 팝업 표시
        val dialog = builder.create()
        dialog.show()
    }

    fun getActivityContext(): Activity? {
        return GlobalActivityTracker.currentActivity
    }
}