package com.house.wallpapers.myactivity

import android.content.Intent
import android.os.Bundle
import android.view.View
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager
import android.widget.TextView.OnEditorActionListener
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.GridLayoutManager
import com.ad.toponlibrary.AdManager.loadAllAd
import com.ad.toponlibrary.AdManager.showTopOn
import com.ad.toponlibrary.onActionListener
import com.house.wallpapers.R
import com.house.wallpapers.adapter.OnItemclick
import com.house.wallpapers.databinding.ActivitySearchBinding
import com.house.wallpapers.mybean.Data
import com.house.wallpapers.myitem.Itemlist
import com.house.wallpapers.mytool.Comutils
import com.house.wallpapers.mytool.Itemhelper
import com.house.wallpapers.mytool.ObectManager

class MySearchActivity : AppCompatActivity() ,
    OnItemclick {
    private lateinit var adapterWallapper: Itemlist
    private lateinit var binding:ActivitySearchBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivitySearchBinding.inflate(layoutInflater)
        setContentView(binding.root)
        Comutils.initFull(this, false)
        loadAllAd()
        initList()
        binding.imageviewBack.setOnClickListener {
            finish()
        }
    }


    private fun initList() {
        val height = Comutils.dp2Px(180)
        adapterWallapper =
            Itemlist(this, height, true)
        adapterWallapper.setInfoWallpaperListener(this)
        val recyclerItemHelper = Itemhelper(10, 10, 15)
        val gridLayoutManager = GridLayoutManager(this, 2)
        binding.resultRecycler.run {
            layoutManager = gridLayoutManager
            addItemDecoration(recyclerItemHelper)
            adapter = adapterWallapper
        }

        binding.et.setOnEditorActionListener(OnEditorActionListener { v, actionId, event ->
            if (actionId == EditorInfo.IME_ACTION_SEARCH) {
                showTopOn(this) {
                    startSearch()
                }
                return@OnEditorActionListener true
            }
            false
        })
        binding.btnSearch.setOnClickListener {
            showTopOn(this) {
                startSearch()
            }
        }
    }

    private fun closeKeyboard() {
        val imm =  getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
        imm.hideSoftInputFromWindow(binding.et.windowToken, 0)
    }

    private fun startSearch() {
        closeKeyboard()
        binding.searchPb.visibility = View.VISIBLE
        val string: String = binding.et.text.toString()
        if (string.isNotEmpty()) {
            val search = ObectManager.search(string)
            if (search.size > 0) {
                showEmpty(false)
                adapterWallapper.setDataInfo(search)
                binding.searchPb.visibility = View.GONE
            } else {
                binding.searchPb.visibility = View.GONE
                showEmpty(true)
            }

        } else {
            binding.searchPb.visibility = View.GONE
            Toast.makeText(
                this,
                getString(R.string.please_input_keyword),
                Toast.LENGTH_SHORT
            ).show()
        }
    }

    private fun showEmpty(showEmpty: Boolean) {
        if (showEmpty) {
            binding.emptyLayout.visibility = View.VISIBLE
            binding.resultRecycler.visibility = View.GONE
        } else {
            binding.emptyLayout.visibility = View.GONE
            binding.resultRecycler.visibility = View.VISIBLE
        }
    }

    override fun onItemClickAction(info: Data?) {
        val intent = Intent(this, MyWallpaperActivity::class.java)
        intent.putExtra(Comutils.key_info, info)
        startActivity(intent)
    }
}