HomeFunctionTopBar.kt 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. package com.develop.common.widget
  2. import android.content.Context
  3. import android.util.AttributeSet
  4. import android.view.View
  5. import android.widget.ImageView
  6. import android.widget.RelativeLayout
  7. import com.develop.base.ext.load
  8. import com.develop.base.R.*
  9. import com.develop.base.ext.resId2Dimension
  10. import com.develop.base.ext.src
  11. import com.develop.base.ext.updateText
  12. import com.develop.common.R
  13. import com.develop.common.databinding.HomeFunctionTopBarViewBinding
  14. import com.develop.common.data_repo.db.RecipesType
  15. class HomeFunctionTopBar : RelativeLayout, View.OnClickListener {
  16. private var binding: HomeFunctionTopBarViewBinding
  17. constructor(context: Context?) : super(context) {}
  18. constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {}
  19. constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(
  20. context, attrs, defStyleAttr
  21. ) {
  22. }
  23. var onHomeFunctionClickListener: OnHomeFunctionClickListener? = null
  24. private var recipesType = RecipesType.LOCAL
  25. private var homeOrBackType = HomeOrBack.Home
  26. init {
  27. val root = View.inflate(context, R.layout.home_function_top_bar_view, this)
  28. binding = HomeFunctionTopBarViewBinding.bind(root)
  29. binding.ivNotify.setOnClickListener(this)
  30. binding.userLayout.setOnClickListener(this)
  31. binding.modeLayout.setOnClickListener(this)
  32. binding.ivTab.setOnClickListener(this)
  33. binding.ivWifi.setOnClickListener(this)
  34. binding.ivWifi.setImageResource(R.drawable.icon_wifi_act_signal_level)
  35. binding.ivWifi.setImageLevel(0)
  36. binding.ivFunction.src = R.drawable.ic_home
  37. }
  38. fun setHomeOrBack(type: HomeOrBack) {
  39. homeOrBackType = type
  40. if (type == HomeOrBack.Home) {
  41. binding.ivFunction.src = R.drawable.ic_home
  42. binding.functionName.text = resources.getString(R.string.home)
  43. } else {
  44. binding.ivFunction.src = R.drawable.ic_white_back
  45. binding.functionName.text = resources.getString(R.string.back)
  46. }
  47. }
  48. interface OnHomeFunctionClickListener {
  49. fun onWifiClick()
  50. fun onUserClick()
  51. fun onTabClick()
  52. fun onNotifyClick()
  53. fun onHomeOrBackClick(homeOrBack: HomeOrBack)
  54. }
  55. override fun onClick(p0: View) {
  56. when (p0.id) {
  57. R.id.mode_layout -> {
  58. onHomeFunctionClickListener?.onHomeOrBackClick(homeOrBackType)
  59. }
  60. R.id.user_layout -> {
  61. onHomeFunctionClickListener?.onUserClick()
  62. }
  63. R.id.iv_wifi -> {
  64. onHomeFunctionClickListener?.onWifiClick()
  65. }
  66. R.id.iv_notify -> {
  67. onHomeFunctionClickListener?.onNotifyClick()
  68. }
  69. R.id.iv_tab -> {
  70. onHomeFunctionClickListener?.onTabClick()
  71. }
  72. }
  73. }
  74. fun getNetView(): ImageView {
  75. return binding.ivWifi
  76. }
  77. fun setNetRssi(level: Int) {
  78. binding.ivWifi.setImageLevel(level)
  79. }
  80. fun setTitle(title: String) {
  81. binding.tvTitle.updateText(title)
  82. }
  83. fun setUserName(userName: String) {
  84. binding.tvState.text = userName
  85. }
  86. private fun updateIconSize(isLocal: Boolean) {
  87. val param = binding.ivFunction.layoutParams as LayoutParams
  88. if (isLocal) {
  89. param.width = dp35
  90. param.height = dp60
  91. } else {
  92. param.width = dp120
  93. param.height = dp120
  94. }
  95. }
  96. companion object {
  97. var dp35 = (dimen.convert_35px).resId2Dimension().toInt()
  98. var dp60 = (dimen.convert_60px).resId2Dimension().toInt()
  99. var dp120 = (dimen.convert_120px).resId2Dimension().toInt()
  100. }
  101. }
  102. enum class HomeOrBack {
  103. Home,
  104. Back
  105. }