FragmentSetIpAndCom.kt 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. package com.cr.pages
  2. import android.graphics.Color
  3. import android.os.Bundle
  4. import android.view.LayoutInflater
  5. import android.view.View
  6. import android.view.ViewGroup
  7. import android.widget.Button
  8. import com.bigkoo.pickerview.adapter.ArrayWheelAdapter
  9. import com.contrarywind.listener.OnItemSelectedListener
  10. import com.cr.common.DataManager
  11. import com.cr.cruav.CrApplication
  12. import com.cr.cruav.R
  13. import com.cr.data.CrUtil
  14. import com.cr.dialog.DialogNormal
  15. import com.cr.event.BarAction
  16. import com.cr.event.EventFragmentBarAction
  17. import com.cr.models.IPAndComModel
  18. import com.cr.view.CrViewWheel
  19. import com.cr.widget.CrEditTextWidget
  20. import dji.v5.utils.common.ContextUtil
  21. /**
  22. * 操作系统:MAC系统
  23. * 创建者:王成
  24. * 创建日期:2023/3/30 13:44
  25. * 描述:设置IP和COM
  26. */
  27. class FragmentSetIpAndCom : CrNavigationFragment(),View.OnClickListener{
  28. // define: 2023/3/30 选择组件
  29. var wheelSelectIpAndCom: CrViewWheel? = null
  30. var lblIp: CrEditTextWidget? = null
  31. var lblCom: CrEditTextWidget? = null
  32. var lblServerName: CrEditTextWidget? = null
  33. var btnSetting:Button? = null
  34. // define: 2023/4/3 变量定义
  35. var networkLinks:List<IPAndComModel> = mutableListOf()
  36. /**
  37. * 创建视图
  38. * @param inflater LayoutInflater
  39. * @param container ViewGroup?
  40. * @param savedInstanceState Bundle?
  41. * @return View?
  42. */
  43. override fun onCreateView(
  44. inflater: LayoutInflater,
  45. container: ViewGroup?,
  46. savedInstanceState: Bundle?
  47. ): View? {
  48. self = this
  49. mainView = inflater.inflate(R.layout.frag_set_ip_and_com, null)
  50. // todo: 2023/3/30 设置导航栏
  51. setBar(R.id.nv)
  52. setBarVisible(isVisible = false)
  53. // todo: 2023/3/30 关联组件
  54. joinControls()
  55. // todo: 2023/3/30 初始化显示
  56. initPage()
  57. return mainView
  58. }
  59. /**
  60. * 挂接控件
  61. */
  62. override fun joinControls() {
  63. // todo: 2023/3/30 挂接选择组件
  64. wheelSelectIpAndCom = mainView!!.findViewById(R.id.frm_ic_view_list)
  65. // todo: 2023/4/3 挂接展示组件
  66. lblIp = mainView!!.findViewById(R.id.frm_ic_txt_ip)
  67. lblCom = mainView!!.findViewById(R.id.frm_ic_txt_com)
  68. lblServerName = mainView!!.findViewById(R.id.frm_ic_txt_server)
  69. btnSetting = mainView!!.findViewById(R.id.frm_ic_btn_set)
  70. btnSetting?.setOnClickListener(this)
  71. // todo: 2023/3/31 最后调用超类的关联方法 以便初始化控件
  72. super.joinControls()
  73. }
  74. /**
  75. * 初始化控件
  76. */
  77. override fun initControls() {
  78. super.initControls()
  79. // todo: 2023/3/30 服务信息选择滑动组件初始化
  80. wheelSelectIpAndCom?.setTextColorCenter(Color.YELLOW) // TODO: 4/17/21 设置选中项颜色
  81. wheelSelectIpAndCom?.setItemsVisibleCount(8)
  82. wheelSelectIpAndCom?.setTextSize(CrUtil.getDimens(R.dimen.sp_6))
  83. wheelSelectIpAndCom?.setTypeface(CrUtil.getFont(CrApplication.getContext()))
  84. wheelSelectIpAndCom?.setCyclic(false) // TODO: 6/9/21 禁止循环
  85. wheelSelectIpAndCom?.setOnItemSelectedListener(onItemSelectedListener)
  86. // todo: 2023/4/3 初始化网络连接信息
  87. var nLinkInfo: IPAndComModel = DataManager.getNetworkLinkInfo()
  88. setLinkView(nLinkInfo)
  89. }
  90. /**
  91. * 初始化页面
  92. */
  93. override fun initPage() {
  94. super.initPage()
  95. networkLinks = DataManager.getNetworkLinks()
  96. var strList = arrayListOf<String>()
  97. var selIndex:Int = 0
  98. for(index in networkLinks.indices){
  99. var link = networkLinks[index]
  100. strList.add(link!!.toString())
  101. if(link.isSelect) selIndex = index
  102. }
  103. wheelSelectIpAndCom!!.adapter = ArrayWheelAdapter(strList)
  104. wheelSelectIpAndCom!!.currentItem = selIndex
  105. }
  106. /**
  107. * 设置显示连接信息
  108. * @param link IPAndComModel
  109. */
  110. private fun setLinkView(link:IPAndComModel){
  111. link.let {
  112. lblIp?.setContent(it.ip)
  113. lblCom?.setContent(it.com)
  114. lblServerName?.setContent(it.serverName)
  115. }
  116. }
  117. /**
  118. * 滑动选择器的滑动选择事件
  119. */
  120. private var onItemSelectedListener: OnItemSelectedListener = OnItemSelectedListener {
  121. setLinkView(networkLinks[it])
  122. }
  123. /**
  124. * 设置连接
  125. */
  126. private fun setLink(){
  127. // todo: 2023/4/3 先进行检测
  128. if (lblIp?.getContent().equals("") || !CrUtil.checkIP(lblIp?.getContent())!!){
  129. showWarning("Ip地址不符合要求!")
  130. return
  131. }
  132. if (lblCom?.getContent().equals("") || !CrUtil.checkCOM(lblCom?.getContent())!!){
  133. showWarning("端口不符合要求!")
  134. return
  135. }
  136. if (lblServerName?.getContent().equals("")){
  137. showWarning("服务名不符合要求!")
  138. return
  139. }
  140. var link = IPAndComModel(lblIp!!.getContent(),lblCom!!.getContent(),lblServerName!!.getContent())
  141. // todo: 2023/4/3 查询
  142. var isExists:Boolean = DataManager.queryNetworkLink(link)
  143. if(isExists){
  144. // todo: 2023/4/3 存在则更新
  145. var isReset:Boolean = DataManager.cancelNetworkChecked()
  146. var isUpdate:Boolean = DataManager.updateNetworkChecked(link,true)
  147. showInformation(if(isReset && isUpdate) "设置成功" else "设置失败")
  148. }else{
  149. // todo: 2023/4/3 不存在 则追加
  150. var isReset:Boolean = DataManager.cancelNetworkChecked()
  151. var isInsert:Boolean = DataManager.insertNetworkLink(link)
  152. showInformation(if(isReset && isInsert) "设置成功" else "设置失败")
  153. }
  154. // todo: 2023/4/3 重置页面
  155. initPage()
  156. }
  157. /**
  158. * 点击事件
  159. * @param view View
  160. */
  161. override fun onClick(view: View?) {
  162. when(view?.id){
  163. R.id.frm_ic_btn_set->{
  164. setLink()
  165. }
  166. }
  167. }
  168. /**
  169. * 重写导航栏回退事件
  170. */
  171. override fun gotoBack() {
  172. CrApplication.getEventBus().post(EventFragmentBarAction(self!!,BarAction.ACTION_BACK))
  173. }
  174. /**
  175. * 重写导航栏关闭事件
  176. */
  177. override fun dismiss() {
  178. CrApplication.getEventBus().post(EventFragmentBarAction(self!!,BarAction.ACTION_DISMISS))
  179. }
  180. }