diff --git a/submodules/Display/Source/Nodes/ButtonNode.swift b/submodules/Display/Source/Nodes/ButtonNode.swift index 407729b42f..c2c52646ff 100644 --- a/submodules/Display/Source/Nodes/ButtonNode.swift +++ b/submodules/Display/Source/Nodes/ButtonNode.swift @@ -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) diff --git a/submodules/TelegramCallsUI/Sources/CallRatingController.swift b/submodules/TelegramCallsUI/Sources/CallRatingController.swift index 79ba03527f..04210c2316 100644 --- a/submodules/TelegramCallsUI/Sources/CallRatingController.swift +++ b/submodules/TelegramCallsUI/Sources/CallRatingController.swift @@ -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 { diff --git a/submodules/TelegramCallsUI/Sources/PresentationCall.swift b/submodules/TelegramCallsUI/Sources/PresentationCall.swift index 919d0fd189..735c1c8a73 100644 --- a/submodules/TelegramCallsUI/Sources/PresentationCall.swift +++ b/submodules/TelegramCallsUI/Sources/PresentationCall.swift @@ -534,7 +534,7 @@ public final class PresentationCallImpl: PresentationCall { if !self.shouldPresentCallRating { self.ongoingContext.needsRating { needsRating in - self.shouldPresentCallRating = needsRating +// self.shouldPresentCallRating = needsRating } } }