mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
119 lines
4.5 KiB
Swift
119 lines
4.5 KiB
Swift
import Foundation
|
|
import UIKit
|
|
import Display
|
|
import TelegramPresentationData
|
|
import ListSectionHeaderNode
|
|
|
|
public enum ChatListSearchItemHeaderType: Int32 {
|
|
case localPeers
|
|
case members
|
|
case contacts
|
|
case bots
|
|
case admins
|
|
case globalPeers
|
|
case deviceContacts
|
|
case recentPeers
|
|
case messages
|
|
case phoneNumber
|
|
case exceptions
|
|
case addToExceptions
|
|
}
|
|
|
|
public final class ChatListSearchItemHeader: ListViewItemHeader {
|
|
public let id: Int64
|
|
public let type: ChatListSearchItemHeaderType
|
|
public let stickDirection: ListViewItemHeaderStickDirection = .top
|
|
public let theme: PresentationTheme
|
|
public let strings: PresentationStrings
|
|
public let actionTitle: String?
|
|
public let action: (() -> Void)?
|
|
|
|
public let height: CGFloat = 28.0
|
|
|
|
public init(type: ChatListSearchItemHeaderType, theme: PresentationTheme, strings: PresentationStrings, actionTitle: String?, action: (() -> Void)?) {
|
|
self.type = type
|
|
self.id = Int64(self.type.rawValue)
|
|
self.theme = theme
|
|
self.strings = strings
|
|
self.actionTitle = actionTitle
|
|
self.action = action
|
|
}
|
|
|
|
public func node() -> ListViewItemHeaderNode {
|
|
return ChatListSearchItemHeaderNode(type: self.type, theme: self.theme, strings: self.strings, actionTitle: self.actionTitle, action: self.action)
|
|
}
|
|
|
|
public func updateNode(_ node: ListViewItemHeaderNode, previous: ListViewItemHeader?, next: ListViewItemHeader?) {
|
|
|
|
}
|
|
}
|
|
|
|
public final class ChatListSearchItemHeaderNode: ListViewItemHeaderNode {
|
|
private let type: ChatListSearchItemHeaderType
|
|
private var theme: PresentationTheme
|
|
private var strings: PresentationStrings
|
|
private let actionTitle: String?
|
|
private let action: (() -> Void)?
|
|
|
|
private let sectionHeaderNode: ListSectionHeaderNode
|
|
|
|
public init(type: ChatListSearchItemHeaderType, theme: PresentationTheme, strings: PresentationStrings, actionTitle: String?, action: (() -> Void)?) {
|
|
self.type = type
|
|
self.theme = theme
|
|
self.strings = strings
|
|
self.actionTitle = actionTitle
|
|
self.action = action
|
|
|
|
self.sectionHeaderNode = ListSectionHeaderNode(theme: theme)
|
|
|
|
super.init()
|
|
|
|
switch type {
|
|
case .localPeers:
|
|
self.sectionHeaderNode.title = strings.DialogList_SearchSectionDialogs.uppercased()
|
|
case .members:
|
|
self.sectionHeaderNode.title = strings.Channel_Info_Members.uppercased()
|
|
case .contacts:
|
|
self.sectionHeaderNode.title = strings.Contacts_TopSection.uppercased()
|
|
case .bots:
|
|
self.sectionHeaderNode.title = strings.MemberSearch_BotSection.uppercased()
|
|
case .admins:
|
|
self.sectionHeaderNode.title = strings.Channel_Management_Title.uppercased()
|
|
case .globalPeers:
|
|
self.sectionHeaderNode.title = strings.DialogList_SearchSectionGlobal.uppercased()
|
|
case .deviceContacts:
|
|
self.sectionHeaderNode.title = strings.Contacts_NotRegisteredSection.uppercased()
|
|
case .messages:
|
|
self.sectionHeaderNode.title = strings.DialogList_SearchSectionMessages.uppercased()
|
|
case .recentPeers:
|
|
self.sectionHeaderNode.title = strings.DialogList_SearchSectionRecent.uppercased()
|
|
case .phoneNumber:
|
|
self.sectionHeaderNode.title = strings.Contacts_PhoneNumber.uppercased()
|
|
case .exceptions:
|
|
self.sectionHeaderNode.title = strings.GroupInfo_Permissions_Exceptions.uppercased()
|
|
case .addToExceptions:
|
|
self.sectionHeaderNode.title = strings.Exceptions_AddToExceptions.uppercased()
|
|
}
|
|
|
|
self.sectionHeaderNode.action = actionTitle
|
|
self.sectionHeaderNode.activateAction = action
|
|
|
|
self.addSubnode(self.sectionHeaderNode)
|
|
}
|
|
|
|
public func updateTheme(theme: PresentationTheme) {
|
|
self.theme = theme
|
|
self.sectionHeaderNode.updateTheme(theme: theme)
|
|
}
|
|
|
|
override public 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)
|
|
}
|
|
|
|
override public func animateRemoved(duration: Double) {
|
|
self.alpha = 0.0
|
|
self.layer.animateAlpha(from: 1.0, to: 0.0, duration: duration, removeOnCompletion: true)
|
|
}
|
|
}
|