parent
6b47987342
commit
021c0db559
|
@ -25,6 +25,14 @@ public struct MediaGalleryItem: Equatable, Hashable {
|
|||
return attachmentStream.isVideo()
|
||||
}
|
||||
|
||||
var isAnimated: Bool {
|
||||
return attachmentStream.isAnimated()
|
||||
}
|
||||
|
||||
var isImage: Bool {
|
||||
return attachmentStream.isImage()
|
||||
}
|
||||
|
||||
var thumbnailImage: UIImage {
|
||||
guard let image = attachmentStream.thumbnailImage() else {
|
||||
owsFail("\(logTag) in \(#function) unexpectedly unable to build attachment thumbnail")
|
||||
|
|
|
@ -554,21 +554,44 @@ fileprivate class MediaGalleryCell: UICollectionViewCell {
|
|||
public let imageView: UIImageView
|
||||
private var tapGesture: UITapGestureRecognizer!
|
||||
|
||||
private let badgeView: UIImageView
|
||||
|
||||
private var item: MediaGalleryItem?
|
||||
public weak var delegate: MediaGalleryCellDelegate?
|
||||
|
||||
// TODO real icons
|
||||
let videoBadgeImage = #imageLiteral(resourceName: "video-video-selected")
|
||||
let animatedBadgeImage = #imageLiteral(resourceName: "video-mute-selected")
|
||||
|
||||
override init(frame: CGRect) {
|
||||
self.imageView = UIImageView()
|
||||
imageView.contentMode = .scaleAspectFill
|
||||
|
||||
self.badgeView = UIImageView()
|
||||
badgeView.contentMode = .scaleAspectFit
|
||||
badgeView.isHidden = true
|
||||
|
||||
badgeView.backgroundColor = UIColor.white
|
||||
let badgeLabel = UILabel()
|
||||
// badgeLabel.text = "GIF"
|
||||
badgeLabel.textColor = UIColor.gray
|
||||
badgeLabel.adjustsFontSizeToFitWidth = true
|
||||
badgeView.addSubview(badgeLabel)
|
||||
badgeLabel.autoPinEdgesToSuperviewEdges()
|
||||
|
||||
super.init(frame: frame)
|
||||
|
||||
self.tapGesture = UITapGestureRecognizer(target: self, action: #selector(didTap))
|
||||
self.addGestureRecognizer(tapGesture)
|
||||
|
||||
self.clipsToBounds = true
|
||||
self.addSubview(imageView)
|
||||
self.contentView.addSubview(imageView)
|
||||
self.contentView.addSubview(badgeView)
|
||||
|
||||
badgeView.autoPinEdge(toSuperviewEdge: .leading, withInset: 3)
|
||||
badgeView.autoPinEdge(toSuperviewEdge: .bottom, withInset: 3)
|
||||
badgeView.autoSetDimensions(to: CGSize(width: 15, height: 10))
|
||||
badgeView.layer.cornerRadius = 2
|
||||
imageView.autoPinEdgesToSuperviewEdges()
|
||||
}
|
||||
|
||||
|
@ -580,6 +603,17 @@ fileprivate class MediaGalleryCell: UICollectionViewCell {
|
|||
public func configure(item: MediaGalleryItem, delegate: MediaGalleryCellDelegate) {
|
||||
self.item = item
|
||||
self.imageView.image = item.thumbnailImage
|
||||
if item.isVideo {
|
||||
self.badgeView.isHidden = false
|
||||
// self.badgeView.image = self.videoBadgeImage
|
||||
} else if item.isAnimated {
|
||||
self.badgeView.isHidden = false
|
||||
// self.badgeView.image = self.animatedBadgeImage
|
||||
} else {
|
||||
assert(item.isImage)
|
||||
self.badgeView.isHidden = true
|
||||
}
|
||||
|
||||
self.delegate = delegate
|
||||
}
|
||||
|
||||
|
@ -588,6 +622,7 @@ fileprivate class MediaGalleryCell: UICollectionViewCell {
|
|||
|
||||
self.item = nil
|
||||
self.imageView.image = nil
|
||||
self.badgeView.isHidden = true
|
||||
self.delegate = nil
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue