Newer
Older
SmartKitchen / app / src / main / java / com / casic / br / fragment / HomePageFragment.kt
package com.casic.br.fragment

import androidx.lifecycle.ViewModelProvider
import com.bumptech.glide.Glide
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.DeserializeModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.LoginActivity
import com.casic.br.view.MainActivity
import com.casic.br.view.WebsiteActivity
import com.casic.br.vm.BannerViewModel
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.utils.PageNavigationManager
import com.pengxh.kt.lite.utils.SaveKeyValues
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
import com.youth.banner.holder.BannerImageHolder
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
import java.util.*

class HomePageFragment : KotlinBaseFragment() {

    private lateinit var bannerViewModel: BannerViewModel

    override fun initLayoutView(): Int = R.layout.fragment_home

    override fun setupTopBarLayout() {
        requireContext().initLayoutImmersionBar(rootView)
    }

    override fun initData() {
        bannerViewModel = ViewModelProvider(this)[BannerViewModel::class.java]
        //初始化轮播图
        initBanner()

        val homeAdapter = HomeGridAdapter(requireContext(), LocaleConstant.HOME_FUNC_OPERATE)
        homeRecyclerView.addItemDecoration(GridItemDecoration(requireContext()))
        homeRecyclerView.adapter = homeAdapter
        homeAdapter.setOnGridItemClickListener(object : HomeGridAdapter.OnGridItemClickListener {
            override fun onItemClick(position: Int) {

            }
        })

        val connectGridAdapter =
            ConnectGridAdapter(
                requireContext(), LocaleConstant.CONNECT_IMAGE, LocaleConstant.CONNECT_ARRAY
            )
        connectRecyclerView.addItemDecoration(GridItemDecoration(requireContext()))
        connectRecyclerView.adapter = connectGridAdapter
        homeAdapter.setOnGridItemClickListener(object : HomeGridAdapter.OnGridItemClickListener {
            override fun onItemClick(position: Int) {

            }
        })
    }

    private fun initBanner() {
        bannerViewModel.obtainBanner("")
        bannerViewModel.listModel.observe(this, {
            if (it.code == 200) {
                val banner = homeBannerView as Banner<BannerImageModel.DataModel.RowsModel,
                        BannerImageAdapter<BannerImageModel.DataModel.RowsModel>>
                banner.apply {
                    setAdapter(object :
                        BannerImageAdapter<BannerImageModel.DataModel.RowsModel>(it.data.rows) {
                        override fun onBindView(
                            holder: BannerImageHolder,
                            data: BannerImageModel.DataModel.RowsModel,
                            position: Int,
                            size: Int
                        ) {
                            Glide.with(holder.itemView)
                                .load(data.bannerPicture)
                                .placeholder(R.mipmap.load_image_error)
                                .into(holder.imageView)
                        }
                    })
                    indicator = CircleIndicator(requireContext())
                    addPageTransformer(AlphaPageTransformer())
                    addBannerLifecycleObserver(this@HomePageFragment)

                    //Banner点击事件
                    setOnBannerListener { imageModel, _ ->
                        requireContext().navigatePageTo<WebsiteActivity>(imageModel.skipUrl)
                    }
                }
            }
        })
    }

    override fun observeRequestState() {

    }

    override fun initEvent() {
        rightOperateView.setOnClickListener {
            if (rightOperateView.text == "退出") {
                AlertControlDialog.Builder()
                    .setContext(requireContext())
                    .setTitle("退出确认")
                    .setMessage("退出当前账号,将不能同步数据")
                    .setNegativeButton("取消")
                    .setPositiveButton("确认退出")
                    .setOnDialogButtonClickListener(object :
                        AlertControlDialog.OnDialogButtonClickListener {
                        override fun onCancelClick() {

                        }

                        override fun onConfirmClick() {
                            SaveKeyValues.putValue(LocaleConstant.USER_IS_LOGIN, false)
                            requireContext().navigatePageTo<MainActivity>()
                            PageNavigationManager.finishAllActivity()
                        }
                    })
                    .build().show()
            } else {
                requireContext().navigatePageTo<LoginActivity>()
            }
        }
    }

    override fun onResume() {
        if (DeserializeModel.isLogin()) {
            rightOperateView.text = "退出"
        } else {
            rightOperateView.text = "登录"
        }
        super.onResume()
    }
}