package com.daodaoshi.chick_mood

import android.os.Bundle
import android.util.Log
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 java.text.SimpleDateFormat
import java.util.*

/**
 * 首页Activity - 主要用于展示历史心情记录和创建新记录的入口
 *
 * 功能：
 * 1. 展示历史心情记录列表（ViewPager2横向滑动）
 * 2. 提供添加新心情记录的入口
 * 3. 时间指示器显示当前浏览记录的时间
 * 4. 顶部导航栏（更多功能、统计页面）
 *
 * @author Claude
 * @date 2025-10-22
 */
class MainActivity : AppCompatActivity() {

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

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

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

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

        // 初始化UI组件
        initViews()

        // 设置初始时间显示（当前时间）
        updateTimeIndicator(System.currentTimeMillis())

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

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

        // 设置点击事件监听器
        setupClickListeners()

        // 初始化历史记录展示
        initHistoryDisplay()
    }

    /**
     * 设置点击事件监听器
     */
    private fun setupClickListeners() {
        // 更多按钮点击事件
        binding.btnMore.setOnClickListener {
            // TODO: 弹出侧边抽屉菜单
            showMoreOptions()
        }

        // 统计按钮点击事件
        binding.btnStatistics.setOnClickListener {
            // TODO: 跳转到统计页面
            navigateToStatistics()
        }

        // 添加心情按钮点击事件
        binding.fabAddMood.setOnClickListener {
            // TODO: 弹出情绪选择框
            showEmotionSelector()
        }
    }

    /**
     * 初始化历史记录展示
     */
    private fun initHistoryDisplay() {
        // TODO: 在模块2.3中实现ViewPager2的设置
        // 目前显示空状态作为占位
        showEmptyState()
    }

    /**
     * 更新时间指示器显示
     * @param timestamp 时间戳
     */
    private fun updateTimeIndicator(timestamp: Long) {
        binding.tvTimeIndicator.text = timeFormatter.format(Date(timestamp))
    }

    /**
     * 显示空状态页面
     */
    private fun showEmptyState() {
        binding.llEmptyState.isVisible = true
        binding.vpHistoryRecords.isVisible = false
    }

    /**
     * 显示历史记录列表
     */
    private fun showHistoryRecords() {
        binding.llEmptyState.isVisible = false
        binding.vpHistoryRecords.isVisible = true
    }

    /**
     * 显示更多选项（侧边抽屉）
     * TODO: 在后续模块中实现
     */
    private fun showMoreOptions() {
        // 临时提示，后续实现侧边抽屉
        // 可以使用 NavigationDrawerFragment 或 BottomSheetDialog
    }

    /**
     * 跳转到统计页面
     * TODO: 在后续模块中实现
     */
    private fun navigateToStatistics() {
        // 临时提示，后续实现页面跳转
        // 可以使用 Intent 或 Navigation Component
    }

    /**
     * 显示情绪选择框
     * TODO: 在模块3.2中实现
     */
    private fun showEmotionSelector() {
        // 临时提示，后续实现BottomSheet情绪选择
        // 使用 BottomSheetDialog 实现
    }

    /**
     * 运行数据库测试
     */
    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
    }
}