package com.beancount.mobile.accessibility

import android.os.Build
import android.service.quicksettings.Tile
import android.service.quicksettings.TileService
import android.util.Log
import android.content.Intent
import android.app.PendingIntent

/**
 * 快速设置磁贴（plan.md「3.11 快速设置磁贴」）。
 *
 * 参考 AutoAccounting 的 OcrTileService：
 * - 用户下拉快速设置，点击「OCR 记账」磁贴触发一次手动 OCR
 * - Android 14+ 用 PendingIntent + startActivityAndCollapse
 *
 * 触发后调用 SelectToSpeakService.triggerManualOcr()。
 */
class OcrTileService : TileService() {

    companion object {
        private const val TAG = "OcrTileService"
    }

    override fun onStartListening() {
        super.onStartListening()
        qsTile?.let { tile ->
            tile.state = Tile.STATE_ACTIVE
            tile.label = "OCR 记账"
            tile.updateTile()
        }
        Log.d(TAG, "磁贴开始监听")
    }

    override fun onClick() {
        super.onClick()
        Log.i(TAG, "磁贴被点击，触发手动 OCR")
        triggerManualOcr()
    }

    /** 触发手动 OCR（通过 SelectToSpeakService）。 */
    private fun triggerManualOcr() {
        val service = SelectToSpeakService.instance
        if (service != null) {
            service.triggerManualOcr()
            return
        }
        // 服务未运行，尝试启动（Android 14+ 用 collapse）
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
            val pi = PendingIntent.getActivity(
                this, 0,
                Intent().apply {
                    setClassName(packageName, "$packageName.MainActivity")
                    action = "$packageName.TRIGGER_OCR"
                    flags = Intent.FLAG_ACTIVITY_NEW_TASK
                },
                PendingIntent.FLAG_IMMUTABLE,
            )
            startActivityAndCollapse(pi)
        }
    }
}
