67 lines
2.0 KiB
Swift
67 lines
2.0 KiB
Swift
//
|
|
// Copyright (c) 2021 Open Whisper Systems. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
@objc
|
|
public class MessageSelectionView: ManualLayoutView {
|
|
|
|
@objc
|
|
public var isSelected: Bool = false {
|
|
didSet {
|
|
selectedView.isHidden = !isSelected
|
|
unselectedView.isHidden = isSelected
|
|
}
|
|
}
|
|
|
|
@objc
|
|
public init() {
|
|
super.init(name: "MessageSelectionView")
|
|
|
|
addSubview(selectedView)
|
|
addSubview(unselectedView)
|
|
|
|
centerSubviewOnSuperview(selectedView, size: Self.contentSize)
|
|
centerSubviewOnSuperview(unselectedView, size: Self.contentSize)
|
|
|
|
selectedView.isHidden = true
|
|
}
|
|
|
|
@available(*, unavailable, message: "use other constructor instead.")
|
|
@objc
|
|
public required init(name: String) {
|
|
notImplemented()
|
|
}
|
|
|
|
private static var contentSize: CGSize {
|
|
CGSize(square: ConversationStyle.selectionViewWidth)
|
|
}
|
|
|
|
private lazy var selectedView: UIView = {
|
|
let wrapper = ManualLayoutView(name: "MessageSelectionView.selectedView")
|
|
|
|
// the checkmark shape is transparent, but we want it colored white, even in dark theme
|
|
let backgroundSize = ConversationStyle.selectionViewWidth - 8
|
|
let backgroundView = CircleView(diameter: backgroundSize)
|
|
backgroundView.backgroundColor = .white
|
|
wrapper.addSubview(backgroundView)
|
|
wrapper.centerSubviewOnSuperview(backgroundView, size: .square(backgroundSize))
|
|
|
|
let image = #imageLiteral(resourceName: "check-circle-solid-24").withRenderingMode(.alwaysTemplate)
|
|
let imageView = UIImageView(image: image)
|
|
imageView.tintColor = .ows_accentBlue
|
|
wrapper.addSubview(imageView)
|
|
wrapper.layoutSubviewToFillSuperviewBounds(imageView)
|
|
|
|
return wrapper
|
|
}()
|
|
|
|
private lazy var unselectedView: UIView = {
|
|
let view = CircleView(diameter: ConversationStyle.selectionViewWidth)
|
|
view.layer.borderColor = UIColor.ows_gray25.cgColor
|
|
view.layer.borderWidth = 1.5
|
|
return view
|
|
}()
|
|
}
|