Swiftgram/TelegramUI/ContactsSectionHeaderAccessoryItem.swift
2016-08-23 16:21:34 +03:00

71 lines
2.0 KiB
Swift

import Foundation
import AsyncDisplayKit
import Display
enum ContactsSectionHeader: Equatable {
case letter(String)
case title(String)
}
func ==(lhs: ContactsSectionHeader, rhs: ContactsSectionHeader) -> Bool {
switch lhs {
case let .letter(letter):
if case .letter(letter) = rhs {
return true
} else {
return false
}
case let .title(title):
if case .title(title) = rhs {
return true
} else {
return false
}
}
}
final class ContactsSectionHeaderAccessoryItem: ListViewAccessoryItem {
private let sectionHeader: ContactsSectionHeader
init(sectionHeader: ContactsSectionHeader) {
self.sectionHeader = sectionHeader
}
func isEqualToItem(_ other: ListViewAccessoryItem) -> Bool {
if let other = other as? ContactsSectionHeaderAccessoryItem, self.sectionHeader == other.sectionHeader {
return true
} else {
return false
}
}
func node() -> ListViewAccessoryItemNode {
return ContactsSectionHeaderAccessoryItemNode(sectionHeader: self.sectionHeader)
}
}
private final class ContactsSectionHeaderAccessoryItemNode: ListViewAccessoryItemNode {
private let sectionHeader: ContactsSectionHeader
private let sectionHeaderNode: ListSectionHeaderNode
init(sectionHeader: ContactsSectionHeader) {
self.sectionHeader = sectionHeader
self.sectionHeaderNode = ListSectionHeaderNode()
super.init()
switch sectionHeader {
case let .letter(letter):
self.sectionHeaderNode.title = letter
case let .title(title):
self.sectionHeaderNode.title = title
}
self.addSubnode(self.sectionHeaderNode)
}
override func layout() {
self.sectionHeaderNode.frame = CGRect(origin: CGPoint(), size: self.bounds.size)
}
}