123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421 |
- //
- // FF_HeadCell.swift
- // SolarLamp
- //
- // Created by liaolj on 16/12/24.
- // Copyright © 2016年 SolarLamp. All rights reserved.
- import UIKit
- import Reusable
- import RxCocoa
- import RxSwift
- import BarcodeScanner
- import MapKit
- extension FF_HeadCell: UITextFieldDelegate {
- func textFieldDidEndEditing(_ textField: UITextField) {
- let content = textField.text
-
- switch textField {
- case lamp_no:
- self.targetVC?.rawSettingData["lamp_no"] = content
- case section:
- self.targetVC?.rawSettingData["section"] = content
- case address:
- self.targetVC?.rawSettingData["address"] = content
- case latitude:
- self.targetVC?.rawSettingData["latitude"] = content
- default:
- break
- }
- }
-
- }
- class FF_HeadCell: UITableViewCell, NibReusable {
-
- // typealias coordinationCallBack = ((CLLocationCoordinate2D)->())?
- // var callBack:((CLLocationCoordinate2D)->())?
- @IBOutlet weak var network_name:UITextField!
- @IBOutlet weak var lamp_no:UITextField!
- @IBOutlet weak var section:UITextField!
- @IBOutlet weak var address:UITextField!
- @IBOutlet weak var latitude:UITextField!
- @IBOutlet weak var longitude:UITextField!
-
- @IBOutlet weak var netSelectBox: UIView!//wirelessIDAction
- @IBOutlet weak var autoLocationButton: KKWButton!
- @IBOutlet weak var mapSelectBox: KKWView!
- @IBOutlet weak var wirelessIDBox: UIView!//wirelessIDAction
-
- @IBOutlet weak var devicetypeLabel: UILabel!
- //label text
- @IBOutlet weak var devicetypeTextfield: UITextField!
- @IBOutlet weak var devicetypeSelectedView: UIView!
-
- @IBOutlet weak var lampprotocoltypeLabel: UILabel!
-
- @IBOutlet weak var lampprotocoltypeTextfield: UITextField!
-
- @IBOutlet weak var lampprotocoltypeSelectedView: UIView!
-
- @IBOutlet weak var netword_nameLabel: UILabel!
-
- var devicetype : Int?
- var lampprotocoltype : Int?
- var protocoltype: Int?
-
- var isDirectConnection : Bool? = false{
- didSet{
- if self.isDirectConnection! {
- self.network_name.placeholder = "network_ownPlaceholder".localizedstr()
- self.netword_nameLabel.text = "protocoltype".localizedstr()
- self.network_name.text = ""
- } else {
- self.network_name.placeholder = "network_ownPlaceholder".localizedstr()
- self.netword_nameLabel.text = "network_own".localizedstr()
- self.network_name.text = ""
-
- }
- }
- }
-
- weak var targetVC:DlightDetailEditTVC? {
- didSet {
- dataInit()
- }
- }
-
- @IBOutlet weak var pickeImageView:UIImageView!
- override func awakeFromNib() {
- super.awakeFromNib()
- // setupRx()
- setupNormal()
- // Initialization code
- }
-
-
- func setupNormal() {
- lamp_no.delegate = self
- section.delegate = self
- address.delegate = self
- latitude.delegate = self
-
- network_name.isEnabled = false
- devicetypeTextfield.isEnabled = false
- lampprotocoltypeTextfield.isEnabled = false
-
- devicetypeLabel.text = "devicetype".localizedstr()
- devicetypeTextfield.placeholder = "devicetypePlaceholder".localizedstr()
-
- lampprotocoltypeLabel.text = "lampprotocoltype".localizedstr()
- lampprotocoltypeTextfield.placeholder = "lampprotocoltypePlaceholder".localizedstr()
-
- devicetypeSelectedView.isUserInteractionEnabled = true
- lampprotocoltypeSelectedView.isUserInteractionEnabled = true
-
- let devicetypeSelectBoxTapGesture = UITapGestureRecognizer(target: self, action: #selector(FF_HeadCell.devicetypeSeletedAction))
-
- let lampprotocoltypeSelectBoxTapGesture = UITapGestureRecognizer(target: self, action: #selector(FF_HeadCell.lampprotocoltypeSelectedAction))
-
-
- devicetypeSelectedView.addGestureRecognizer(devicetypeSelectBoxTapGesture)
-
- lampprotocoltypeSelectedView.addGestureRecognizer(lampprotocoltypeSelectBoxTapGesture)
-
- let netSelectBoxTapGesture = UITapGestureRecognizer.init(target: self, action: #selector(FF_HeadCell.netSelectBoxAction))
- netSelectBox.addGestureRecognizer(netSelectBoxTapGesture)
-
- autoLocationButton.addTarget(self, action: #selector(FF_HeadCell.autoLocationButtonAction), for: UIControlEvents.touchUpInside)
-
- let mapSelectBoxTapGesture = UITapGestureRecognizer.init(target: self, action: #selector(FF_HeadCell.mapSelectBoxAction))
- mapSelectBox.addGestureRecognizer(mapSelectBoxTapGesture)
-
- let wirelessIDBoxTapGesture = UITapGestureRecognizer.init(target: self, action: #selector(FF_HeadCell.wirelessIDBoxAction))
- wirelessIDBox.addGestureRecognizer(wirelessIDBoxTapGesture)
-
- }
- @objc func devicetypeSeletedAction(tap:UITapGestureRecognizer) {
- log.debug("设备类型选择")
- let deviceTypes = ["直连设备","非直连设备"]
- let deviceTypePick = THScrollChooseView(question: deviceTypes, withDefaultDesc:"非直连设备")
- deviceTypePick!.show()
- deviceTypePick?.confirmBlock = {[weak self](selectedIndex) in
- log.debug(deviceTypes[selectedIndex])
- self?.devicetypeTextfield.text = deviceTypes[selectedIndex]
- if selectedIndex == 0 {
- self?.isDirectConnection = true
- self?.devicetype = 1
- self?.targetVC?.devicetype = 1
- self?.targetVC?.rawSettingData["devicetype"] = "1"
- }else{
- self?.isDirectConnection = false
- self?.devicetype = 0
- self?.targetVC?.devicetype = 0
- self?.targetVC?.rawSettingData["devicetype"] = "0"
- }
- }
- }
-
- @objc func lampprotocoltypeSelectedAction(tap:UITapGestureRecognizer) {
- log.debug("灯控协议类型选择")
-
- let lampprotocoltypes = ["LightBus","ModBus"]
- let lampprotocoltypesPick = THScrollChooseView(question: lampprotocoltypes, withDefaultDesc:"LightBus")
- lampprotocoltypesPick!.show()
- lampprotocoltypesPick?.confirmBlock = {[weak self](selectedIndex) in
- log.debug(lampprotocoltypes[selectedIndex])
- self?.lampprotocoltypeTextfield.text = lampprotocoltypes[selectedIndex]
- self?.lampprotocoltype = selectedIndex
- self?.targetVC?.lampprotocoltype = selectedIndex
- self?.targetVC?.rawSettingData["lampprotocoltype"] = "\(selectedIndex)"
- }
- }
-
- @objc func netSelectBoxAction(tap: UITapGestureRecognizer) {
-
- if isDirectConnection! {
- log.debug("选择网络协议类型")
-
- let netAgreementTypes = ["tcp","nb","gprs","lorawan"]
- let netAgreementTypePick = THScrollChooseView(question: netAgreementTypes, withDefaultDesc:nil)
- netAgreementTypePick!.show()
- netAgreementTypePick?.confirmBlock = {[weak self](selectedIndex) in
- log.debug(netAgreementTypes[selectedIndex])
- self?.network_name.text = netAgreementTypes[selectedIndex]
- self?.protocoltype = selectedIndex
- self?.targetVC?.protocoltype = selectedIndex
- self?.targetVC?.rawSettingData["protocoltype"] = "\(selectedIndex)"
- }
- } else {
- let vc = KKWMainVCType.KKWNetworkSelectVC.getClass() as! KKWNetworkSelectVC
- vc.project_id = self.targetVC?.project_id
- vc.dismissCallBack = { [weak self] network in
- self?.targetVC?.selectNetwork = network
- }
- self.targetVC?.navigationController?.pushViewController(vc, animated: false)
- }
-
- }
- @objc func autoLocationButtonAction(sender: UIButton) {
- KKWLocationService.shareInstance.callBack = { [weak self] coordinate in
- self?.coordinate = coordinate
- }
- KKWLocationService.shareInstance.start()
-
- }
-
- @objc func mapSelectBoxAction(tap: UITapGestureRecognizer) {
- let vc = KKWDeviceRootVCType.fetchMap.getClass() as! DMapFetchLocationVC
- vc.coordinationCallBack = { [weak self]coordinate in
- self?.coordinate = coordinate
- }
- self.targetVC?.navigationController?.pushViewController(vc, animated: false)
- }
- @objc func wirelessIDBoxAction(tap: UITapGestureRecognizer) {
- let controller = BarcodeScannerViewController()
- controller.codeDelegate = self
- controller.errorDelegate = self
- controller.dismissalDelegate = self
- self.targetVC?.present(controller, animated: true, completion: nil)
- }
-
- /*
- 0110e00200244800c8000c000b008e008d0096008c008c0096008c0096008c0091000000000005000a000f00080008000800080008003c000a003c000a00000000000f00080000000a0001000500e4e8ee
- */
- func setupRx() {
-
- lamp_no.rx.text.subscribe(onNext: { [weak self](content) in
- self?.targetVC?.rawSettingData["lamp_no"] = content
- }).addDisposableTo(disposeBag)
- section.rx.text.subscribe(onNext: { [weak self](content) in
- self?.targetVC?.rawSettingData["section"] = content
- }).disposed(by: disposeBag)
- address.rx.text.subscribe(onNext: { [weak self](content) in
- self?.targetVC?.rawSettingData["address"] = content
- }).disposed(by: disposeBag)
- latitude.rx.text.subscribe(onNext: { [weak self](content) in
- let con = Double(content!)
- let lat = con! + 0.006
- self?.targetVC?.rawSettingData["latitude"] = content
- }).disposed(by: disposeBag)
- longitude.rx.text.subscribe(onNext: { [weak self](content) in
- let con2 = Double(content!) //string 转double
- let lng = con2! + 0.0065
- self?.targetVC?.rawSettingData["longitude"] = content
- }).disposed(by: disposeBag)
-
- //netSelectBox.rx.gesture(RxGestureTypeOption.tap).subscribe(onNext:{}).addDisposableTo(rx_disposeBag)
-
- netSelectBox.rx.gesture(RxGestureTypeOption.tap).subscribe(onNext: { [weak self]_ in
- let vc = KKWMainVCType.KKWNetworkSelectVC.getClass() as! KKWNetworkSelectVC
- vc.project_id = self?.targetVC?.project_id
- vc.dismissCallBack = { network in
- self?.targetVC?.selectNetwork = network
- }
- self?.targetVC?.navigationController?.pushViewController(vc, animated: false)
- }).disposed(by: disposeBag)
-
- autoLocationButton.rx.tap.subscribe(onNext: { [weak self]_ in
- KKWLocationService.shareInstance.callBack = { coordinate in
- self?.coordinate = coordinate
- }
- KKWLocationService.shareInstance.start()
- }).addDisposableTo(disposeBag)
-
- mapSelectBox.rx.gesture(RxGestureTypeOption.tap).subscribe(onNext: { [weak self] _ in
- let vc = KKWDeviceRootVCType.fetchMap.getClass() as! DMapFetchLocationVC
- vc.coordinationCallBack = { coordinate in
- self?.coordinate = coordinate
- }
- self?.targetVC?.navigationController?.pushViewController(vc, animated: false)
-
- }).addDisposableTo(disposeBag) //wirelessIDBox
-
- wirelessIDBox.rx.gesture(RxGestureTypeOption.tap).subscribe(onNext: { [weak self] _ in
- let controller = BarcodeScannerViewController()
- controller.codeDelegate = self
- controller.errorDelegate = self
- controller.dismissalDelegate = self
- self?.targetVC?.present(controller, animated: true, completion: nil)
- // self?.targetVC?.navigationController?.pushViewController(vc, animated: false)
-
- }).disposed(by: disposeBag)//wirelessIDBox
-
- }
-
- var coordinate:CLLocationCoordinate2D! {
- didSet {
- //高德地图坐标
- let lat = String(format: "%.6f", coordinate.latitude + 0.006 )
- let lng = String(format: "%.6f", coordinate.longitude + 0.0065)
-
- let geoArr = geoExchangeBDGeoWith(lat: coordinate.latitude, lng: coordinate.longitude)
-
- log.debug("直接+ lat: \(lat),lng:\(lng) 进一步处理 \(geoArr[0]),\(geoArr[1])")
- targetVC?.rawSettingData["latitude"] = geoArr[0]
- targetVC?.rawSettingData["longitude"] = geoArr[1]
- }
- }
-
- func dataInit() {
-
- //设备类型
- let devicetypeInt = targetVC?.rawSettingData["devicetype"]
- var devicetypeStr1 : String?
- if devicetypeInt == "1" {
- devicetypeStr1 = "direct_device".localizedstr()
- }else{
- devicetypeStr1 = "indirce_device".localizedstr()
- }
- devicetypeTextfield.text = devicetypeStr1
- //协议类型
-
- let lampprotocoltypeInt = self.targetVC?.rawSettingData["lampprotocoltype"]
- var lampprotocoltypeStr : String?
- if lampprotocoltypeInt == "0" {
- lampprotocoltypeStr = "LightBus"
- }else{
- lampprotocoltypeStr = "ModBus"
- }
-
- lampprotocoltypeTextfield.text = lampprotocoltypeStr
-
- let protocoltypeInt = targetVC?.rawSettingData["protocoltype"]
- var protocoltypeStr : String?
- if protocoltypeInt == "0" {
- protocoltypeStr = "tcp"
- }else if protocoltypeInt == "1"{
- protocoltypeStr = "nb"
- }else if protocoltypeInt == "2"{
- protocoltypeStr = "gprs"
- }else if protocoltypeInt == "3"{
- protocoltypeStr = "lorawan"
- }
-
- self.targetVC?.devicetype = Int(devicetypeInt!)
- self.targetVC?.lampprotocoltype = Int(lampprotocoltypeInt!)
- self.targetVC?.protocoltype = Int(protocoltypeInt!)
-
- if devicetypeInt == "1"{
- devicetype = 1
- isDirectConnection = true
- network_name.text = protocoltypeStr
-
-
- }else{
- network_name.text = targetVC?.rawSettingData["network_name"]
- isDirectConnection = false
- devicetype = 0
-
- }
-
-
- lamp_no.text = targetVC?.rawSettingData["lamp_no"]
- section.text = targetVC?.rawSettingData["section"]
- address.text = targetVC?.rawSettingData["address"] //这个是
- latitude.text = targetVC?.rawSettingData["latitude"]
- longitude.text = targetVC?.rawSettingData["longitude"]
- }
- override func setSelected(_ selected: Bool, animated: Bool) {
- super.setSelected(selected, animated: animated)
- // Configure the view for the selected state
- }
-
- }
- extension FF_HeadCell: BarcodeScannerCodeDelegate {
- func scanner(_ controller: BarcodeScannerViewController, didCaptureCode code: String, type: String) {
- // print(code)
- // print(type)
- self.address.text = code
- controller.dismiss(animated: true, completion: nil)
-
- // let delayTime = DispatchTime.now() + Double(Int64(6 * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC)
- // DispatchQueue.main.asyncAfter(deadline: delayTime) {
- // controller.resetWithError()
- // }
- }
-
-
- // func barcodeScanner(_ controller: BarcodeScannerController, didCaptureCode code: String, type: String) {
- // // print(code)
- // // print(type)
- // self.address.text = code
- // controller.dismiss(animated: true, completion: nil)
- //
- // // let delayTime = DispatchTime.now() + Double(Int64(6 * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC)
- // // DispatchQueue.main.asyncAfter(deadline: delayTime) {
- // // controller.resetWithError()
- // // }
- // }
- }
- extension FF_HeadCell: BarcodeScannerErrorDelegate {
- func scanner(_ controller: BarcodeScannerViewController, didReceiveError error: Error) {
- print(error)
- }
-
-
- // func barcodeScanner(_ controller: BarcodeScannerController, didReceiveError error: Error) {
- // print(error)
- // }
- }
- extension FF_HeadCell: BarcodeScannerDismissalDelegate {
- func scannerDidDismiss(_ controller: BarcodeScannerViewController) {
- controller.dismiss(animated: true, completion: nil)
- }
-
-
- // func barcodeScannerDidDismiss(_ controller: BarcodeScannerController) {
- // controller.dismiss(animated: true, completion: nil)
- // }
- }
|