This commit is contained in:
Ali
2023-08-08 23:23:47 +03:00
parent 2d1bac5a46
commit f2da1e2315
30 changed files with 2813 additions and 982 deletions

View File

@@ -64,6 +64,7 @@ private final class ContextControllerActionsListActionItemNode: HighlightTrackin
private let titleLabelNode: ImmediateTextNode
private let subtitleNode: ImmediateTextNode
private let iconNode: ASImageNode
private let additionalIconNode: ASImageNode
private var badgeIconNode: ASImageNode?
private var animationNode: AnimationNode?
@@ -99,6 +100,10 @@ private final class ContextControllerActionsListActionItemNode: HighlightTrackin
self.iconNode = ASImageNode()
self.iconNode.isAccessibilityElement = false
self.iconNode.isUserInteractionEnabled = false
self.additionalIconNode = ASImageNode()
self.additionalIconNode.isAccessibilityElement = false
self.additionalIconNode.isUserInteractionEnabled = false
super.init()
@@ -110,6 +115,7 @@ private final class ContextControllerActionsListActionItemNode: HighlightTrackin
self.addSubnode(self.titleLabelNode)
self.addSubnode(self.subtitleNode)
self.addSubnode(self.iconNode)
self.addSubnode(self.additionalIconNode)
self.isEnabled = self.canBeHighlighted()
@@ -305,6 +311,14 @@ private final class ContextControllerActionsListActionItemNode: HighlightTrackin
iconSize = iconImage?.size
}
let additionalIcon = self.item.additionalLeftIcon?(presentationData.theme)
var additionalIconSize: CGSize?
self.additionalIconNode.image = additionalIcon
if let additionalIcon {
additionalIconSize = additionalIcon.size
}
let badgeSize: CGSize?
if let badge = self.item.badge {
var badgeImage: UIImage?
@@ -422,7 +436,10 @@ private final class ContextControllerActionsListActionItemNode: HighlightTrackin
titleFrame = titleFrame.offsetBy(dx: 0.0, dy: titleVerticalOffset)
}
var subtitleFrame = CGRect(origin: CGPoint(x: sideInset, y: titleFrame.maxY + titleSubtitleSpacing), size: subtitleSize)
if self.item.iconPosition == .left {
if self.item.additionalLeftIcon != nil {
titleFrame = titleFrame.offsetBy(dx: 26.0, dy: 0.0)
subtitleFrame = subtitleFrame.offsetBy(dx: 26.0, dy: 0.0)
} else if self.item.iconPosition == .left {
titleFrame = titleFrame.offsetBy(dx: 36.0, dy: 0.0)
subtitleFrame = subtitleFrame.offsetBy(dx: 36.0, dy: 0.0)
}
@@ -444,12 +461,24 @@ private final class ContextControllerActionsListActionItemNode: HighlightTrackin
x: self.item.iconPosition == .left ? iconSideInset : size.width - iconSideInset - iconWidth + floor((iconWidth - iconSize.width) / 2.0),
y: floor((size.height - iconSize.height) / 2.0)
),
size: iconSize)
size: iconSize
)
transition.updateFrame(node: self.iconNode, frame: iconFrame, beginWithCurrentState: true)
if let animationNode = self.animationNode {
transition.updateFrame(node: animationNode, frame: iconFrame, beginWithCurrentState: true)
}
}
if let additionalIconSize {
let iconFrame = CGRect(
origin: CGPoint(
x: 10.0,
y: floor((size.height - additionalIconSize.height) / 2.0)
),
size: additionalIconSize
)
transition.updateFrame(node: self.additionalIconNode, frame: iconFrame, beginWithCurrentState: true)
}
})
}
}