[WIP] Call tones

This commit is contained in:
Ali
2022-12-02 14:45:54 +04:00
parent 2345a1b8d2
commit 430dd4defd
7 changed files with 121 additions and 43 deletions

View File

@@ -110,6 +110,9 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode {
private let joinButtonTitleNode: ImmediateTextNode
private let joinButtonBackgroundNode: ASImageNode
private var previewImageNode: ASImageNode?
private var previewImage: UIImage?
private var audioLevelView: VoiceBlobView?
private let micButton: HighlightTrackingButtonNode
@@ -536,8 +539,18 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode {
guard let self, let data else {
return
}
let _ = self
let _ = data
var image: UIImage?
for i in 0 ..< 100 {
image = UIImage(data: data.subdata(in: i ..< data.count))
if image != nil {
break
}
}
self.previewImage = image
if let (size, leftInset, rightInset) = self.validLayout {
self.updateLayout(size: size, leftInset: leftInset, rightInset: rightInset, transition: .animated(duration: 0.2, curve: .easeInOut))
}
})
}
}
@@ -668,6 +681,26 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode {
staticTransition.updateFrame(node: self.joinButtonBackgroundNode, frame: CGRect(origin: CGPoint(), size: joinButtonFrame.size))
staticTransition.updateFrame(node: self.joinButtonTitleNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((joinButtonFrame.width - joinButtonTitleSize.width) / 2.0), y: floorToScreenPixels((joinButtonFrame.height - joinButtonTitleSize.height) / 2.0)), size: joinButtonTitleSize))
if let previewImage = self.previewImage {
let previewImageNode: ASImageNode
if let current = self.previewImageNode {
previewImageNode = current
} else {
previewImageNode = ASImageNode()
previewImageNode.clipsToBounds = true
previewImageNode.cornerRadius = 8.0
previewImageNode.contentMode = .scaleAspectFill
self.previewImageNode = previewImageNode
self.addSubnode(previewImageNode)
}
previewImageNode.image = previewImage
let previewSize = CGSize(width: 40.0, height: 40.0)
previewImageNode.frame = CGRect(origin: CGPoint(x: joinButtonFrame.minX - previewSize.width - 8.0, y: joinButtonFrame.minY + floor((joinButtonFrame.height - previewSize.height) / 2.0)), size: previewSize)
} else if let previewImageNode = self.previewImageNode {
self.previewImageNode = nil
previewImageNode.removeFromSupernode()
}
let micButtonSize = CGSize(width: 36.0, height: 36.0)
let micButtonFrame = CGRect(origin: CGPoint(x: size.width - rightInset - 7.0 - micButtonSize.width, y: floor((panelHeight - micButtonSize.height) / 2.0)), size: micButtonSize)
staticTransition.updateFrame(node: self.micButton, frame: micButtonFrame)