//
// ARCImagePickerController.swift
// PrintApp
//
// Created by Subhr Roy on 03/08/18.
// Copyright © 2018 Subhr Roy. All rights reserved.
//
import Foundation
import UIKit
/// ImagePickerType Enum
///
/// - Gallery: Gallery Type
/// - Camera: Camera Type
enum ImagePickerType : Int {
case Gallery
case Camera
}
/// ARCImagePickerProtocol
/// - Author: Subhra Roy
protocol ARCImagePickerProtocol {
func didFinishPickupAssestWith(pickerController : UIImagePickerController, data : [String : Any]) -> Void
func didCancelAssestPickupWith(pickerController : UIImagePickerController) -> Void
}
class ARCImagePickerController : NSObject{
private var pickerSourceType : ImagePickerType = .Gallery
private var pickerDelegate : ARCImagePickerProtocol?
public private(set) var imagePicker : UIImagePickerController!
/// ARCImagePickerController init()
///
/// - Parameters:
/// - pickerType: Type of Picker
/// - delegate: UIViewController as delegate instance
/// - Author: Subhra Roy
convenience init(pickerType : ImagePickerType, delegate : ARCImagePickerProtocol){
self.init()
self.pickerSourceType = pickerType
self.pickerDelegate = delegate
self.createImagePickerController()
}
override init(){
super.init()
}
/// Create Image Picker
/// - Author: Subhra Roy
private func createImagePickerController() -> Void{
self.imagePicker = UIImagePickerController()
self.imagePicker.delegate = self
self.imagePicker.allowsEditing = true
switch self.pickerSourceType {
case .Gallery:
self.imagePicker.sourceType = .photoLibrary
case .Camera:
if UIImagePickerController.isSourceTypeAvailable(.camera){
self.imagePicker.sourceType = .camera
}else{
self.imagePicker.sourceType = .photoLibrary
}
}
}
deinit {
print("ARC ImagePicker Dealloc")
}
}
//MArk:--------UIImagePickerController Delegate------------//
extension ARCImagePickerController : UIImagePickerControllerDelegate , UINavigationControllerDelegate{
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
//takeImage.image = info[UIImagePickerControllerOriginalImage] as? UIImage
self.pickerDelegate?.didFinishPickupAssestWith(pickerController: picker, data: info)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
self.pickerDelegate?.didCancelAssestPickupWith(pickerController: picker)
}
}