// // DailSyncViewController.swift // Twear // // Created by yangbin on 2021/12/21. // import UIKit class DailSyncViewController: UIViewController { @IBOutlet weak var collectionView: UICollectionView! @IBOutlet weak var collectionViewFlowLayout: UICollectionViewFlowLayout! var dialNum: Int = 9 var identifierDic: [String: String] = [:] // var isSyncing: Bool = false override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) let navController = navigationController as? ZCNavigationController navController?.enableScreenEdgePanGestureRecognizer(true) } override func viewDidLoad() { super.viewDidLoad() title = LocString("表盘推送") collectionViewFlowLayout.minimumLineSpacing = 10 collectionViewFlowLayout.minimumInteritemSpacing = 20 collectionViewFlowLayout.sectionInset = UIEdgeInsets(top: 5, left: 10, bottom: 10, right: 10) collectionViewFlowLayout.itemSize = CGSize(width: (SCREEN_WIDTH-60)/3.0, height: 130) // collectionView.bounces = false // Do any additional setup after loading the view. // let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] // let fileURL = documentsURL.appendingPathComponent("update/v1.zip") // print(fileURL.absoluteString) // print(fileURL.path) // print("\(Bundle.main.resourcePath!)/dial/Dialdata280/") } private func syncDail(_ indexPath: IndexPath) { if IsDailSyncing { return } let cell = self.collectionView.cellForItem(at: indexPath) as! DailCell updateUserInteraction(true) cell.updateProgressView(0) switch CurDevice.platform { case ._816: BluetoothManager.shared.syncDialWith(path: "\(Bundle.main.resourcePath!)/dial/Dialdata280/\(indexPath.row)") { progress in cell.updateProgressView(progress) } completion: {[weak self] error in self?.updateUserInteraction(false) if error == nil { cell.syncComplete() } else { cell.initProgressView() self?.showAlert(title: LocString("提示"), message: LocString("安装失败,请重试"), cancelText: nil) } } case ._818: BluetoothManager.shared.syncFileWith(path: "\(Bundle.main.resourcePath!)/dial/DialDataRtk/\(indexPath.row)/dial.bin") { progress in cell.updateProgressView(progress) } completion: {[weak self] error in self?.updateUserInteraction(false) if error == nil { cell.syncComplete() } else { cell.initProgressView() self?.showAlert(title: LocString("提示"), message: LocString("安装失败,请重试"), cancelText: nil) } } case ._828: BluetoothManager.shared.syncFileWith(path: "\(Bundle.main.resourcePath!)/dial/DialDataHQ7/\(indexPath.row)/dial.bin") { progress in cell.updateProgressView(progress) } completion: {[weak self] error in self?.updateUserInteraction(false) if error == nil { cell.syncComplete() } else { cell.initProgressView() self?.showAlert(title: LocString("提示"), message: LocString("安装失败,请重试"), cancelText: nil) } } default: break } } func updateUserInteraction(_ isSyncing: Bool) { // collectionView.isUserInteractionEnabled = !isSyncing IsDailSyncing = isSyncing let navController = navigationController as? ZCNavigationController navController?.enableScreenEdgePanGestureRecognizer(!isSyncing) } deinit { print("deinit\(NSStringFromClass(type(of: self)))!!!!!!!") } } extension DailSyncViewController: UICollectionViewDelegate, UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return dialNum } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { // let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "DailCell", for: indexPath) as! DailCell let identifier: String = "DailCell\(indexPath.row)\(indexPath.section)" if identifierDic[identifier] == nil { collectionView.register(UINib(nibName: "DailCell", bundle: .main), forCellWithReuseIdentifier: identifier) identifierDic[identifier] = identifier } // collectionView.register(DailCell.self, forCellWithReuseIdentifier: "DailCell") let cell = collectionView.dequeueReusableCell(withReuseIdentifier: identifier, for: indexPath) as! DailCell // 此处可起到防止重用的作用 // for view in cell.contentView.subviews { //// if view != nil { // view.removeFromSuperview() //// } // // } switch CurDevice.platform { case ._816: cell.dailImageView.image = UIImage(contentsOfFile: "\(Bundle.main.resourcePath!)/dial/dialpreview280/\(indexPath.row)/preview_0\(indexPath.row)@2x") case ._818: cell.dailImageView.image = UIImage(contentsOfFile: "\(Bundle.main.resourcePath!)/dial/dialrtkpreview/\(indexPath.row)/preview@2x") case ._828: cell.dailImageView.image = UIImage(contentsOfFile: "\(Bundle.main.resourcePath!)/dial/dialrtkpreviewHQ7/\(indexPath.row)/preview") default: break } cell.cellClickClosure = {[weak self] in self?.syncDail(indexPath) } return cell } }