--- /dev/null
+//
+// NewsDetailsViewController.swift
+// WolneLektury
+//
+// Created by Pawel Dabrowski on 15/09/2018.
+// Copyright © 2018 Fundacja Nowoczesna Polska. All rights reserved.
+//
+
+import UIKit
+
+class NewsDetailsViewController: WLViewController {
+
+ @IBOutlet weak var scrollView: UIScrollView!
+ @IBOutlet weak var backButton: UIButton!
+ @IBOutlet weak var headerView: UIView!
+ @IBOutlet weak var titleLabel: UILabel!
+
+ @IBOutlet weak var whenTitleLabel: UILabel!
+ @IBOutlet weak var whenDescLabel: UILabel!
+ @IBOutlet weak var whereTitleLabel: UILabel!
+ @IBOutlet weak var whereDescLabel: UILabel!
+ @IBOutlet weak var descLabel: UILabel!
+
+ @IBOutlet weak var shareButton: UIButton!
+ @IBOutlet weak var galleryCollectionView: UICollectionView!
+ @IBOutlet weak var pageControl: UIPageControl!
+ @IBOutlet weak var headerViewHeightLayoutConstraint: NSLayoutConstraint!
+
+ private var flowLayout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
+
+ var imageFullScreen = false
+ var countDidLayoutSubviews = 0
+ var collectionViewInitialized = false
+ var newsModel: NewsModel!
+ var smallHeaderHeight: CGFloat = 200
+
+ open override var preferredStatusBarStyle : UIStatusBarStyle {
+ return .lightContent
+ }
+
+ static func instance(newsModel: NewsModel) -> NewsDetailsViewController {
+ let controller = NewsDetailsViewController.instance()
+ controller.newsModel = newsModel
+ return controller
+ }
+
+ public var currentPage: Int {
+ get {
+ return Int(galleryCollectionView.contentOffset.x / galleryCollectionView.frame.size.width)
+ }
+ }
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+
+ title = newsModel.title
+ smallHeaderHeight = 44 + UIApplication.shared.statusBarFrame.size.height
+ updatePageControl()
+
+ DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
+ self.setupCollectionViewIfNeeded()
+ }
+ shareButton.layer.cornerRadius = 21
+ shareButton.addDropShadow()
+
+ titleLabel.text = newsModel.title
+ whenTitleLabel.text = "news_when".localized
+ whenDescLabel.text = newsModel.time
+ whereTitleLabel.text = "news_where".localized
+ whereDescLabel.text = newsModel.place
+
+ if let htmlString = try? NSAttributedString(html: newsModel.body){
+ descLabel.attributedText = htmlString
+ }
+ else {
+ descLabel.text = newsModel.body
+ }
+ }
+
+ func updatePageControl() {
+ pageControl.currentPage = currentPage
+ }
+
+ private func setupCollectionViewIfNeeded(){
+ if collectionViewInitialized == false{
+ setupCollectionView()
+ }
+ }
+
+ private func setupCollectionView(){// -> UICollectionView {
+ // Set up flow layout
+ collectionViewInitialized = true
+
+ flowLayout.scrollDirection = UICollectionViewScrollDirection.horizontal
+ flowLayout.minimumInteritemSpacing = 0
+ flowLayout.minimumLineSpacing = 0
+
+ let size = galleryCollectionView.bounds.size
+ flowLayout.itemSize = size
+
+ galleryCollectionView.collectionViewLayout = flowLayout
+ galleryCollectionView.register(UINib (nibName: "SimpleGalleryCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "SimpleGalleryCollectionViewCell")
+ galleryCollectionView.dataSource = self
+ galleryCollectionView.delegate = self
+ galleryCollectionView.backgroundColor = UIColor.black
+ galleryCollectionView.isPagingEnabled = true
+
+ galleryCollectionView.contentSize = CGSize(width: 1000.0, height: 1.0)
+
+ galleryCollectionView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(NewsDetailsViewController.collectionViewTapped)))
+ }
+
+ @objc func collectionViewTapped() {
+ guard newsModel.gallery_urls.count > 0 else{
+ return
+ }
+
+ navigationController?.present(GalleryViewController.instance(photos: newsModel.gallery_urls,startIndex: currentPage), animated: true, completion: nil)
+ }
+
+ @IBAction func shareButtonAction(_ sender: UIButton) {
+ if let url = newsModel?.url {
+
+ self.share(string: url, button: sender)
+
+ }
+ }
+}
+
+extension NewsDetailsViewController: UICollectionViewDataSource {
+
+ public func numberOfSections(in collectionView: UICollectionView) -> Int {
+ return 1
+ }
+
+ public func collectionView(_ imageCollectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
+ return newsModel.gallery_urls.count
+ }
+
+ public func collectionView(_ imageCollectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
+
+ let cell = imageCollectionView.dequeueReusableCell(withReuseIdentifier: "SimpleGalleryCollectionViewCell", for: indexPath) as! SimpleGalleryCollectionViewCell
+ cell.setup(imageUrlString: newsModel.gallery_urls[indexPath.row])
+ return cell
+ }
+}
+
+extension NewsDetailsViewController: UICollectionViewDelegate {
+
+ public func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
+
+ // If the scroll animation ended, update the page control to reflect the current page we are on
+ updatePageControl()
+ }
+}