//
//  BuildTimelapseViewController.swift
//
//  Created by Adam Jensen on 5/9/15.
//

import JGProgressHUD
import JoePro
import UIKit

class BuildTimelapseViewController: UIViewController {
  @IBOutlet weak var resolutionSegmentedControl: UISegmentedControl!
  @IBOutlet weak var speedSlider: UISlider!
  @IBOutlet weak var removeFisheyeSlider: UISwitch!
  
  var album: String?
  var camera: JoeProCamera?
  var timeLapseBuilder: TimeLapseBuilder?

  init(camera: JoeProCamera, album: String) {
    self.camera = camera
    self.album = album
    
    super.init(nibName: "BuildTimelapseViewController", bundle: nil)
  }

  required init(coder aDecoder: NSCoder) {
      super.init(coder: aDecoder)
  }
  
  override func viewDidLoad() {
    super.viewDidLoad()
  }
  
  @IBAction func buildButtonTapped(sender: AnyObject) {
    if let camera = camera,
       let album = album {
        
        let progressHUD = JGProgressHUD(style: .Light)
        progressHUD.textLabel.text = "Building your timelapse..."
        progressHUD.indicatorView = JGProgressHUDRingIndicatorView(HUDStyle: .Light)
        progressHUD.setProgress(0, animated: true)
        progressHUD.showInView(view)
        
        camera.listOfVideos(album) { (videos) -> Void in
          self.timeLapseBuilder = TimeLapseBuilder(photoURLs: videos)
          self.timeLapseBuilder!.build(
            { (progress: NSProgress) in
              NSLog("Progress: \(progress.completedUnitCount) / \(progress.totalUnitCount)")
              dispatch_async(dispatch_get_main_queue(), {
                let progressPercentage = Float(progress.completedUnitCount) / Float(progress.totalUnitCount)
                progressHUD.setProgress(progressPercentage, animated: true)
              })
            },
            success: { url in
              NSLog("Output written to \(url)")
              dispatch_async(dispatch_get_main_queue(), {
                progressHUD.dismiss()
              })
            },
            failure: { error in
              NSLog("failure: \(error)")
              dispatch_async(dispatch_get_main_queue(), {
                progressHUD.dismiss()
              })
            }
          )
        }
    }
  }
}