Swiftgram/TelegramUI/WebSearchControllerNode.swift
Ilya Laktyushin 041464a293 Various fixes
2018-12-03 19:47:49 +04:00

95 lines
4.2 KiB
Swift

import Foundation
import AsyncDisplayKit
import Postbox
import SwiftSignalKit
import Display
import TelegramCore
class WebSearchControllerNode: ASDisplayNode {
private let segmentedBackgroundNode: ASDisplayNode
private let segmentedSeparatorNode: ASDisplayNode
private let segmentedControl: UISegmentedControl
private let toolbarBackgroundNode: ASDisplayNode
private let toolbarSeparatorNode: ASDisplayNode
private let cancelButton: HighlightableButtonNode
private let sendButton: HighlightableButtonNode
private let attributionNode: ASImageNode
private let account: Account
private var containerLayout: (ContainerViewLayout, CGFloat)?
init(account: Account, theme: PresentationTheme, strings: PresentationStrings) {
self.account = account
self.segmentedBackgroundNode = ASDisplayNode()
self.segmentedBackgroundNode.backgroundColor = theme.rootController.navigationBar.backgroundColor
self.segmentedSeparatorNode = ASDisplayNode()
self.segmentedSeparatorNode.backgroundColor = theme.rootController.navigationBar.separatorColor
self.segmentedControl = UISegmentedControl(items: [strings.WebSearch_Images, strings.WebSearch_GIFs, strings.WebSearch_RecentSectionTitle])
self.segmentedControl.tintColor = theme.rootController.navigationBar.accentTextColor
self.segmentedControl.selectedSegmentIndex = 0
self.toolbarBackgroundNode = ASDisplayNode()
self.toolbarBackgroundNode.backgroundColor = theme.rootController.navigationBar.backgroundColor
self.toolbarSeparatorNode = ASDisplayNode()
self.toolbarSeparatorNode.backgroundColor = theme.rootController.navigationBar.separatorColor
self.attributionNode = ASImageNode()
self.cancelButton = HighlightableButtonNode()
self.cancelButton.setTitle(strings.Common_Cancel, with: Font.regular(17.0), with: theme.rootController.navigationBar.accentTextColor, for: .normal)
self.sendButton = HighlightableButtonNode()
super.init()
self.setViewBlock({
return UITracingLayerView()
})
self.backgroundColor = theme.chatList.backgroundColor
self.addSubnode(self.segmentedBackgroundNode)
self.addSubnode(self.segmentedSeparatorNode)
self.view.addSubview(self.segmentedControl)
self.segmentedControl.addTarget(self, action: #selector(self.indexChanged), for: .valueChanged)
self.addSubnode(self.toolbarBackgroundNode)
self.addSubnode(self.toolbarSeparatorNode)
self.addSubnode(self.cancelButton)
self.addSubnode(self.sendButton)
}
func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
self.containerLayout = (layout, navigationBarHeight)
var insets = layout.insets(options: [.input])
insets.top += navigationBarHeight
let segmentedHeight: CGFloat = 40.0
let panelY: CGFloat = insets.top - UIScreenPixel - 4.0
transition.updateFrame(node: self.segmentedBackgroundNode, frame: CGRect(origin: CGPoint(x: 0.0, y: panelY), size: CGSize(width: layout.size.width, height: segmentedHeight)))
transition.updateFrame(node: self.segmentedSeparatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: panelY + segmentedHeight), size: CGSize(width: layout.size.width, height: UIScreenPixel)))
var controlSize = self.segmentedControl.sizeThatFits(layout.size)
controlSize.width = layout.size.width - 8.0 * 2.0
transition.updateFrame(view: self.segmentedControl, frame: CGRect(origin: CGPoint(x: floor((layout.size.width - controlSize.width) / 2.0), y: panelY + floor((segmentedHeight - controlSize.height) / 2.0)), size: controlSize))
}
@objc private func indexChanged() {
// if self.segmentedControl.selectedSegmentIndex == 0 {
// self.chatController?.displayNode.isHidden = false
// self.listNode.isHidden = true
// } else {
// self.chatController?.displayNode.isHidden = true
// self.listNode.isHidden = false
// }
}
}