|
//
// 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)
}
}
|