mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-07 14:53:35 +00:00
Wallet UI improvements
This commit is contained in:
parent
5006d7ddd5
commit
0e81e73a80
@ -60,7 +60,6 @@ private enum WalletCreateInvoiceScreenEntryTag: ItemListItemTag {
|
||||
private enum WalletCreateInvoiceScreenEntry: ItemListNodeEntry {
|
||||
case amountHeader(PresentationTheme, String)
|
||||
case amount(PresentationTheme, PresentationStrings, String, String)
|
||||
case amountInfo(PresentationTheme, String)
|
||||
case commentHeader(PresentationTheme, String)
|
||||
case comment(PresentationTheme, String, String)
|
||||
case addressCode(PresentationTheme, String)
|
||||
@ -72,7 +71,7 @@ private enum WalletCreateInvoiceScreenEntry: ItemListNodeEntry {
|
||||
|
||||
var section: ItemListSectionId {
|
||||
switch self {
|
||||
case .amountHeader, .amount, .amountInfo:
|
||||
case .amountHeader, .amount:
|
||||
return WalletCreateInvoiceScreenSection.amount.rawValue
|
||||
case .commentHeader, .comment:
|
||||
return WalletCreateInvoiceScreenSection.comment.rawValue
|
||||
@ -87,24 +86,22 @@ private enum WalletCreateInvoiceScreenEntry: ItemListNodeEntry {
|
||||
return 0
|
||||
case .amount:
|
||||
return 1
|
||||
case .amountInfo:
|
||||
return 2
|
||||
case .commentHeader:
|
||||
return 3
|
||||
return 2
|
||||
case .comment:
|
||||
return 4
|
||||
return 3
|
||||
case .addressCode:
|
||||
return 5
|
||||
return 4
|
||||
case .addressHeader:
|
||||
return 6
|
||||
return 5
|
||||
case .address:
|
||||
return 7
|
||||
return 6
|
||||
case .copyAddress:
|
||||
return 8
|
||||
return 7
|
||||
case .shareAddressLink:
|
||||
return 9
|
||||
return 8
|
||||
case .addressInfo:
|
||||
return 10
|
||||
return 9
|
||||
}
|
||||
}
|
||||
|
||||
@ -122,12 +119,6 @@ private enum WalletCreateInvoiceScreenEntry: ItemListNodeEntry {
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
case let .amountInfo(lhsTheme, lhsText):
|
||||
if case let .amountInfo(rhsTheme, rhsText) = rhs, lhsTheme === rhsTheme, lhsText == rhsText {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
case let .commentHeader(lhsTheme, lhsText):
|
||||
if case let .commentHeader(rhsTheme, rhsText) = rhs, lhsTheme === rhsTheme, lhsText == rhsText {
|
||||
return true
|
||||
@ -220,8 +211,6 @@ private enum WalletCreateInvoiceScreenEntry: ItemListNodeEntry {
|
||||
}, action: {
|
||||
arguments.selectNextInputItem(WalletCreateInvoiceScreenEntryTag.amount)
|
||||
})
|
||||
case let .amountInfo(theme, text):
|
||||
return ItemListTextItem(theme: theme, text: .markdown(text), sectionId: self.section)
|
||||
case let .commentHeader(theme, text):
|
||||
return ItemListSectionHeaderItem(theme: theme, text: text, sectionId: self.section)
|
||||
case let .comment(theme, placeholder, value):
|
||||
@ -281,7 +270,6 @@ private func walletCreateInvoiceScreenEntries(presentationData: PresentationData
|
||||
let amount = amountValue(state.amount)
|
||||
entries.append(.amountHeader(presentationData.theme, presentationData.strings.Wallet_Receive_AmountHeader))
|
||||
entries.append(.amount(presentationData.theme, presentationData.strings, presentationData.strings.Wallet_Receive_AmountText, state.amount ?? ""))
|
||||
entries.append(.amountInfo(presentationData.theme, presentationData.strings.Wallet_Receive_AmountInfo))
|
||||
|
||||
entries.append(.commentHeader(presentationData.theme, presentationData.strings.Wallet_Receive_CommentHeader))
|
||||
entries.append(.comment(presentationData.theme, presentationData.strings.Wallet_Receive_CommentInfo, state.comment))
|
||||
|
||||
@ -216,7 +216,6 @@ private final class WalletInfoHeaderNode: ASDisplayNode {
|
||||
self.headerCornerNode.displaysAsynchronously = false
|
||||
self.headerCornerNode.displayWithoutProcessing = true
|
||||
self.headerCornerNode.image = generateImage(CGSize(width: 20.0, height: 10.0), rotatedContext: { size, context in
|
||||
|
||||
context.setFillColor(UIColor.black.cgColor)
|
||||
context.fill(CGRect(origin: CGPoint(), size: size))
|
||||
context.setBlendMode(.copy)
|
||||
|
||||
@ -9,6 +9,7 @@ import Display
|
||||
import Postbox
|
||||
import QrCode
|
||||
import ShareController
|
||||
import AnimationUI
|
||||
|
||||
func shareInvoiceQrCode(context: AccountContext, invoice: String) {
|
||||
let _ = (qrCode(string: invoice, color: .black, backgroundColor: .white, icon: .custom(UIImage(bundleImageName: "Wallet/QrGem")))
|
||||
@ -116,6 +117,7 @@ private final class WalletQrViewScreenNode: ViewControllerTracingNode {
|
||||
private let invoice: String
|
||||
|
||||
private let imageNode: TransformImageNode
|
||||
private let iconNode: AnimatedStickerNode
|
||||
|
||||
init(context: AccountContext, presentationData: PresentationData, message: String) {
|
||||
self.presentationData = presentationData
|
||||
@ -125,13 +127,20 @@ private final class WalletQrViewScreenNode: ViewControllerTracingNode {
|
||||
self.imageNode.clipsToBounds = true
|
||||
self.imageNode.cornerRadius = 12.0
|
||||
|
||||
self.iconNode = AnimatedStickerNode()
|
||||
if let path = getAppBundle().path(forResource: "WalletIntroStatic", ofType: "tgs") {
|
||||
self.iconNode.setup(account: context.account, resource: .localFile(path), width: 120, height: 120, mode: .direct)
|
||||
self.iconNode.visibility = true
|
||||
}
|
||||
|
||||
super.init()
|
||||
|
||||
self.backgroundColor = self.presentationData.theme.list.plainBackgroundColor
|
||||
|
||||
self.addSubnode(self.imageNode)
|
||||
self.addSubnode(self.iconNode)
|
||||
|
||||
self.imageNode.setSignal(qrCode(string: self.invoice, color: .black, backgroundColor: .white, icon: .custom(UIImage(bundleImageName: "Wallet/QrGem"))), attemptSynchronously: true)
|
||||
self.imageNode.setSignal(qrCode(string: self.invoice, color: .black, backgroundColor: .white, icon: .cutout), attemptSynchronously: true)
|
||||
}
|
||||
|
||||
func containerLayoutUpdated(layout: ContainerViewLayout, navigationHeight: CGFloat, transition: ContainedViewLayoutTransition) {
|
||||
@ -143,6 +152,11 @@ private final class WalletQrViewScreenNode: ViewControllerTracingNode {
|
||||
|
||||
let _ = imageApply()
|
||||
|
||||
transition.updateFrame(node: self.imageNode, frame: CGRect(origin: CGPoint(x: floor((layout.size.width - imageSize.width) / 2.0), y: floor((layout.size.height - imageSize.height - layout.intrinsicInsets.bottom) / 2.0)), size: imageSize))
|
||||
let imageFrame = CGRect(origin: CGPoint(x: floor((layout.size.width - imageSize.width) / 2.0), y: floor((layout.size.height - imageSize.height - layout.intrinsicInsets.bottom) / 2.0)), size: imageSize)
|
||||
transition.updateFrame(node: self.imageNode, frame: imageFrame)
|
||||
|
||||
let iconFrame = imageFrame.insetBy(dx: 106.0, dy: 106.0).offsetBy(dx: 0.0, dy: -2.0)
|
||||
self.iconNode.updateLayout(size: iconFrame.size)
|
||||
transition.updateFrameAsPositionAndBounds(node: self.iconNode, frame: iconFrame)
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user