//
//  WP_WallPaPerDetailsVC.swift
//  WallpaperHD_Live
//
//  Created by 忆海16 on 2024/7/22.
//

import UIKit
import SDWebImage
import Photos
import SVProgressHUD
import Alamofire
class WP_WallPaPerDetailsVC: WP_RootVC {
    @IBOutlet weak var bgView: UIView!
    
    @IBOutlet weak var backBtn: UIButton!
    
    
    @IBOutlet weak var preimageV: UIImageView!
    var model = WP_4KModel()
    
    var modeltype = WallpaperData()
    
    let activityView = UIActivityIndicatorView()
    
    var type:Int = 0
    override func viewDidLoad() {
        super.viewDidLoad()

        if type == 1{
            let imageURL = URL(string: model.preview ?? "")
            preimageV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle"))
        }else{
            let imageURL = URL(string: modeltype.source ?? "")
            preimageV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle"))
        }
        
        // 添加手势识别器到 UIView 上
        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(viewTapped))
        preimageV.isUserInteractionEnabled = true
        preimageV.addGestureRecognizer(tapGesture)
        
        activityView.center = CGPoint(x: self.view.center.x, y: self.view.center.y - kSafeArea_Top - 44)
        // 停止后，隐藏菊花
        activityView.hidesWhenStopped = true
        activityView.color = .black;
        activityView.style = UIActivityIndicatorView.Style.whiteLarge
        
        self.view.addSubview(activityView)
        
        backBtn.layer.cornerRadius = 20
        
