mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 14:20:20 +00:00
Refactor ContactListUI and related modules
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
import Foundation
|
||||
import Display
|
||||
import UIKit
|
||||
import TelegramPresentationData
|
||||
import ListSectionHeaderNode
|
||||
|
||||
final class ContactListNameIndexHeader: Equatable, ListViewItemHeader {
|
||||
let id: Int64
|
||||
let theme: PresentationTheme
|
||||
let letter: unichar
|
||||
let stickDirection: ListViewItemHeaderStickDirection = .top
|
||||
|
||||
let height: CGFloat = 29.0
|
||||
|
||||
init(theme: PresentationTheme, letter: unichar) {
|
||||
self.theme = theme
|
||||
self.letter = letter
|
||||
self.id = Int64(letter)
|
||||
}
|
||||
|
||||
func node() -> ListViewItemHeaderNode {
|
||||
return ContactListNameIndexHeaderNode(theme: self.theme, letter: self.letter)
|
||||
}
|
||||
|
||||
static func ==(lhs: ContactListNameIndexHeader, rhs: ContactListNameIndexHeader) -> Bool {
|
||||
return lhs.id == rhs.id
|
||||
}
|
||||
}
|
||||
|
||||
final class ContactListNameIndexHeaderNode: ListViewItemHeaderNode {
|
||||
private var theme: PresentationTheme
|
||||
private let letter: unichar
|
||||
|
||||
private let sectionHeaderNode: ListSectionHeaderNode
|
||||
|
||||
init(theme: PresentationTheme, letter: unichar) {
|
||||
self.theme = theme
|
||||
self.letter = letter
|
||||
|
||||
self.sectionHeaderNode = ListSectionHeaderNode(theme: theme)
|
||||
|
||||
super.init()
|
||||
|
||||
if let scalar = UnicodeScalar(letter) {
|
||||
self.sectionHeaderNode.title = "\(Character(scalar))"
|
||||
}
|
||||
|
||||
self.addSubnode(self.sectionHeaderNode)
|
||||
}
|
||||
|
||||
func updateTheme(theme: PresentationTheme) {
|
||||
self.theme = theme
|
||||
self.sectionHeaderNode.updateTheme(theme: theme)
|
||||
}
|
||||
|
||||
override func updateLayout(size: CGSize, leftInset: CGFloat, rightInset: CGFloat) {
|
||||
self.sectionHeaderNode.frame = CGRect(origin: CGPoint(), size: size)
|
||||
self.sectionHeaderNode.updateLayout(size: size, leftInset: leftInset, rightInset: rightInset)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user