added iOS source code
[wl-app.git] / iOS / WolneLektury / Screens / NewsDetails / Gallery / GalleryViewController.swift
diff --git a/iOS/WolneLektury/Screens/NewsDetails/Gallery/GalleryViewController.swift b/iOS/WolneLektury/Screens/NewsDetails/Gallery/GalleryViewController.swift
new file mode 100644 (file)
index 0000000..7e8176a
--- /dev/null
@@ -0,0 +1,128 @@
+//
+//  GalleryViewController.swift
+//  WolneLektury
+//
+//  Created by Pawel Dabrowski on 17/09/2018.
+//  Copyright © 2018 Fundacja Nowoczesna Polska. All rights reserved.
+//
+
+import UIKit
+
+class GalleryViewController: WLViewController {
+    
+    @IBOutlet weak var closeButton: UIButton!
+    
+    @IBOutlet weak var galleryCollectionView: UICollectionView!
+    
+    private var flowLayout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
+    
+    var dataSource: [String]!
+    
+    var countDidLayoutSubviews = 0
+    var collectionViewInitialized = false
+    var startIndex: Int!
+    
+    class func instance(photos: [String], startIndex: Int) -> GalleryViewController{
+        
+        let controller = GalleryViewController.instance()
+        controller.dataSource = photos
+        controller.startIndex = startIndex
+        return controller
+    }
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        closeButton.tintColor = UIColor.white
+        closeButton.accessibilityLabel = "close".localized
+        closeButton.accessibilityHint = "close".localized
+    }
+    
+    @IBAction func closeButtonAction(_ sender: Any) {
+        dismiss(animated: true, completion: nil)
+    }
+    
+    override func viewDidLayoutSubviews() {
+        super.viewDidLayoutSubviews()
+        
+        countDidLayoutSubviews += 1
+        
+        if countDidLayoutSubviews == 2 && collectionViewInitialized == false{
+            setupCollectionViewIfNeeded()
+        }
+    }
+    
+    private func setupCollectionViewIfNeeded(){
+        if collectionViewInitialized == false{
+            setupCollectionView()
+        }
+    }
+    
+    open override var preferredStatusBarStyle : UIStatusBarStyle {
+        return .lightContent
+    }
+
+    private func setupCollectionView(){// -> UICollectionView {
+        // Set up flow layout
+        collectionViewInitialized = true
+        
+        flowLayout.scrollDirection = UICollectionViewScrollDirection.horizontal
+        flowLayout.minimumInteritemSpacing = 0
+        flowLayout.minimumLineSpacing = 0
+        
+        flowLayout.itemSize = galleryCollectionView.bounds.size
+        
+        galleryCollectionView.collectionViewLayout = flowLayout
+        
+        galleryCollectionView.register(GalleryCell.self, forCellWithReuseIdentifier: "GalleryCell")
+        galleryCollectionView.dataSource = self
+        galleryCollectionView.delegate = self
+        galleryCollectionView.backgroundColor = UIColor.black
+        galleryCollectionView.isPagingEnabled = true
+        
+        galleryCollectionView.contentSize = CGSize(width: 1000.0, height: 1.0)
+        
+        galleryCollectionView.scrollToItem(
+            at: IndexPath(row: startIndex, section: 0),
+            at: [],
+            animated: false)
+    }
+}
+
+extension GalleryViewController: UICollectionViewDataSource {
+    
+    public func numberOfSections(in collectionView: UICollectionView) -> Int {
+        return 1
+    }
+    
+    public func collectionView(_ imageCollectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
+        return dataSource.count
+    }
+    
+    public func collectionView(_ imageCollectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
+        
+        let cell = imageCollectionView.dequeueReusableCell(withReuseIdentifier: "GalleryCell", for: indexPath) as! GalleryCell
+        cell.url = dataSource[indexPath.row]
+        cell.setScrollEnabled(scrollEnabled: true)
+        return cell
+    }
+}
+
+// MARK: UICollectionViewDelegate Methods
+extension GalleryViewController: UICollectionViewDelegate {
+    
+    public func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
+        if let cell = cell as? GalleryCell {
+            cell.configureForNewImageUrl()
+        }
+    }
+    
+    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
+        
+    }
+    
+    public func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
+        
+        // If the scroll animation ended, update the page control to reflect the current page we are on
+        //        updatePageControl()
+    }
+}