mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-09-04 20:00:53 +00:00
61 lines
1.5 KiB
Swift
61 lines
1.5 KiB
Swift
import Foundation
|
|
import Display
|
|
import AsyncDisplayKit
|
|
import LegacyComponents
|
|
import SwiftSignalKit
|
|
|
|
enum RadialPlayPauseMode {
|
|
case play
|
|
case pause
|
|
}
|
|
|
|
class RadialPlayPauseContentNode: RadialStatusContentNode {
|
|
var color: UIColor {
|
|
didSet {
|
|
self.leftShape.fillColor = self.color.cgColor
|
|
self.rightShape.fillColor = self.color.cgColor
|
|
self.setNeedsDisplay()
|
|
}
|
|
}
|
|
|
|
private var effectiveProgress: CGFloat = 1.0 {
|
|
didSet {
|
|
self.setNeedsDisplay()
|
|
}
|
|
}
|
|
|
|
private var animationCompletionTimer: SwiftSignalKit.Timer?
|
|
|
|
private var isAnimatingProgress: Bool {
|
|
return self.pop_animation(forKey: "progress") != nil || self.animationCompletionTimer != nil
|
|
}
|
|
|
|
private var enqueuedReadyForTransition: (() -> Void)?
|
|
|
|
private let leftShape = CAShapeLayer()
|
|
private let rightShape = CAShapeLayer()
|
|
|
|
init(color: UIColor, mode: RadialPlayPauseMode) {
|
|
self.color = color
|
|
|
|
super.init()
|
|
|
|
self.leftShape.fillColor = self.color.cgColor
|
|
self.rightShape.fillColor = self.color.cgColor
|
|
|
|
self.isLayerBacked = true
|
|
self.isOpaque = false
|
|
|
|
self.layer.addSublayer(self.leftShape)
|
|
self.layer.addSublayer(self.rightShape)
|
|
}
|
|
|
|
override func enqueueReadyForTransition(_ f: @escaping () -> Void) {
|
|
if self.isAnimatingProgress {
|
|
self.enqueuedReadyForTransition = f
|
|
} else {
|
|
f()
|
|
}
|
|
}
|
|
}
|