package com.daodaoshi.chick_mood

import android.os.Bundle
import android.util.Log
import android.animation.Animator
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isVisible
import com.daodaoshi.chick_mood.databinding.ActivityMainBinding
import com.chick_mood.data.database.DatabaseTestHelper
import com.chick_mood.ui.emotion.EmotionSelectorDialog
import com.chick_mood.data.model.Emotion
import java.text.SimpleDateFormat
import java.util.*

/**
 * 简化的首页Activity - 主要用于展示历史心情记录和创建新记录的入口
 *
 * 这个版本专注于验证基础功能，后续会逐步添加完整功能
 *
 * @author Claude
 * @date 2025-10-22
 */
class MainActivitySimple : AppCompatActivity() {

    companion object {
        private const val TAG = "MainActivity"
        @JvmStatic
        lateinit var instance: MainActivitySimple
            private set
    }

    private lateinit var binding: ActivityMainBinding
    private lateinit var timeFormatter: SimpleDateFormat

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        instance = this

        // 初始化ViewBinding
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        // 初始化时间格式化器
        timeFormatter = SimpleDateFormat("yyyy.MM.dd E HH:mm", Locale.getDefault())

        // 初始化UI组件
        initViews()

        // TODO: 设置初始时间显示（当前时间）- 暂时注释掉
        // updateTimeIndicator(System.currentTimeMillis())

        // 运行数据库测试
        runDatabaseTest()

        // 显示空白状态（默认状态）
        showEmptyStateUI()
    }

    /**
     * 初始化UI组件和事件监听器
     */
    private fun initViews() {
        // 设置Toolbar
        setSupportActionBar(binding.toolbar)
        supportActionBar?.apply {
            title = "别摇小鸡"
            setDisplayHomeAsUpEnabled(false)
            setDisplayShowHomeEnabled(false)
        }

        // 设置点击监听器
        binding.fabAddMood.setOnClickListener {
            // 显示情绪选择对话框
            showEmotionSelector()
        }

        // 设置空白状态区域的点击事件
        binding.llEmptyState.setOnClickListener {
            // 播放点击动画效果（暂时用Toast代替）
            showTemporaryMessage("小鸡被点击了！")
        }

        // 设置小鸡动画
        setupChickAnimation()
    }

    /**
     * 设置小鸡动画
     */
    private fun setupChickAnimation() {
        // 暂时跳过动画设置，因为当前布局使用静态ImageView
        // 等后续实现Lottie动画时再完善
    }

    /**
     * 播放点击动画
     */
    private fun playClickAnimation() {
        // 暂时跳过动画实现，后续添加Lottie动画时完善
        // 可以在这里添加简单的缩放动画等效果
    }

    /**
     * 显示情绪选择对话框
     */
    private fun showEmotionSelector() {
        val emotionDialog = EmotionSelectorDialog.create(this) { selectedEmotion ->
            // 处理情绪选择结果
            onEmotionSelected(selectedEmotion)
        }
        emotionDialog.show()
    }

    /**
     * 处理情绪选择结果
     */
    private fun onEmotionSelected(emotion: Emotion) {
        val emotionName = when (emotion) {
            Emotion.HAPPY -> "开心"
            Emotion.SAD -> "悲伤"
            Emotion.ANGRY -> "生气"
            Emotion.WORRIED -> "烦恼"
            Emotion.LONELY -> "孤单"
            Emotion.SCARED -> "害怕"
        }

        showTemporaryMessage("你选择了：$emotionName")

        // TODO: 后续可以在这里跳转到摇晃页面或其他处理
        Log.d(TAG, "用户选择了情绪：$emotionName")
    }

    /**
     * 更新时间指示器
     */
    private fun updateTimeIndicator(timestamp: Long) {
        // TODO: 实现时间更新功能 - 暂时注释掉
        // val formattedTime = timeFormatter.format(Date(timestamp))
        // binding.tvTimeIndicator.text = formattedTime
    }

    /**
     * 显示空白状态UI
     */
    private fun showEmptyStateUI() {
        binding.llEmptyState.isVisible = true
        // TODO: 其他视图状态设置 - 暂时注释掉
        // binding.vpHistoryRecords.isVisible = false
        // binding.tvTimeIndicator.isVisible = false
    }

    /**
     * 显示内容状态UI
     */
    private fun showContentStateUI() {
        binding.llEmptyState.isVisible = false
        // TODO: 其他视图状态设置 - 暂时注释掉
        // binding.vpHistoryRecords.isVisible = true
        // binding.tvTimeIndicator.isVisible = true

        // TODO: 设置ViewPager2数据
        // binding.vpHistoryRecords.adapter = null
    }

    /**
     * 显示临时消息
     */
    private fun showTemporaryMessage(message: String) {
        android.widget.Toast.makeText(this, message, android.widget.Toast.LENGTH_SHORT).show()
    }

    /**
     * 运行数据库测试
     */
    private fun runDatabaseTest() {
        try {
            Log.d("MainActivity", "开始运行数据库测试...")
            DatabaseTestHelper.runDatabaseTests(this)
        } catch (e: Exception) {
            Log.e("MainActivity", "数据库测试运行失败", e)
        }
    }

    /**
     * 获取当前页面状态 - 用于测试
     * @return true表示显示空状态，false表示显示历史记录
     */
    fun isShowingEmptyState(): Boolean {
        return binding.llEmptyState.isVisible
    }

    override fun onResume() {
        super.onResume()
        // TODO: 每次进入页面时更新时间 - 暂时注释掉
        // updateTimeIndicator(System.currentTimeMillis())
    }

    override fun onDestroy() {
        super.onDestroy()
        // TODO: 清理资源 - 暂时注释掉
        // binding.chickAnimationView.cancelAnimation()
    }
}