OtherSettingVC.swift 9.45 KB
//
//  OtherSettingVC.swift
//  Twear
//
//  Created by yangbin on 2021/12/22.
//

import UIKit
import SnapKit
import MBProgressHUD

class OtherSettingVC: UIViewController {

    @IBOutlet weak var tableView: UITableView!
//    @IBOutlet weak var autoSwitch: UISwitch!
    
//    @IBOutlet weak var autoView: UIView!
//    @IBOutlet weak var autoTitleLabel: UILabel!
//    @IBOutlet weak var autoDetailLabel: UILabel!
    
    
    var unitSettingClosure: ((_ distanceUnit: DistanceUnit) -> ())?
    
    let settingDic: [String: [String]] = ["时间单位设置": ["24小时", "12小时"], "公英制单位设置": ["公制", "英制"], "温度单位": ["摄氏度(℃)", "华氏度(℉)"]]
    let settingArray: [String] = {
        switch CurDevice.platform {
        case ._828:
            return  ["时间单位设置", "公英制单位设置", "温度单位"]
        default:
            return ["时间单位设置", "公英制单位设置", "温度单位"]
        }
    }()
    
    var device = CurDevice
    
    override func viewDidLoad() {
        super.viewDidLoad()
        title = LocString("其他设置")
//        autoSwitch.isOn = UserInfo.autoMasure
        tableView.register(UINib.init(nibName: "SettingCell2", bundle: Bundle.main), forCellReuseIdentifier: "SettingCell2")
        tableView.tableFooterView = UIView(frame: CGRect.zero)

//        autoTitleLabel.text = LocString("整点自动测量")
//        autoDetailLabel.text = LocString("开启此功能,手表每小时将自动测量健康数据")
        
        
        if device.name.contains("P8GT") || device.name.contains("S7 NO.1") {
//            autoTitleLabel.text = ""
//            autoDetailLabel.text = ""
//            autoView.isHidden = true
        }
    }
    @IBAction func syncTime(_ sender: Any) {
        let user = UserInfo
        MBProgressHUD.showh(LocString("正在同步中..."))
        BluetoothManager.shared.setTime(format: TimeFormat(rawValue: UInt8(user.timeFormat))!) { error in
            if error == nil {
                MBProgressHUD.showh(LocString("同步完成"))
            } else {
                MBProgressHUD.showh(LocString("同步失败"))
            }
        }
    }
    
    @IBAction func switchAutoMasure(_ sender: UISwitch) {
        let user = UserInfo
        user.autoMasure = sender.isOn
        BluetoothManager.shared.setAutoMeasure(user.autoMasure) { error in
            if error == nil {
                AdminHelper.shared.updateUser(user)
            }
        }
    }
}


extension OtherSettingVC: UITableViewDelegate, UITableViewDataSource {

    
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 44
    }

    
    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let view = UIView()
        view.backgroundColor = UIColor.rgbColorFromHex(0xFAFAFA)
        let label = UILabel()
        label.font = UIFont.systemFont(ofSize: 13, weight: .medium)
        label.textColor = UIColor.rgbColorFromHex(0x999999)
        label.text = LocString(settingArray[section])
        view.addSubview(label)
        label.snp.makeConstraints { make in
            make.left.equalToSuperview().offset(12)
            make.top.equalToSuperview().offset(10)
        }
        return view
    }
    
    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return 0.5
    }
    
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 55
    }
    
    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 user = UserInfo
        switch settingArray[indexPath.section] {
        case "时间单位设置":
            if user.timeFormat == 0 && text == "24小时" {
                cell.setCorners(corners: [.topLeft, .topRight], radio: 10)
                cell.selectImageView.image = UIImage(named: "setting_selected")
            } else if user.timeFormat == 1 && text == "12小时" {
                cell.setCorners(corners: [.bottomLeft, .bottomRight], radio: 10)
                cell.selectImageView.image = UIImage(named: "setting_selected")
            }
        case "公英制单位设置":
            if text == "公制" {
                cell.setCorners(corners: [.topLeft, .topRight], radio: 10)
                if user.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 == "英制" {
                cell.setCorners(corners: [.bottomLeft, .bottomRight], radio: 10)
                if user.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 user.temperatureUnit == 0 && text == "摄氏度(℃)" {
                cell.setCorners(corners: [.topLeft, .topRight], radio: 10)
                cell.selectImageView.image = UIImage(named: "setting_selected")
            } else if user.temperatureUnit == 1 && text == "华氏度(℉)" {
                cell.setCorners(corners: [.bottomLeft, .bottomRight], radio: 10)
                cell.selectImageView.image = UIImage(named: "setting_selected")
            }
        default:
            break
        }
        
        return cell
    }
    
    func updateUI(_ indexPath: IndexPath, user: UserInfoModel) {
        MBProgressHUD.hide()
        AdminHelper.shared.updateUser(user)
        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 user = UserInfo
        switch settingDic[settingArray[indexPath.section]]![indexPath.row] {
        case "24小时":
            BluetoothManager.shared.newSetTimeFormat(format: .hour_24) {[weak self] error in
                if error == nil {
                    user.timeFormat = 0
                    self?.updateUI(indexPath, user: user)
                }
            }
        case "12小时":
            BluetoothManager.shared.newSetTimeFormat(format: .hour_12) {[weak self] error in
                if error == nil {
                    user.timeFormat = 1
                    self?.updateUI(indexPath, user: user)
                }
            }
        case "公制":
            BluetoothManager.shared.setUnit(.meter, TemperatureUnit(rawValue: UInt8(user.temperatureUnit))!) {[weak self] error in
                if error == nil {
                    user.distanceUnit = 0
                    self?.updateUI(indexPath, user: user)
                    self?.unitSettingClosure?(.meter)
                }
            }
        case "英制":
            BluetoothManager.shared.setUnit(.foot, TemperatureUnit(rawValue: UInt8(user.temperatureUnit))!) {[weak self] error in
                if error == nil {
                    user.distanceUnit = 1
                    self?.updateUI(indexPath, user: user)
                    self?.unitSettingClosure?(.foot)
                }
            }
        case "摄氏度(℃)":
            BluetoothManager.shared.setUnit(DistanceUnit(rawValue: UInt8(user.distanceUnit))!, .celsius) {[weak self] error in
                if error == nil {
                    user.temperatureUnit = 0
                    self?.updateUI(indexPath, user: user)
                }
            }
        case "华氏度(℉)":
            BluetoothManager.shared.setUnit(DistanceUnit(rawValue: UInt8(user.distanceUnit))!, .fahrenheit) {[weak self] error in
                if error == nil {
                    user.temperatureUnit = 1
                    self?.updateUI(indexPath, user: user)
                }
            }
        default:
            break
        }
    }
}