Blame view

Pods/Toaster/Sources/ToastCenter.swift 1.47 KB
d774f0637   Trịnh Văn Quân   fisrt comit
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
  /*
   * ToastCenter.swift
   *
   *            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
   *                    Version 2, December 2004
   *
   * Copyright (C) 2013-2015 Su Yeol Jeon
   *
   * Everyone is permitted to copy and distribute verbatim or modified
   * copies of this license document, and changing it is allowed as long
   * as the name is changed.
   *
   *            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
   *   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
   *
   *  0. You just DO WHAT THE FUCK YOU WANT TO.
   *
   */
  
  import UIKit
  
  open class ToastCenter {
  
    // MARK: Properties
  
    private let queue: OperationQueue = {
      let queue = OperationQueue()
      queue.maxConcurrentOperationCount = 1
      return queue
    }()
  
    open var currentToast: Toast? {
      return self.queue.operations.first as? Toast
    }
  
    open static let `default` = ToastCenter()
  
  
    // MARK: Initializing
  
    init() {
      NotificationCenter.default.addObserver(
        self,
        selector: #selector(self.deviceOrientationDidChange),
        name: .UIDeviceOrientationDidChange,
        object: nil
      )
    }
  
  
    // MARK: Adding Toasts
  
    open func add(_ toast: Toast) {
      self.queue.addOperation(toast)
    }
  
  
    // MARK: Cancelling Toasts
  
    open func cancelAll() {
      for toast in self.queue.operations {
        toast.cancel()
      }
    }
  
  
    // MARK: Notifications
  
    dynamic func deviceOrientationDidChange() {
      if let lastToast = self.queue.operations.first as? Toast {
        lastToast.view.setNeedsLayout()
      }
    }
  
  }