From e8949fb24f34bc4f044b9885b5970396f8c87cfe Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Mon, 22 Mar 2021 22:57:17 +0500 Subject: [PATCH] Various Fixes --- .../Sources/ListMessageFileItemNode.swift | 20 ++++++++++-------- .../Sources/SemanticStatusNode.swift | 9 -------- .../Sources/CallSuggestTabController.swift | 19 +++++++++++------ .../AlertAccentIcon.imageset/Contents.json | 12 +++++++++++ .../AlertAccentIcon.imageset/callstab_2.pdf | Bin 0 -> 4185 bytes .../AlertIcon.imageset/CallsTabBarInfo@2x.png | Bin 3792 -> 0 bytes .../AlertIcon.imageset/CallsTabBarInfo@3x.png | Bin 6155 -> 0 bytes .../AlertIcon.imageset/Contents.json | 20 +++++------------- .../AlertIcon.imageset/callstab_1.pdf | Bin 0 -> 9902 bytes .../Images.xcassets/Call List/Contents.json | 6 +++--- .../Animations/anim_shareddownload.tgs | Bin 1126 -> 1344 bytes .../Sources/PeerInfo/PeerInfoScreen.swift | 1 + 12 files changed, 45 insertions(+), 42 deletions(-) create mode 100644 submodules/TelegramUI/Images.xcassets/Call List/AlertAccentIcon.imageset/Contents.json create mode 100644 submodules/TelegramUI/Images.xcassets/Call List/AlertAccentIcon.imageset/callstab_2.pdf delete mode 100644 submodules/TelegramUI/Images.xcassets/Call List/AlertIcon.imageset/CallsTabBarInfo@2x.png delete mode 100644 submodules/TelegramUI/Images.xcassets/Call List/AlertIcon.imageset/CallsTabBarInfo@3x.png create mode 100644 submodules/TelegramUI/Images.xcassets/Call List/AlertIcon.imageset/callstab_1.pdf diff --git a/submodules/ListMessageItem/Sources/ListMessageFileItemNode.swift b/submodules/ListMessageItem/Sources/ListMessageFileItemNode.swift index b6c4a4fdfd..e614dcbb30 100644 --- a/submodules/ListMessageItem/Sources/ListMessageFileItemNode.swift +++ b/submodules/ListMessageItem/Sources/ListMessageFileItemNode.swift @@ -185,7 +185,7 @@ public final class ListMessageFileItemNode: ListMessageNode { private let playbackStatusDisposable = MetaDisposable() private let playbackStatus = Promise() - private var downloadStatusIconNode: ASImageNode + private var downloadStatusIconNode: DownloadIconNode private var linearProgressNode: LinearProgressNode? private var context: AccountContext? @@ -247,10 +247,7 @@ public final class ListMessageFileItemNode: ListMessageNode { self.iconStatusNode = SemanticStatusNode(backgroundNodeColor: .clear, foregroundNodeColor: .white) self.iconStatusNode.isUserInteractionEnabled = false - self.downloadStatusIconNode = ASImageNode() - self.downloadStatusIconNode.isLayerBacked = true - self.downloadStatusIconNode.displaysAsynchronously = false - self.downloadStatusIconNode.displayWithoutProcessing = true + self.downloadStatusIconNode = DownloadIconNode() self.restrictionNode = ASDisplayNode() self.restrictionNode.isHidden = true @@ -739,6 +736,8 @@ public final class ListMessageFileItemNode: ListMessageNode { strongSelf.linearProgressNode?.updateTheme(theme: item.presentationData.theme.theme) strongSelf.restrictionNode.backgroundColor = item.presentationData.theme.theme.list.itemBlocksBackgroundColor.withAlphaComponent(0.6) + + strongSelf.downloadStatusIconNode.customColor = item.presentationData.theme.theme.list.itemAccentColor } if let (selectionWidth, selectionApply) = selectionNodeWidthAndApply { @@ -850,7 +849,7 @@ public final class ListMessageFileItemNode: ListMessageNode { })) } - transition.updateFrame(node: strongSelf.downloadStatusIconNode, frame: CGRect(origin: CGPoint(x: leftOffset + leftInset, y: strongSelf.descriptionNode.frame.minY + floor((strongSelf.descriptionNode.frame.height - 12.0) / 2.0)), size: CGSize(width: 12.0, height: 12.0))) + transition.updateFrame(node: strongSelf.downloadStatusIconNode, frame: CGRect(origin: CGPoint(x: leftOffset + leftInset - 3.0, y: strongSelf.descriptionNode.frame.minY + floor((strongSelf.descriptionNode.frame.height - 18.0) / 2.0)), size: CGSize(width: 18.0, height: 18.0))) if let updatedFetchControls = updatedFetchControls { let _ = strongSelf.fetchControls.swap(updatedFetchControls) @@ -1016,10 +1015,12 @@ public final class ListMessageFileItemNode: ListMessageNode { transition.updateFrame(node: linearProgressNode, frame: progressFrame) linearProgressNode.updateProgress(value: CGFloat(progress), completion: {}) + var animated = true if self.downloadStatusIconNode.supernode == nil { + animated = false self.offsetContainerNode.addSubnode(self.downloadStatusIconNode) } - self.downloadStatusIconNode.image = PresentationResourcesChat.sharedMediaFileDownloadPauseIcon(item.presentationData.theme.theme) + self.downloadStatusIconNode.enqueueState(.pause, animated: animated) case .Local: if let linearProgressNode = self.linearProgressNode { self.linearProgressNode = nil @@ -1032,7 +1033,6 @@ public final class ListMessageFileItemNode: ListMessageNode { if self.downloadStatusIconNode.supernode != nil { self.downloadStatusIconNode.removeFromSupernode() } - self.downloadStatusIconNode.image = nil case .Remote: if let linearProgressNode = self.linearProgressNode { self.linearProgressNode = nil @@ -1040,10 +1040,12 @@ public final class ListMessageFileItemNode: ListMessageNode { linearProgressNode?.removeFromSupernode() }) } + var animated = true if self.downloadStatusIconNode.supernode == nil { + animated = false self.offsetContainerNode.addSubnode(self.downloadStatusIconNode) } - self.downloadStatusIconNode.image = PresentationResourcesChat.sharedMediaFileDownloadStartIcon(item.presentationData.theme.theme) + self.downloadStatusIconNode.enqueueState(.download, animated: animated) } } else { if let linearProgressNode = self.linearProgressNode { diff --git a/submodules/SemanticStatusNode/Sources/SemanticStatusNode.swift b/submodules/SemanticStatusNode/Sources/SemanticStatusNode.swift index 7dcd5cc6c6..5aa2bd6bc0 100644 --- a/submodules/SemanticStatusNode/Sources/SemanticStatusNode.swift +++ b/submodules/SemanticStatusNode/Sources/SemanticStatusNode.swift @@ -98,15 +98,6 @@ private final class SemanticStatusNodeIconContext: SemanticStatusNodeStateContex self.transitionFraction = transitionFraction self.icon = icon - let displaySize = CGSize(width: 44.0, height: 44.0) - if let path = getAppBundle().path(forResource: "anim_playpause", ofType: "tgs"), let data = try? Data(contentsOf: URL(fileURLWithPath: path)), let unpackedData = TGGUnzipData(data, 5 * 1024 * 1024), let instance = LottieInstance(data: unpackedData, cacheKey: "anim_playpause") { - self.instance = instance - self.renderContext = DrawingContext(size: displaySize, scale: UIScreenScale, premultiplied: true, clear: true) - } else { - self.instance = nil - self.renderContext = nil - } - super.init() } diff --git a/submodules/TelegramCallsUI/Sources/CallSuggestTabController.swift b/submodules/TelegramCallsUI/Sources/CallSuggestTabController.swift index e3d40c7883..1026980ca3 100644 --- a/submodules/TelegramCallsUI/Sources/CallSuggestTabController.swift +++ b/submodules/TelegramCallsUI/Sources/CallSuggestTabController.swift @@ -11,16 +11,13 @@ import TelegramUIPreferences import AccountContext import AppBundle -private func generateIconImage(theme: AlertControllerTheme) -> UIImage? { - return UIImage(bundleImageName: "Call List/AlertIcon") -} - private final class CallSuggestTabAlertContentNode: AlertContentNode { private let strings: PresentationStrings private let titleNode: ASTextNode private let textNode: ASTextNode private let iconNode: ASImageNode + private let accentIconNode: ASImageNode private let actionNodesSeparator: ASDisplayNode private let actionNodes: [TextAlertContentActionNode] @@ -42,6 +39,12 @@ private final class CallSuggestTabAlertContentNode: AlertContentNode { self.textNode.maximumNumberOfLines = 0 self.iconNode = ASImageNode() + self.iconNode.displaysAsynchronously = false + self.iconNode.displayWithoutProcessing = true + + self.accentIconNode = ASImageNode() + self.accentIconNode.displaysAsynchronously = false + self.accentIconNode.displayWithoutProcessing = true self.actionNodesSeparator = ASDisplayNode() self.actionNodesSeparator.isLayerBacked = true @@ -65,6 +68,7 @@ private final class CallSuggestTabAlertContentNode: AlertContentNode { self.addSubnode(self.titleNode) self.addSubnode(self.textNode) self.addSubnode(self.iconNode) + self.addSubnode(self.accentIconNode) self.addSubnode(self.actionNodesSeparator) @@ -82,7 +86,8 @@ private final class CallSuggestTabAlertContentNode: AlertContentNode { override func updateTheme(_ theme: AlertControllerTheme) { self.titleNode.attributedText = NSAttributedString(string: strings.Calls_CallTabTitle, font: Font.bold(17.0), textColor: theme.primaryColor, paragraphAlignment: .center) self.textNode.attributedText = NSAttributedString(string: strings.Calls_CallTabDescription, font: Font.regular(13.0), textColor: theme.primaryColor, paragraphAlignment: .center) - self.iconNode.image = generateIconImage(theme: theme) + self.iconNode.image = generateTintedImage(image: UIImage(bundleImageName: "Call List/AlertIcon"), color: theme.controlBorderColor) + self.accentIconNode.image = generateTintedImage(image: UIImage(bundleImageName: "Call List/AlertAccentIcon"), color: theme.accentColor) self.actionNodesSeparator.backgroundColor = theme.separatorColor for actionNode in self.actionNodes { @@ -112,7 +117,9 @@ private final class CallSuggestTabAlertContentNode: AlertContentNode { var iconSize = CGSize() if let icon = self.iconNode.image { iconSize = icon.size - transition.updateFrame(node: self.iconNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - iconSize.width) / 2.0), y: origin.y), size: iconSize)) + let iconFrame = CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - iconSize.width) / 2.0), y: origin.y), size: iconSize) + transition.updateFrame(node: self.iconNode, frame: iconFrame) + transition.updateFrame(node: self.accentIconNode, frame: iconFrame) origin.y += iconSize.height + 16.0 } diff --git a/submodules/TelegramUI/Images.xcassets/Call List/AlertAccentIcon.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Call List/AlertAccentIcon.imageset/Contents.json new file mode 100644 index 0000000000..274390d56b --- /dev/null +++ b/submodules/TelegramUI/Images.xcassets/Call List/AlertAccentIcon.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "callstab_2.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/submodules/TelegramUI/Images.xcassets/Call List/AlertAccentIcon.imageset/callstab_2.pdf b/submodules/TelegramUI/Images.xcassets/Call List/AlertAccentIcon.imageset/callstab_2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4c8932027d9e6d36e20e4844fb7163d26318d3d0 GIT binary patch literal 4185 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 U(h~IZ_7L(&7+6F^Q%?*0FKCEAng9R* literal 0 HcmV?d00001 diff --git a/submodules/TelegramUI/Images.xcassets/Call List/AlertIcon.imageset/CallsTabBarInfo@2x.png b/submodules/TelegramUI/Images.xcassets/Call List/AlertIcon.imageset/CallsTabBarInfo@2x.png deleted file mode 100644 index 9e3bf3bdabedfc2479539f1c216efb0e61d1eef4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3792 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 pZ+Lh?5DUkN{W5QaBmW zJ-Qgf1XVZ9iq<->NLtx5_AXD4F`PexAx-FDxP&nT2wx6!x)nI!gp=*WV9wwe=)gpK z9>(c&F!}@sq^^Oq7TQ?`qXmC}18I{S5{Wk3b0J|G7#vzonF5x|qfi7{I?Zbm(f1qL zff3P|QVH)vk}k-7iGN2YY#i}ZzcYF|CfuggARCVf`wJXBdZIcM|Ky-^zAn#gMry_t zdYB&Fj{_tJ_@0dmA_U$Sz(Lb*vuXFlP@0 zXpFRAW?_~I&kc|YnfI{tr!guI62yN>*nQ4<1 zWJJOm0T?CdWr+ZmrY;JPZ`!d#tvm(ZLqz5ktMhs-U_kWvOq%O=%d6)Z(}V~zlGur8 z6E_}VY7r#{WFK(*L#zY@*hT-7uw%KCrF`k_*I^|ZgXmr6U!zk2dsVft$oL)=UJI^E9))WxjU)LH!a{ZE5GXE*yz zHTaz>o567KrrNyUqQV@DnY-z7H{&o+NprU>7`jtZ34?bLyfa?fh|>^*)KLL`4_pa( z1E#(nr`?K8%?f`8`R$4qd80osmdpN)zNx0$`Qiq*N;Uh4${g&xm;0P5V}C9kM^F>3Vm!sa6F=lSRKF6Vvs(B{hWWEjNre ze6j51n&lSDiEW^o0#g-$Y{wb;Nob zLnpMss)dJEno0>w7)eBPmVO(lqVEh^0C9`l=~b77gLF#}4WI04eSG`wy(JySVo zs4nz?#h+mbrs9ASZPAD~X;}p|v{d<+5&7^+Se@!brG&;~VTBWIND}%rDJER2FWqQ5 zfh@{S+$8hS(0HoFlHR)Jtc4av`&NWcG?J)Qj4OZoSr5tJx{Vmc0vWFy&w*nHSS~3R zxR3~rRE{8&`<_wH`wYTKY-x+YFgc=|I|+&{s!Xn&d?1Y0092rgI)jt delta 1111 zcmV-d1gQJK3g!q0ABzYG*v(Xt2OxjjI1v6T2G24i!&J3xi6~}GT0J{(Zh~ms}hVzl~e1kl&FKodKPq<_eyDQkjiimBGYym?K zgH-VH6-JbA!g$!jqTllUaTdd>+uK_*&&qOLm29zGMQoRSTNn8L(5SZu7e`3DIT5?qS&j%kh!X!g~-4bnp+n$Wz3Mpp&G75L*<0b}6{E3516b zOSuBmyw${U95ezo75Og1^oM;&>z&Nqv)nk-cY~g#Z1%Sb*$c2fK9)U2B)75?j-ruN z^s-JxWMk3^@LuH@Tyw2;qqBIGxKy+ez3(dmUCgKk z@2LQT{DwGp5vdVZ5FzVb#l|Ha$cdJA)v*s+K4CXEY*7`T z*QX!3iRl1h%S|#!8bvL{X9ivU0OE_b(S>LY#4?uL2@CRsdx$k$Q}`rE;Lw*eE|Q9S zH1S>cEj7$VOyPnv9V~z5QYVeMpOBwtLR$ZNOqjkLru7fzgy~h7rUAV^rplzfdn)1y z)F(mh*4wENU0aAcWQ1t*hpgJnkg)F$NTPrL_08<>^-Yx*vpF)GKRmH}I# z=b&EtCpZB1FsA{gU?|C4rmc^JrvtCJL*qAU{3-wzW5s{Et)>o0fd-v9e dUGWrOp=$;GJ}d71e-c-xe*pt1=#s4*005k@Bennl diff --git a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift index 41f8b93d79..513c8f450f 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift @@ -2709,6 +2709,7 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD strongSelf.chatInterfaceInteraction.selectionState = strongSelf.state.selectedMessageIds.flatMap { ChatInterfaceSelectionState(selectedIds: $0) } strongSelf.paneContainerNode.updateSelectedMessageIds(strongSelf.state.selectedMessageIds, animated: true) case .search: + strongSelf.headerNode.navigationButtonContainer.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.3, timingFunction: CAMediaTimingFunctionName.easeOut.rawValue) strongSelf.activateSearch() case .editPhoto, .editVideo: break