        if type == 1{
            let model1 = WP_4KModel()
            model1.preview = self.model.preview
            model1.title = self.model.title
            model1.thumbnail = self.model.thumbnail
            model1.is_free = self.model.is_free
            model1.category = self.model.category
            model1.id = self.model.id
            model1.cnt_like = self.model.cnt_like
            HistoryManager.shared.addHistoryItem(item: model1)
        }else{
            let model1 = WallpaperData()
            model1.original = self.modeltype.original
            model1.previewThumb = self.modeltype.previewThumb
            model1.source = self.modeltype.source
            model1.banner = self.modeltype.banner
            HistoryjpgManager.shared.addHistoryItem(item: model1)
        }
    }


    @IBAction func saveBtn(_ sender: Any) {
        self.activityView.startAnimating()
        saveImageToPhotoLibrary()
        DispatchQueue.global().asyncAfter(deadline: .now() + 1.5) {
            DispatchQueue.main.asyncAfter(deadline: .now() + 0){
                self.activityView.stopAnimating()
                //                        self.view.makeToast("Save Success", duration: 1.5, position: .center)
                // 创建一个 UIAlertController
                let alertController = UIAlertController(title: "Successfully saved", message: "Do you need to set up a tutorial", preferredStyle: .alert)
                
                // 添加一个取消按钮
                alertController.addAction(UIAlertAction(title: "cancel", style: .cancel, handler: nil))
                
                // 添加一个确定按钮
                alertController.addAction(UIAlertAction(title: "Need", style: .default, handler: { action in
                    // 点击确定按钮后执行的操作
                    //                    print("点击了确定按钮")
//                    let vc = WA_TipVC()
//                    self.present(vc, animated: true)
                }))
                
                // 在当前视图控制器中 present 显示提示框
                self.present(alertController, animated: true, completion: nil)
            }
        }
    
    }
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        navigationController?.navigationBar.isHidden = true
    }
    
    func saveImageToPhotoLibrary() {
        guard let image = self.preimageV.image else {
            print("找不到要保存的图片")
            SVProgressHUD.showInfo(withStatus: "Can't find the picture to save")
            DispatchQueue.global().asyncAfter(deadline: .now() + 2.0) {
                SVProgressHUD.dismiss()
            }
            return
        }
        
        PHPhotoLibrary.requestAuthorization { status in
            switch status {
            case .authorized:
                self.saveImage(image: image)
            case .denied, .restricted:
                print("用户拒绝了访问相册权限")
                SVProgressHUD.showInfo(withStatus: "Album access denied")
                DispatchQueue.global().asyncAfter(deadline: .now() + 2.0) {
                    SVProgressHUD.dismiss()
                }
            case .notDetermined:
                print("用户尚未选择是否允许访问相册")
                SVProgressHUD.showInfo(withStatus: "You have not chosen whether to allow access to the album")
                DispatchQueue.global().asyncAfter(deadline: .now() + 2.0) {
                    SVProgressHUD.dismiss()
                }
            @unknown default:
                break
            }
        }
    }
    
    func saveImage(image: UIImage) {
        PHPhotoLibrary.shared().performChanges({
            //            创建向照片库添加新图像资产的请求
            PHAssetChangeRequest.creationRequestForAsset(from: image)
        }) { success, error in
            if success {
                print("图片保存成功")
                
                
            } else if let error = error {
                print("图片保存失败：\(error.localizedDescription)")
                SVProgressHUD.showError(withStatus: "Image saving failed:\(error.localizedDescription)")
                DispatchQueue.global().asyncAfter(deadline: .now() + 2.0) {
                    SVProgressHUD.dismiss()
                }
            }
        }
    }
    
    @IBAction func previewBtn(_ sender: Any) {
        UIView.animate(withDuration: 0.5, animations: {
            self.bgView.frame.origin.y += 0
            self.bgView.alpha = 0
            self.backBtn.isHidden = true
        })
        
        showView()
    }
    
    // 手势识别器的处理方法
    @objc func viewTapped() {
        // 根据当前 UIView 的位置和透明度进行不同的动画
        if bgView.frame.origin.y == UIScreen.main.bounds.height - bgView.frame.height {
            // 当 UIView 在底部时，执行向下移动并渐变消失的动画
            UIView.animate(withDuration: 0.5, animations: {
                self.bgView.frame.origin.y += self.bgView.frame.height
                self.bgView.alpha = 0
                self.backBtn.isHidden = true
            })
        } else {
            
            self.backBtn.isHidden = false
            // 当 UIView不在底部时，执行向上移动并渐变显示的动画
            UIView.animate(withDuration: 0.5, animations: {
                self.bgView.frame.origin.y -= self.bgView.frame.height
                self.bgView.alpha = 1
            })
        }
    }
    
    func showView() {
        // 加载预览视图并添加到当前视图控制器的视图上
        let previewView = Bundle.main.loadNibNamed("WA_PreView", owner: nil, options: nil)?.first as! WA_PreView
        previewView.flashView.layer.cornerRadius = 25
        previewView.cameraV.layer.cornerRadius = 25
        
        previewView.touchBlock = {
            
            self.backBtn.isHidden = false
            // 当 UIView 不在底部时，执行向上移动并渐变显示的动画
            UIView.animate(withDuration: 0.5, animations: {
                self.bgView.frame.origin.y -= 0
                self.bgView.alpha = 1
            })
        }
        view.addSubview(previewView)
        
        
        // 设置预览视图初始位置在屏幕左侧外面
        previewView.frame.origin.x = -previewView.frame.width
        
        // 执行动画
        UIView.animate(withDuration: 1.0) {
            // 将预览视图移回主视图中心
            previewView.frame = self.view.frame
        }
    }
    
    @IBAction func shareBtn(_ sender: Any) {
        self.activityView.startAnimating()
        
        // 创建要分享的图片
        guard let image = self.preimageV.image else {
            SVProgressHUD.showInfo(withStatus: "Can't find the image to share")
            DispatchQueue.global().asyncAfter(deadline: .now() + 2.0) {
                SVProgressHUD.dismiss()
            }
            print("找不到要分享的图片")
            return
        }
        
        // 创建要分享的对象数组
        let items: [Any] = [image]
        
        // 创建 UIActivityViewController 实例
        let activityViewController = UIActivityViewController(activityItems: items, applicationActivities: nil)
        
        // 设置 UIActivityViewController 的主题
        activityViewController.modalPresentationStyle = .popover
        
        // 在 iPad 上设置 UIActivityViewController 的位置
        if let popoverController = activityViewController.popoverPresentationController {
            popoverController.sourceView = self.view
            popoverController.sourceRect = CGRect(x: self.view.bounds.midX, y: self.view.bounds.midY, width: 0, height: 0)
            popoverController.permittedArrowDirections = []
        }
        
        // 弹出分享视图
        self.present(activityViewController, animated: true, completion: nil)
        
        DispatchQueue.main.asyncAfter(deadline: .now() + 0){
            self.activityView.stopAnimating()
        }
        
    }
    
    
    @IBAction func collectBtn(_ sender: Any) {
        if type == 1{
            let model1 = WP_4KModel()
            model1.preview = self.model.preview
            model1.title = self.model.title
            model1.thumbnail = self.model.thumbnail
            model1.is_free = self.model.is_free
            model1.category = self.model.category
            model1.id = self.model.id
            model1.cnt_like = self.model.cnt_like
            sc4kManager.shared.addHistoryItem(item: model1)
        }else{
            let model1 = WallpaperData()
            model1.original = self.modeltype.original
            model1.previewThumb = self.modeltype.previewThumb
            model1.source = self.modeltype.source
            model1.banner = self.modeltype.banner
            scjpgManager.shared.addHistoryItem(item: model1)
        }
        SVProgressHUD.showInfo(withStatus: "Collection successful")
        DispatchQueue.global().asyncAfter(deadline: .now() + 2.0) {
            SVProgressHUD.dismiss()
        }
        
    }
    
    
    @IBAction func back(_ sender: Any) {
        self.navigationController?.popViewController(animated: true)
    }
    
    
    
}
