mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-07 14:53:35 +00:00
Fix call rating alert layout
This commit is contained in:
parent
ad3147dbbf
commit
1e914ba95c
@ -7,6 +7,7 @@ open class ASButtonNode: ASControlNode {
|
||||
public let highlightedTitleNode: ImmediateTextNode
|
||||
public let disabledTitleNode: ImmediateTextNode
|
||||
public let imageNode: ASImageNode
|
||||
public let highlightedImageNode: ASImageNode
|
||||
public let disabledImageNode: ASImageNode
|
||||
public let backgroundImageNode: ASImageNode
|
||||
public let highlightedBackgroundImageNode: ASImageNode
|
||||
@ -69,6 +70,11 @@ open class ASButtonNode: ASControlNode {
|
||||
self.imageNode.displaysAsynchronously = false
|
||||
self.imageNode.displayWithoutProcessing = true
|
||||
|
||||
self.highlightedImageNode = ASImageNode()
|
||||
self.highlightedImageNode.isUserInteractionEnabled = false
|
||||
self.highlightedImageNode.displaysAsynchronously = false
|
||||
self.highlightedImageNode.displayWithoutProcessing = true
|
||||
|
||||
self.disabledImageNode = ASImageNode()
|
||||
self.disabledImageNode.isUserInteractionEnabled = false
|
||||
self.disabledImageNode.displaysAsynchronously = false
|
||||
@ -95,6 +101,8 @@ open class ASButtonNode: ASControlNode {
|
||||
self.addSubnode(self.disabledTitleNode)
|
||||
self.disabledTitleNode.isHidden = true
|
||||
self.addSubnode(self.imageNode)
|
||||
self.addSubnode(self.highlightedImageNode)
|
||||
self.highlightedImageNode.isHidden = true
|
||||
self.addSubnode(self.disabledImageNode)
|
||||
self.disabledImageNode.isHidden = true
|
||||
}
|
||||
@ -216,6 +224,11 @@ open class ASButtonNode: ASControlNode {
|
||||
}
|
||||
if state == .disabled {
|
||||
self.disabledImageNode.image = image
|
||||
} else if state == [] {
|
||||
self.imageNode.image = image
|
||||
self.highlightedImageNode.image = image
|
||||
} else if state == .highlighted || state == .selected || state == [.selected, .highlighted] {
|
||||
self.highlightedImageNode.image = image
|
||||
} else {
|
||||
self.imageNode.image = image
|
||||
}
|
||||
@ -225,7 +238,7 @@ open class ASButtonNode: ASControlNode {
|
||||
if state == [] {
|
||||
self.backgroundImageNode.image = image
|
||||
self.highlightedBackgroundImageNode.image = image
|
||||
} else if state == .highlighted || state == .selected {
|
||||
} else if state == .highlighted || state == .selected || state == [.selected, .highlighted] {
|
||||
self.highlightedBackgroundImageNode.image = image
|
||||
} else {
|
||||
self.backgroundImageNode.image = image
|
||||
@ -245,10 +258,29 @@ open class ASButtonNode: ASControlNode {
|
||||
return self.backgroundImageNode.image
|
||||
}
|
||||
|
||||
override open var isSelected: Bool {
|
||||
didSet {
|
||||
if self.isSelected != oldValue {
|
||||
if self.isSelected {
|
||||
if self.highlightedImageNode.image != nil {
|
||||
self.highlightedImageNode.isHidden = false
|
||||
self.imageNode.isHidden = true
|
||||
} else {
|
||||
self.highlightedImageNode.isHidden = true
|
||||
self.imageNode.isHidden = false
|
||||
}
|
||||
} else {
|
||||
self.highlightedImageNode.isHidden = true
|
||||
self.imageNode.isHidden = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override open var isHighlighted: Bool {
|
||||
didSet {
|
||||
if self.isHighlighted != oldValue {
|
||||
if self.isHighlighted {
|
||||
if self.isHighlighted || self.isSelected {
|
||||
if self.highlightedTitleNode.attributedText != nil {
|
||||
self.highlightedTitleNode.isHidden = false
|
||||
self.titleNode.isHidden = true
|
||||
@ -263,12 +295,22 @@ open class ASButtonNode: ASControlNode {
|
||||
self.highlightedBackgroundImageNode.isHidden = true
|
||||
self.backgroundImageNode.isHidden = false
|
||||
}
|
||||
if self.highlightedImageNode.image != nil {
|
||||
self.highlightedImageNode.isHidden = false
|
||||
self.imageNode.isHidden = true
|
||||
} else {
|
||||
self.highlightedImageNode.isHidden = true
|
||||
self.imageNode.isHidden = false
|
||||
}
|
||||
} else {
|
||||
self.highlightedTitleNode.isHidden = true
|
||||
self.titleNode.isHidden = false
|
||||
|
||||
self.highlightedBackgroundImageNode.isHidden = true
|
||||
self.backgroundImageNode.isHidden = false
|
||||
|
||||
self.highlightedImageNode.isHidden = true
|
||||
self.imageNode.isHidden = false
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -342,6 +384,7 @@ open class ASButtonNode: ASControlNode {
|
||||
self.highlightedTitleNode.frame = CGRect(origin: highlightedTitleOrigin, size: self.calculatedHighlightedTitleSize)
|
||||
self.disabledTitleNode.frame = CGRect(origin: disabledTitleOrigin, size: self.calculatedDisabledTitleSize)
|
||||
self.imageNode.frame = CGRect(origin: imageOrigin, size: imageSize)
|
||||
self.highlightedImageNode.frame = CGRect(origin: imageOrigin, size: imageSize)
|
||||
self.disabledImageNode.frame = CGRect(origin: imageOrigin, size: imageSize)
|
||||
|
||||
self.backgroundImageNode.frame = CGRect(origin: CGPoint(), size: size)
|
||||
|
||||
@ -140,13 +140,7 @@ private final class CallRatingAlertContentNode: AlertContentNode {
|
||||
size.width = min(size.width , 270.0)
|
||||
|
||||
self.validLayout = size
|
||||
|
||||
var origin: CGPoint = CGPoint(x: 0.0, y: 20.0)
|
||||
|
||||
let titleSize = self.titleNode.measure(CGSize(width: size.width - 32.0, height: size.height))
|
||||
transition.updateFrame(node: self.titleNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - titleSize.width) / 2.0), y: origin.y), size: titleSize))
|
||||
origin.y += titleSize.height + 13.0
|
||||
|
||||
|
||||
let actionButtonHeight: CGFloat = 44.0
|
||||
var minActionsWidth: CGFloat = 0.0
|
||||
let maxActionWidth: CGFloat = floor(size.width / CGFloat(self.actionNodes.count))
|
||||
@ -168,6 +162,9 @@ private final class CallRatingAlertContentNode: AlertContentNode {
|
||||
|
||||
let insets = UIEdgeInsets(top: 18.0, left: 18.0, bottom: 18.0, right: 18.0)
|
||||
|
||||
var origin: CGPoint = CGPoint(x: 0.0, y: 20.0)
|
||||
let titleSize = self.titleNode.measure(CGSize(width: size.width - 32.0, height: size.height))
|
||||
|
||||
var contentWidth = max(titleSize.width, minActionsWidth)
|
||||
contentWidth = max(contentWidth, 234.0)
|
||||
|
||||
@ -181,6 +178,9 @@ private final class CallRatingAlertContentNode: AlertContentNode {
|
||||
|
||||
let resultWidth = contentWidth + insets.left + insets.right
|
||||
|
||||
transition.updateFrame(node: self.titleNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((resultWidth - titleSize.width) / 2.0), y: origin.y), size: titleSize))
|
||||
origin.y += titleSize.height + 13.0
|
||||
|
||||
let starSize = CGSize(width: 42.0, height: 38.0)
|
||||
let starsOrigin = floorToScreenPixels((resultWidth - starSize.width * 5.0) / 2.0)
|
||||
for i in 0 ..< self.starNodes.count {
|
||||
|
||||
@ -534,7 +534,7 @@ public final class PresentationCallImpl: PresentationCall {
|
||||
|
||||
if !self.shouldPresentCallRating {
|
||||
self.ongoingContext.needsRating { needsRating in
|
||||
self.shouldPresentCallRating = needsRating
|
||||
// self.shouldPresentCallRating = needsRating
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user