// // GroupPageController.swift // PaiAi // // Created by zhengjianfei on 16/3/28. // Copyright © 2016年 FFIB. All rights reserved. // import UIKit import RxSwift import RxCocoa import PaiaiUIKit import PaiaiDataKit final class GroupPageController: UIViewController { // MARK: Storyboard property @IBOutlet var collectionView: UICollectionView! @IBOutlet weak var reportBtn: UIButton! @IBOutlet weak var photographLabel: UILabel! // @IBOutlet weak var progressView: FFProgress! @IBOutlet weak var photographBtn: UIButton! // MARK: custom UI property var maskImageView = UIImageView() var maskLabel = UILabel() // MARK: data property // var groupModel = GroupModel() { // didSet { // groupViewModel.groupModel = groupModel // } // } var groupViewModel = GroupPageViewModel() var isCreate = false var isScan = false let disposeBag = DisposeBag() // MARK: view function override func viewDidLoad() { super.viewDidLoad() configureInterface() configureRxDataSource() configureRelatedData() } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(true) configureNavigationBar() } override func backToController() { if isScan { popToRootController() } else { popController() } } // MARK: init interface func configureNavigationBar() { navigationController?.navigationBar.setBackgroundImage(UIImage(named: "标题栏 copy 2"), for: .default) navigationItem.setRightBars(buttonSpace: 0, images: [UIImage(named: "二维码"), UIImage(named: "更多-右上角-1")], actions: [#selector(showEWM), #selector(pushToGroupDetailController)], target: self) titleWithbackBar = "" let barView = UIView(frame: CGRect(x: 0, y: 0, width: kScreenWidth - 150, height: 40)) let label = UILabel() // label.text = groupModel.group_name label.textColor = UIColor.white let labelWidth = min(label.sizeThatFits(CGSize(width: kScreenWidth - 200, height: 40)).width, kScreenWidth - 200) let imageView = UIImageView(frame: CGRect(x: 0, y: 2, width: 40, height: 40)) imageView.center = CGPoint(x: barView.center.x - labelWidth / 2, y: barView.center.y) // imageView.setImageWithNullableURL(groupModel.group_avatar, placeholderImage: UIImage(named: "Group\(groupModel.group_default_avatar)")) imageView.cornerRadius = 20 label.frame = CGRect(x: 40 + imageView.x + 5, y: 2, width: kScreenWidth - 200, height: 40) barView.addSubViews([imageView, label]) navigationItem.titleView = barView } func configureRelatedData() { fetchGroupData() // addGroupInfoToRecent(groupModel) } func configureRxDataSource() { do { collectionView.register(UICollectionReusableView.classForCoder(), forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: "collectionViewHeaderView") collectionView.register(UINib(nibName: "PhotoCell", bundle: nil), forCellWithReuseIdentifier: "photoCell") // groupViewModel.observer // .bind(to: collectionView.rx.items(cellIdentifier: "photoCell", cellType: PhotoCell.self)) { // (row, model, cell) in //// cell.setInfo(model) // }.disposed(by: disposeBag) } do { // let emptyModel = groupViewModel.observer.map {!$0.isEmpty} // emptyModel.bind(to: maskImageView.rx.isHidden).disposed(by: disposeBag) // emptyModel.bind(to: maskLabel.rx.isHidden).disposed(by: disposeBag) } } func configureInterface() { do { // maskImageView.image = UIImage(qr: "http://xfoto.com.cn/g/" + groupModel.group_id, size: nil) // maskImageView.isHidden = true // maskImageView.translatesAutoresizingMaskIntoConstraints = false // view.addSubview(maskImageView) // NSLayoutConstraint.alignCenter(maskImageView, secondView: view) // maskImageView.setLayoutWidth(200) // maskImageView.setLayoutHeight(200) } do { view.addSubview(maskLabel) maskLabel.font = UIFont.systemFont(ofSize: 14) maskLabel.textColor = UIColor.gray maskLabel.isHidden = true maskLabel.translatesAutoresizingMaskIntoConstraints = false // NSLayoutConstraint.centerX(maskLabel, secondView: view) // NSLayoutConstraint.verticalSpace(maskImageView, secondView: maskLabel, space: -5) maskLabel.text = "邀请朋友扫描二维码加入群" maskLabel.sizeToFit() } if isCreate { // photographLabel.addGraduallyIntoAnimation() // photographBtn.addZoomAnimation() maskLabel.isHidden = false maskImageView.isHidden = false } // reportBtn.isHidden = !(UserDefaults.Account.bool(forKey: .isAudit)) } // MARK: the data processing func fetchGroupData() { // groupViewModel.groupModel = groupModel // collectionView.mj_header = MJRefreshNormalHeader(refreshingBlock: {[weak self] in // if let weakself = self { // weakself.groupViewModel.fetchLocalData(handler: { // weakself.collectionView.mj_header.endRefreshing() // }) // } // }) // collectionView.mj_header.beginRefreshing() } // MARK: Storyboard button function override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if let detailController = segue.destination as? GroupDetailController { // detailController.groupId = groupModel.group_id } } @IBAction func reportPosition(_ sender: UIButton) { let alert = UIAlertController(title: "提示", message: "确定汇报地理位置给导游", preferredStyle: .alert) let action1 = UIAlertAction(title: "取消", style: .cancel, handler: nil) let action2 = UIAlertAction(title: "确定", style: .default) { (_) in // let tour = TourLocationManager.sharedManager // tour.gathered_at = 500 // tour.startLocation() } alert.addAction(action1) alert.addAction(action2) present(alert, animated: true, completion: nil) } // MARK: button function @objc func backToHomeViewController() { let pushedViewController = navigationController?.viewControllers[(navigationController?.viewControllers.count)! - 2] ?? UIViewController() // if pushedViewController.isMember(of: ScanQRViewController.classForCoder()) || //// pushedViewController.isMember(of: PersonInformationController.classForCoder()) { // navigationController?.popToRootViewController(animated: true) // } _ = navigationController?.popViewController(animated: true) } @objc func pushToGroupDetailController() { let ctl = UIStoryboard.groupDetailBoard.instantiateController(GroupDetailController.self) // ctl.groupId = groupModel.group_id navigationController?.pushViewController(ctl, animated: true) } @objc func showEWM() { let ctl = UIStoryboard.groupDetailBoard.instantiateController(ShowGroupQRController.self) // ctl.data = groupViewModel presentController(ctl) } } extension GroupPageController: UICollectionViewDelegate, UICollectionViewDelegateFlowLayout { func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { return CGSize.init(width: 0, height: 0) } func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { let ctl = UIStoryboard.photoDetailBoard.instantiateInitialViewController() as! DetailPageController // ctl.datas = groupViewModel.allData() ctl.currentPhotoIndex = indexPath.row ctl.isHiddenEnterView = true navigationController?.pushViewController(ctl, animated: true) } } // MARK: imagepicker delegate extension GroupPageController: UIImagePickerControllerDelegate { @IBAction func takePhotoAction() { // if HardwareAuthorization.isAuthroizationCamera() { let pickerCtl = UIImagePickerController() #if (arch(i386) || arch(x86_64)) pickerCtl.sourceType = .photoLibrary #else pickerCtl.sourceType = .camera #endif // pickerCtl.delegate = self present(pickerCtl, animated: true, completion: nil) // } else { let alert = UIAlertView(title: "拒绝访问", message: "请在设置-隐私-相机中允许访问相机", delegate: nil, cancelButtonTitle: "确定") alert.show() // } } func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: Any]) { dismiss(animated: true, completion: nil) // guard let image = info[UIImagePickerControllerOriginalImage] as? UIImage else { // return // } // groupViewModel.submitPhotoData(image: image, success: {() in // FFToastView.hideLoadingToast() // }) // FFToastView.showLoadingToast(inView: view, blockSuperView: false) } func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { dismiss(animated: true, completion: nil) } }