// // OtherSettingVC.swift // Twear // // Created by yangbin on 2021/12/22. // import UIKit import SnapKit import MBProgressHUD class OtherSettingVC: UIViewController { @IBOutlet weak var tableView: UITableView! var unitSettingClosure: ((_ distanceUnit: DistanceUnit) -> ())? let settingDic: [String: [String]] = ["时间单位设置": ["24小时", "12小时"], "公英制单位设置": ["公制", "英制"], "温度单位": ["摄氏度(℃)", "华氏度(℉)"]] let settingArray: [String] = { switch CurDevice.platform { case ._816: return ["公英制单位设置", "温度单位"] case ._828: return ["时间单位设置", "公英制单位设置"] default: return ["时间单位设置", "公英制单位设置", "温度单位"] } }() override func viewDidLoad() { super.viewDidLoad() title = LocString("其他设置") tableView.register(UINib.init(nibName: "SettingCell2", bundle: Bundle.main), forCellReuseIdentifier: "SettingCell2") tableView.tableFooterView = UIView(frame: CGRect.zero) // tableView.contentInset = UIEdgeInsets.init(top: 0, left: 0, bottom: 10, right: 0) // tableView.backgroundColor = .red } @IBAction func syncTime(_ sender: Any) { let device = CurDevice MBProgressHUD.showh(LocString("正在同步中...")) BluetoothManager.shared.setTime(format: TimeFormat(rawValue: UInt8(device.timeFormat))!) { error in if error == nil { MBProgressHUD.showh(LocString("同步完成")) } else { MBProgressHUD.showh(LocString("同步失败")) } } } } extension OtherSettingVC: UITableViewDelegate, UITableViewDataSource { func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return 30 } func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { let view = UIView() view.backgroundColor = UIColor.rgbColorFromHex(0xF2F2F2) let label = UILabel() label.font = RegularFont(11) label.text = LocString(settingArray[section]) view.addSubview(label) label.snp.makeConstraints { make in make.left.equalToSuperview().offset(12) make.top.equalToSuperview().offset(7.5) } return view } func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { return 0.5 } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 50 } func numberOfSections(in tableView: UITableView) -> Int { return settingArray.count } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return settingDic[settingArray[section]]!.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "SettingCell2", for: indexPath) as! SettingCell2 let text = settingDic[settingArray[indexPath.section]]![indexPath.row] cell.label.text = LocString(text) let device = CurDevice switch settingArray[indexPath.section] { case "时间单位设置": if device.timeFormat == 0 && text == "24小时" { cell.selectImageView.image = UIImage(named: "setting_selected") } else if device.timeFormat == 1 && text == "12小时" { cell.selectImageView.image = UIImage(named: "setting_selected") } case "公英制单位设置": if text == "公制" { if device.distanceUnit == 0 { cell.selectImageView.image = UIImage(named: "setting_selected") } let str1 = LocString("公制") let str2 = LocString("(米/公里/千克)") let str = NSMutableAttributedString(string: "\(str1)\(str2)") str.addAttributes([.font: RegularFont(15)], range: NSMakeRange(0, str1.count)) str.addAttributes([.font: RegularFont(11)], range: NSMakeRange(str1.count, str2.count)) cell.label.attributedText = str } else if text == "英制" { if device.distanceUnit == 1 { cell.selectImageView.image = UIImage(named: "setting_selected") } let str1 = LocString("英制") let str2 = LocString("(英寸/英里/英镑)") let str = NSMutableAttributedString(string: "\(str1)\(str2)") str.addAttributes([.font: RegularFont(15)], range: NSMakeRange(0, str1.count)) str.addAttributes([.font: RegularFont(11)], range: NSMakeRange(str1.count, str2.count)) cell.label.attributedText = str } case "温度单位": if device.temperatureUnit == 0 && text == "摄氏度(℃)" { cell.selectImageView.image = UIImage(named: "setting_selected") } else if device.temperatureUnit == 1 && text == "华氏度(℉)" { cell.selectImageView.image = UIImage(named: "setting_selected") } default: break } return cell } func updateUI(_ indexPath: IndexPath, device: DeviceModel) { MBProgressHUD.hide() AdminHelper.shared.updateDevice(device) let cell = tableView.cellForRow(at: indexPath) as! SettingCell2 let cell1 = tableView.cellForRow(at: IndexPath(row: 1-indexPath.row, section: indexPath.section)) as! SettingCell2 cell.selectImageView.image = UIImage(named: "setting_selected") cell1.selectImageView.image = UIImage(named: "setting_not_selected") } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let cell = tableView.cellForRow(at: indexPath) as! SettingCell2 cell.isSelected = false _ = MBProgressHUD.showMessage("") let device = CurDevice switch settingDic[settingArray[indexPath.section]]![indexPath.row] { case "24小时": BluetoothManager.shared.setTime(format: .hour_24) {[weak self] error in if error == nil { device.timeFormat = 0 self?.updateUI(indexPath, device: device) } } case "12小时": BluetoothManager.shared.setTime(format: .hour_12) {[weak self] error in if error == nil { device.timeFormat = 1 self?.updateUI(indexPath, device: device) } } case "公制": BluetoothManager.shared.setUnit(.meter, TemperatureUnit(rawValue: UInt8(device.temperatureUnit))!) {[weak self] error in if error == nil { device.distanceUnit = 0 self?.updateUI(indexPath, device: device) self?.unitSettingClosure?(.meter) } } case "英制": BluetoothManager.shared.setUnit(.foot, TemperatureUnit(rawValue: UInt8(device.temperatureUnit))!) {[weak self] error in if error == nil { device.distanceUnit = 1 self?.updateUI(indexPath, device: device) self?.unitSettingClosure?(.foot) } } case "摄氏度(℃)": BluetoothManager.shared.setUnit(DistanceUnit(rawValue: UInt8(device.distanceUnit))!, .celsius) {[weak self] error in if error == nil { device.temperatureUnit = 0 self?.updateUI(indexPath, device: device) } } case "华氏度(℉)": BluetoothManager.shared.setUnit(DistanceUnit(rawValue: UInt8(device.distanceUnit))!, .fahrenheit) {[weak self] error in if error == nil { device.temperatureUnit = 1 self?.updateUI(indexPath, device: device) } } default: break } } }