Blame view

App/camera/ConfirmViewController/MyConfirmViewController.swift 4.83 KB
1341bf603   Trịnh Văn Quân   version 1.1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
  import UIKit
  import Photos
  
  public class MyConfirmViewController: UIViewController {
      let imageView = UIImageView()
      var vBoard: Board!
      @IBOutlet weak var cancelButton: UIButton!
      @IBOutlet weak var confirmButton: UIButton!
  
      public var userData: Any?
      public var onComplete: CameraViewCompletion?
      var asset: PHAsset!
  
      public init(asset: PHAsset) {
          self.asset = asset
          super.init(nibName: "MyConfirmViewController", bundle: CameraGlobals.shared.bundle)
      }
  
      public override func viewDidLoad() {
          super.viewDidLoad()
  
          view.backgroundColor = UIColor.black
          imageView.contentMode = .scaleAspectFit
          view.insertSubview(imageView, at: 0)
          configUserData()
  
          guard let asset = asset else { return }
          let spinner = showSpinner()
          disable()
          _ = SingleImageFetcher()
                  .setAsset(asset)
                  .setTargetSize(largestPhotoSize())
                  .onSuccess { image in
                      self.configureWithImage(image)
                      self.hideSpinner(spinner)
                      self.enable()
                  }
                  .onFailure { error in
                      self.hideSpinner(spinner)
                  }
                  .fetch()
      }
  
      fileprivate func configUserData() {
fbd62afcf   Trịnh Văn Quân   version 1.2.2
45
46
47
48
49
50
51
52
53
54
55
56
          if let boardObj = userData as? BoardObj, let shootItem = boardObj.shootItem, let ctruong = boardObj.cTruong, let singboard = ctruong.signboard {
              if (singboard > 0) {
                  vBoard = Board()
                  vBoard.translatesAutoresizingMaskIntoConstraints = false
                  self.view.insertSubview(vBoard, at: 1)
                  NSLayoutConstraint.activate([vBoard.topAnchor.constraint(equalTo: view.topAnchor),
                                               vBoard.leftAnchor.constraint(equalTo: view.leftAnchor),
                                               vBoard.rightAnchor.constraint(equalTo: view.rightAnchor),
                                               vBoard.bottomAnchor.constraint(equalTo: view.bottomAnchor)])
                  vBoard.initData(ctruong: ctruong, shootItem: shootItem);
              }
          }
1341bf603   Trịnh Văn Quân   version 1.1
57
58
59
60
61
      }
  
      public override func viewWillLayoutSubviews() {
          super.viewWillLayoutSubviews()
          imageView.frame = view.frame
1341bf603   Trịnh Văn Quân   version 1.1
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
      }
  
      //region utils ========
      private func configureWithImage(_ image: UIImage) {
          buttonActions()
          imageView.image = image
          imageView.sizeToFit()
          view.setNeedsLayout()
      }
  
      private func buttonActions() {
          confirmButton.action = { [weak self] in self?.confirmPhoto() }
          cancelButton.action = { [weak self] in self?.cancel() }
      }
  
      internal func cancel() {
          onComplete?(nil, nil)
      }
  
      internal func confirmPhoto() {
          disable()
  
          imageView.isHidden = true
          let spinner = showSpinner()
          var fetcher = SingleImageFetcher()
                  .onSuccess { image in
                      self.onComplete?(image, self.asset)
                      self.hideSpinner(spinner)
                      self.enable()
                  }
                  .onFailure { error in
                      self.hideSpinner(spinner)
                      self.showNoImageScreen(error)
                  }
                  .setAsset(asset)
  
          fetcher = fetcher.fetch()
      }
  
      func showSpinner() -> UIActivityIndicatorView {
          let spinner = UIActivityIndicatorView()
          spinner.activityIndicatorViewStyle = .white
          spinner.center = view.center
          spinner.startAnimating()
  
          view.addSubview(spinner)
          view.bringSubview(toFront: spinner)
  
          return spinner
      }
  
      func hideSpinner(_ spinner: UIActivityIndicatorView) {
          spinner.stopAnimating()
          spinner.removeFromSuperview()
      }
  
      func disable() {
          confirmButton.isEnabled = false
      }
  
      func enable() {
          confirmButton.isEnabled = true
      }
  
      func showNoImageScreen(_ error: NSError) {
          let permissionsView = PermissionsView(frame: view.bounds)
  
          let desc = localizedString("error.cant-fetch-photo.description")
  
          permissionsView.configureInView(view, title: error.localizedDescription, descriptiom: desc, completion: cancel)
      }
  
      public required init?(coder aDecoder: NSCoder) {
          super.init(coder: aDecoder)
      }
  
      public override var prefersStatusBarHidden: Bool {
          return true
      }
  
      public override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
          return UIStatusBarAnimation.slide
      }
  
      override open var supportedInterfaceOrientations: UIInterfaceOrientationMask {
          return UIInterfaceOrientationMask.landscape
      }
      //endregion
  }
  
  public class BoardObj {
fbd62afcf   Trịnh Văn Quân   version 1.2.2
153
154
      var cTruong: CongTruong?;
      var shootItem: ShootItem?;
1341bf603   Trịnh Văn Quân   version 1.1
155

fbd62afcf   Trịnh Văn Quân   version 1.2.2
156
157
158
159
      init(cTruong: CongTruong?, shootItem: ShootItem?) {
          self.cTruong = cTruong;
          self.shootItem = shootItem;
      }
1341bf603   Trịnh Văn Quân   version 1.1
160
  }