mirror of https://github.com/oxen-io/session-ios
Show hint when other party enables video
parent
6ccd73837c
commit
179dec299f
@ -0,0 +1,83 @@
|
|||||||
|
//
|
||||||
|
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
protocol CallVideoHintViewDelegate: AnyObject {
|
||||||
|
func didTapCallVideoHintView(_ videoHintView: CallVideoHintView)
|
||||||
|
}
|
||||||
|
|
||||||
|
class CallVideoHintView: UIView {
|
||||||
|
let label = UILabel()
|
||||||
|
var tapGesture: UITapGestureRecognizer!
|
||||||
|
weak var delegate: CallVideoHintViewDelegate?
|
||||||
|
|
||||||
|
let kTailHMargin: CGFloat = 12
|
||||||
|
let kTailWidth: CGFloat = 16
|
||||||
|
let kTailHeight: CGFloat = 8
|
||||||
|
|
||||||
|
init() {
|
||||||
|
super.init(frame: .zero)
|
||||||
|
|
||||||
|
tapGesture = UITapGestureRecognizer(target: self, action: #selector(didTap(tapGesture:)))
|
||||||
|
addGestureRecognizer(tapGesture)
|
||||||
|
|
||||||
|
let layerView = OWSLayerView()
|
||||||
|
let shapeLayer = CAShapeLayer()
|
||||||
|
shapeLayer.fillColor = UIColor.ows_signalBlue.cgColor
|
||||||
|
layerView.layer.addSublayer(shapeLayer)
|
||||||
|
addSubview(layerView)
|
||||||
|
layerView.autoPinEdgesToSuperviewEdges()
|
||||||
|
|
||||||
|
let container = UIView()
|
||||||
|
addSubview(container)
|
||||||
|
container.autoSetDimension(.width, toSize: ScaleFromIPhone5(250), relation: .lessThanOrEqual)
|
||||||
|
container.layoutMargins = UIEdgeInsets(top: 7, leading: 12, bottom: 7, trailing: 12)
|
||||||
|
container.autoPinEdgesToSuperviewEdges(with: UIEdgeInsets(top: 0, leading: 0, bottom: kTailHeight, trailing: 0))
|
||||||
|
|
||||||
|
container.addSubview(label)
|
||||||
|
label.autoPinEdgesToSuperviewMargins()
|
||||||
|
label.setCompressionResistanceHigh()
|
||||||
|
label.setContentHuggingHigh()
|
||||||
|
label.font = UIFont.ows_dynamicTypeBody
|
||||||
|
label.textColor = .ows_white
|
||||||
|
label.numberOfLines = 0
|
||||||
|
label.text = NSLocalizedString("CALL_VIEW_ENABLE_VIDEO_HINT", comment: "tooltip label when remote party has enabled their video")
|
||||||
|
|
||||||
|
layerView.layoutCallback = { view in
|
||||||
|
let bezierPath = UIBezierPath()
|
||||||
|
|
||||||
|
// Bubble
|
||||||
|
let bubbleBounds = container.bounds
|
||||||
|
bezierPath.append(UIBezierPath(roundedRect: bubbleBounds, cornerRadius: 8))
|
||||||
|
|
||||||
|
// Tail
|
||||||
|
var tailBottom = CGPoint(x: self.kTailHMargin + self.kTailWidth * 0.5, y: view.height())
|
||||||
|
var tailLeft = CGPoint(x: self.kTailHMargin, y: view.height() - self.kTailHeight)
|
||||||
|
var tailRight = CGPoint(x: self.kTailHMargin + self.kTailWidth, y: view.height() - self.kTailHeight)
|
||||||
|
if (!CurrentAppContext().isRTL) {
|
||||||
|
tailBottom.x = view.width() - tailBottom.x
|
||||||
|
tailLeft.x = view.width() - tailLeft.x
|
||||||
|
tailRight.x = view.width() - tailRight.x
|
||||||
|
}
|
||||||
|
bezierPath.move(to: tailBottom)
|
||||||
|
bezierPath.addLine(to: tailLeft)
|
||||||
|
bezierPath.addLine(to: tailRight)
|
||||||
|
bezierPath.addLine(to: tailBottom)
|
||||||
|
shapeLayer.path = bezierPath.cgPath
|
||||||
|
shapeLayer.frame = view.bounds
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder aDecoder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: -
|
||||||
|
|
||||||
|
@objc
|
||||||
|
func didTap(tapGesture: UITapGestureRecognizer) {
|
||||||
|
self.delegate?.didTapCallVideoHintView(self)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue