mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
74 lines
2.3 KiB
Swift
74 lines
2.3 KiB
Swift
import Foundation
|
|
import Display
|
|
import UIKit
|
|
import TelegramPresentationData
|
|
import ListSectionHeaderNode
|
|
|
|
final class ContactListNameIndexHeader: Equatable, ListViewItemHeader {
|
|
let id: ListViewItemNode.HeaderId
|
|
let theme: PresentationTheme
|
|
let letter: unichar
|
|
let stickDirection: ListViewItemHeaderStickDirection = .top
|
|
public let stickOverInsets: Bool = true
|
|
|
|
let height: CGFloat = 29.0
|
|
|
|
init(theme: PresentationTheme, letter: unichar) {
|
|
self.theme = theme
|
|
self.letter = letter
|
|
self.id = ListViewItemNode.HeaderId(space: 0, id: Int64(letter))
|
|
}
|
|
|
|
func combinesWith(other: ListViewItemHeader) -> Bool {
|
|
if let other = other as? ContactListNameIndexHeader, self.id == other.id {
|
|
return true
|
|
} else {
|
|
return false
|
|
}
|
|
}
|
|
|
|
func node(synchronousLoad: Bool) -> ListViewItemHeaderNode {
|
|
return ContactListNameIndexHeaderNode(theme: self.theme, letter: self.letter)
|
|
}
|
|
|
|
func updateNode(_ node: ListViewItemHeaderNode, previous: ListViewItemHeader?, next: ListViewItemHeader?) {
|
|
|
|
}
|
|
|
|
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)
|
|
}
|
|
}
|