//
//  TSTGPStyleView.swift
//  AIRingtone
//
//  Created by 100Years on 2025/3/4.
//

class TSPromptStyleView:TSBaseView {
    
    var selectedValueBlock:((TSPTPStyleModel)->Void)?
    
    var dataArray: [TSPTPStyleModel] = [TSPTPStyleModel](){
        didSet{
            styleCollectionView.reloadData()
            if dataArray.count > 0 {
                self.styleCollectionView.selectItem(at: self.currentIndexPath, animated: true, scrollPosition: .centeredHorizontally)
            }
        }
    }
    
    lazy var layout: UICollectionViewFlowLayout = {
        let layout = UICollectionViewFlowLayout()
        layout.scrollDirection = .horizontal
        layout.itemSize = CGSize(width: 109, height: 110)
        layout.minimumInteritemSpacing = 0.0
        layout.minimumLineSpacing = 12.0
        layout.sectionInset = UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 16)
        return layout
    }()
    
    
    lazy var styleCollectionView: UICollectionView = {
        let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
        collectionView.delegate = self
        collectionView.dataSource = self
        collectionView.showsVerticalScrollIndicator = false
        collectionView.showsHorizontalScrollIndicator = false
        collectionView.backgroundColor = .clear
        collectionView.register(TSPTPSelectStyleCCell.self, forCellWithReuseIdentifier: TSPTPSelectStyleCCell.cellID)
        if #available(iOS 11.0, *) {
            collectionView.contentInsetAdjustmentBehavior = .never
        }
        return collectionView
    }()

    var currentIndexPath:IndexPath = IndexPath(item: 0, section: 0)
    
    
    lazy var titleView: TSTGPTitleView = {
        let titleView = TSTGPTitleView()
        titleView.titleLab.text = "Genre".localized
        return titleView
    }()
    
    
    override func creatUI() {
        
        let titleViewH = titleView.viewH
        
        addSubview(titleView)
        titleView.snp.makeConstraints { make in
            make.top.equalTo(0)
            make.leading.trailing.equalTo(0)
            make.height.equalTo(titleViewH)
        }
        
        contentView.snp.updateConstraints { make in
            make.top.equalTo(titleViewH)
        }
        
        currentIndexPath = IndexPath(item: 0, section: 0)
        contentView.addSubview(styleCollectionView)
        styleCollectionView.snp.makeConstraints { make in
            make.edges.equalToSuperview()
            make.height.equalTo(110)
        }
    }
    
    func unCheck(){
        styleCollectionView.deselectItem(at: currentIndexPath, animated: true)
    }
    
}

extension TSPromptStyleView: UICollectionViewDataSource ,UICollectionViewDelegate {
    
    public func numberOfSections(in collectionView: UICollectionView) -> Int {
        return 1
    }
    
    public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return dataArray.count
    }
    
    public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: TSPTPSelectStyleCCell.cellID, for: indexPath)
        if let cell = cell as? TSPTPSelectStyleCCell,let itemModel = dataArray.safeObj(At: indexPath.item){
            cell.itemModel = itemModel
        }
        return cell
    }

    public func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        if let model = dataArray.safeObj(At: indexPath.item){
            currentIndexPath = indexPath
            selectedValueBlock?(model)
        }
    }
}

class TSPTPSelectStyleCCell: TSBaseCollectionCell {
    
    static let cellID = "TSPTPSelectStyleCCell"

    override var isSelected: Bool{
        didSet{
            boardImageView.isHidden = isSelected ? false : true
        }
    }
    
    var itemModel:TSPTPStyleModel = TSPTPStyleModel(){
        didSet{
            imageView.image = UIImage(named: itemModel.imageName)
            textLabel.text = itemModel.imageText
        }
    }
    
    lazy var imageView: UIImageView = {
        let imageView = UIImageView()
        return imageView
    }()
    
    lazy var boardImageView: UIImageView = {
        let boardImageView = UIImageView.createImageView(imageName: "ptp_selected_border")
        boardImageView.isHidden = true
        return boardImageView
    }()

    lazy var textLabel: UILabel = {
        let textLabel = UILabel.createLabel(font: .font(size: 14),textColor: .white,textAlignment: .center,numberOfLines: 0)
        return textLabel
    }()
    
    override func creatUI() {
        
        bgContentView.addSubview(imageView)
        imageView.snp.makeConstraints { make in
            make.top.bottom.leading.trailing.equalTo(0)
        }
        
        bgContentView.addSubview(boardImageView)
        boardImageView.snp.makeConstraints { make in
            make.top.bottom.leading.trailing.equalTo(0)
        }
 
        bgContentView.addSubview(textLabel)
        textLabel.snp.makeConstraints { make in
            make.leading.trailing.equalTo(0)
            make.bottom.equalTo(-4)
            make.height.equalTo(37)
        }
    }
    
}

