CardDetailVC.swift 9.38 KB
//
//  CardDetailVC.swift
//  Twear
//
//  Created by yangbin on 2022/1/19.
//

import UIKit
import YYText
import SnapKit
import TZImagePickerController
import MBProgressHUD
import swiftScan

class CardDetailVC: UIViewController {
    
    var app: String = ""
    
    var qrString: String = ""
    
    @IBOutlet weak var scanImageView: UIImageView!
    @IBOutlet weak var noCardImageView: UIImageView!
    @IBOutlet weak var scanView: UIView!
    
    @IBOutlet weak var syncButton: UIButton!
    private let cardDic: [String: String] = ["微信": "WechatCard", "QQ": "QQCard", "Facebook": "FacebookCard", "WhatsApp": "WhatsAppCard", "Twitter": "TwitterCard"]
    private let appImageDic: [String: String] = ["微信": "push_wechat", "QQ": "push_qq", "Facebook": "push_Facebook", "WhatsApp": "push_WhatsApp", "Twitter": "push_Twitter"]
    
    var containStr: String = ""
    
    lazy var detailLabel: YYLabel = {
        let text = YYLabel()
        text.textVerticalAlignment = .top
        text.textAlignment = .center
        text.numberOfLines = 0
//        text.backgroundColor = .red
        text.textColor = .black
        view.addSubview(text)
        text.snp.makeConstraints { (make) in
            make.left.equalToSuperview().offset(14)
            make.right.equalToSuperview().offset(-14)
            make.top.equalTo(scanImageView.snp.bottom).offset(35)
            make.bottom.equalToSuperview().offset(-100)
        }
        return text
    }()
    lazy var activity: UIActivityIndicatorView = {
        let ac = UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 36, height: 36))
        ac.color = .white
        ac.hidesWhenStopped = true
        view.addSubview(ac)
        ac.center = syncButton.center
        return ac
    }()
    override func viewDidLoad() {
        super.viewDidLoad()
        if AppSettings.shared.language == .Chinese || AppSettings.shared.language == .Japanese {
            title = LocString(app) + LocString("名片")
        } else {
            title = LocString(app) + " " + LocString("名片")
        }
        let str = LocString("绑定步骤:\n1.打开") + LocString(app) + LocString(",保存“我的二维码”到本地;\n2.打开YTWatch,进入设备-名片-") + LocString(app) + LocString(";\n3.点击上方二维码区域,添加或更换") + LocString(app) + LocString("二维码;\n4.点击下方绑定按钮,将二维码名片绑定至手表;\n\n\n注意事项:\n1.建议上传黑白颜色的二维码;\n2.请务必保持网络畅通;\n3.绑定过程中请将手表靠近手机,请勿操作手机和手表;\n4.确保手表电量充足。\n\n\n不会操作?") +  LocString("点我")
        let text = NSMutableAttributedString(string: str, attributes: [.font: RegularFont(11), .foregroundColor: UIColor.rgbColorFromHex(0x808080)])
        let range = NSRange(text.string.range(of: LocString("点我"))!, in: "")

        text.yy_setTextHighlight(range, color: UIColor.rgbColorFromHex(0xDD000B), backgroundColor: .clear) {[weak self] (containerView, text, range, rect) in
            let vc = UIStoryboard.loadViewControllerIdentifier(storyboardName: "Setting", identifier: "CardProcessVC") as! CardProcessVC
            vc.app = (self?.app)!
            self?.navigationController?.pushViewController(vc, animated: true)
            print("123")
        }
        
        text.yy_setTextUnderline(YYTextDecoration(style: .single, width: 1, color: UIColor.rgbColorFromHex(0xDD000B)), range: range)
        detailLabel.attributedText = text

        scanView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(photoAlbum)))
        
        if let image = UIImage.getImageFromPath(cardDic[app]!) {
            noCardImageView.isHidden = true
            scanImageView.image = image
            let arrayResult = LBXScanWrapper.recognizeQRImage(image: image)
            if arrayResult.count > 0, let result = arrayResult[0].strScanned {
//                self?.createQR(string: result)
                qrString = result
                print(qrString)
            }
        } else {
            noCardImageView.isHidden = false
            updateButton(false)
        }
        
        
        switch app {//["微信", "QQ", "Facebook", "WhatsApp", "Twitter"]
        case "QQ":
            containStr = "qq.com"
        case "微信":
            containStr = "wechat.com"
        case "WhatsApp":
            containStr = "wa.me"
        case "Twitter":
            containStr = "twitter.com"
        case "Facebook":
            containStr = "facebook.com"
        default:
            break
        }
    }
    
    func createQR(string: String) {
       // qrView.hidden = false
       // tView.hidden = true
        if string.count > 0 {
//            let image = UIImage.createQRForString(qrString: string, qrImageName: appImageDic[app]!)
//            scanImageView.image = image
//            return

            let qrImg = LBXScanWrapper.createCode(codeType: "CIQRCodeGenerator", codeString: string, size: CGSize(width: 400, height: 400), qrColor: UIColor.black, bkColor: UIColor.white)
            let logoImg = UIImage(named: appImageDic[app]!)
          
            let image = LBXScanWrapper.addImageLogo(srcImg: qrImg!, logoImg: logoImg!, logoSize: CGSize(width: 85, height: 85))
            if image.saveImageToPath(cardDic[app]!) {
                scanImageView.image = image
                noCardImageView.isHidden = true
                qrString = string
                updateButton(false)
                
            }
           
        }
    }

    
    @IBAction func syncCard(_ sender: Any) {
//        _ = MBProgressHUD.showMessage("")
        if qrString.count == 0 || syncButton.titleLabel?.text == LocString("绑定完成") {return}
        syncButton.setTitle(LocString(""), for: .normal)
        
//        let activity = UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 36, height: 36))
//        activity.color = .white
//        view.addSubview(activity)
//        activity.center = syncButton.center
        activity.startAnimating()
//        let hud = MBProgressHUD.showAdded(to: syncButton, animated: true)
//        hud.bezelView.style = .solidColor
//        hud.margin = 0
//        hud.bezelView.backgroundColor = .clear
        
        var type: Int = 0
        switch app {//["微信", "QQ", "Facebook", "WhatsApp", "Twitter"]
        case "QQ":
            type = 0
        case "微信":
            type = 1
        case "WhatsApp":
            type = 2
        case "Twitter":
            type = 3
        case "Facebook":
            type = 4
        default:
            break
        }
        BluetoothManager.shared.setCard(qrString, type: type) {[weak self] error in
            if error == nil {
                self?.updateButton(true)
            } else {
                self?.updateButton(false)
            }
//            hud.hide(animated: true)
            self?.activity.stopAnimating()
//            print("卡片设置--\(error)")
        }
        
        
    }
    
    func updateButton(_ status: Bool) {
        if status {
            syncButton.backgroundColor = LineColor
            syncButton.setTitle(LocString("绑定完成"), for: .normal)
        } else {
            if qrString.count == 0 {
                syncButton.backgroundColor = LineColor
            } else {
                syncButton.backgroundColor = TintColor
            }
            
            syncButton.setTitle(LocString("绑定"), for: .normal)
        }
    }
    
    //相册
    @objc private func photoAlbum() {
        if PHPhotoLibrary.authorizationStatus().rawValue == 2 {
            MBProgressHUD.show(LocString("请在“设置-隐私-照片“选项中,允许'YTWatch'访问你的照片"))
            return
        }
        let picker = TZImagePickerController(maxImagesCount: 1, columnNumber: 3, delegate: self)
        picker?.modalPresentationStyle = .fullScreen
        picker?.allowPickingOriginalPhoto = false //原图
        picker?.allowPickingVideo = false //视频
        picker?.allowCameraLocation = false //位置
        picker?.allowPickingGif = false //GIF
        picker?.allowTakePicture = false //内部拍照
        picker?.allowCrop = false //裁剪
        
        picker?.didFinishPickingPhotosHandle = {[weak self] (photos, assets, isSelectOriginalPhoto) -> Void in
            if let images = photos {
                let arrayResult = LBXScanWrapper.recognizeQRImage(image: images[0])
                if arrayResult.count > 0, let result = arrayResult[0].strScanned {
                    if result.range(of: (self?.containStr)!, options: .caseInsensitive) != nil {
                        self?.createQR(string: result)
                    } else {
                        MBProgressHUD.showh(LocString("二维码无法识别"))
                    }
                } else {
                    MBProgressHUD.showh(LocString("未识别到二维码"))
                }
            }
        }
        self.present(picker!, animated: true, completion: nil)
    }

    
    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destination.
        // Pass the selected object to the new view controller.
    }
    */

}
extension CardDetailVC: UIImagePickerControllerDelegate, UINavigationControllerDelegate, TZImagePickerControllerDelegate {
    
    
}