Files
Mike Renoir bba6d241aa bugfixes
2023-11-18 14:45:50 +04:00

88 lines
2.0 KiB
Swift

//
// BarView.swift
// TGUIKit
//
// Created by keepcoder on 16/09/16.
// Copyright © 2016 Telegram. All rights reserved.
//
import Cocoa
open class BarView: Control {
public var clickHandler:()->Void = {}
public var minWidth:CGFloat = 20
public private(set) weak var controller: ViewController?
override open func draw(_ layer: CALayer, in ctx: CGContext) {
super.draw(layer, in: ctx)
}
var isFitted: Bool {
return true
}
func fit(to maxWidth: CGFloat) -> CGFloat {
return frame.width
}
open override func setFrameSize(_ newSize: NSSize) {
super.setFrameSize(newSize)
self.setNeedsDisplay()
}
public init(_ width:CGFloat = 20, controller: ViewController) {
self.minWidth = width
self.controller = controller
super.init(frame: NSMakeRect(0, 0, minWidth, 50))
animates = false
overlayInitEvent()
}
open override var isHidden: Bool {
didSet {
if !isHidden {
// layer?.opacity = 1
}
}
}
override open func updateLocalizationAndTheme(theme: PresentationTheme) {
// super.updateLocalizationAndTheme(theme: theme)
guard let controller = self.controller else {
return
}
backgroundColor = controller.barPresentation.backgroundColor
}
public override var style: ControlStyle {
didSet {
updateLocalizationAndTheme(theme: presentation)
}
}
func overlayInitEvent() -> Void {
set(handler: { [weak self] control in
self?.clickHandler()
}, for: .Click)
updateLocalizationAndTheme(theme: presentation)
}
required public init(frame frameRect: NSRect) {
super.init(frame:frameRect)
overlayInitEvent()
}
required public init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}