mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
3.2 KiB
Swift
93 lines
3.2 KiB
Swift
6 years ago
|
//
|
||
|
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
|
||
|
//
|
||
|
|
||
|
import Foundation
|
||
|
import UIKit
|
||
|
|
||
|
protocol ApprovalRailCellViewDelegate: class {
|
||
|
func approvalRailCellView(_ approvalRailCellView: ApprovalRailCellView, didRemoveItem attachmentItem: SignalAttachmentItem)
|
||
6 years ago
|
func canRemoveApprovalRailCellView(_ approvalRailCellView: ApprovalRailCellView) -> Bool
|
||
6 years ago
|
}
|
||
|
|
||
|
// MARK: -
|
||
|
|
||
|
public class ApprovalRailCellView: GalleryRailCellView {
|
||
|
|
||
|
weak var approvalRailCellDelegate: ApprovalRailCellViewDelegate?
|
||
|
|
||
|
lazy var deleteButton: UIButton = {
|
||
|
let button = OWSButton { [weak self] in
|
||
|
guard let strongSelf = self else { return }
|
||
|
|
||
|
guard let attachmentItem = strongSelf.item as? SignalAttachmentItem else {
|
||
|
owsFailDebug("attachmentItem was unexpectedly nil")
|
||
|
return
|
||
|
}
|
||
|
|
||
|
strongSelf.approvalRailCellDelegate?.approvalRailCellView(strongSelf, didRemoveItem: attachmentItem)
|
||
|
}
|
||
|
|
||
|
button.setImage(UIImage(named: "x-24")?.withRenderingMode(.alwaysTemplate), for: .normal)
|
||
|
button.tintColor = .white
|
||
|
button.layer.shadowColor = UIColor.black.cgColor
|
||
|
button.layer.shadowRadius = 2
|
||
|
button.layer.shadowOpacity = 0.66
|
||
|
button.layer.shadowOffset = .zero
|
||
|
|
||
|
let kButtonWidth: CGFloat = 24
|
||
|
button.autoSetDimensions(to: CGSize(width: kButtonWidth, height: kButtonWidth))
|
||
|
|
||
|
return button
|
||
|
}()
|
||
|
|
||
|
lazy var captionIndicator: UIView = {
|
||
|
let image = UIImage(named: "image_editor_caption")?.withRenderingMode(.alwaysTemplate)
|
||
|
let imageView = UIImageView(image: image)
|
||
|
imageView.tintColor = .white
|
||
|
imageView.layer.shadowColor = UIColor.black.cgColor
|
||
|
imageView.layer.shadowRadius = 2
|
||
|
imageView.layer.shadowOpacity = 0.66
|
||
|
imageView.layer.shadowOffset = .zero
|
||
|
return imageView
|
||
|
}()
|
||
|
|
||
|
override func setIsSelected(_ isSelected: Bool) {
|
||
|
super.setIsSelected(isSelected)
|
||
|
|
||
|
if isSelected {
|
||
6 years ago
|
if let approvalRailCellDelegate = self.approvalRailCellDelegate,
|
||
|
approvalRailCellDelegate.canRemoveApprovalRailCellView(self) {
|
||
6 years ago
|
|
||
6 years ago
|
addSubview(deleteButton)
|
||
|
deleteButton.autoPinEdge(toSuperviewEdge: .top, withInset: cellBorderWidth)
|
||
|
deleteButton.autoPinEdge(toSuperviewEdge: .trailing, withInset: cellBorderWidth + 4)
|
||
|
}
|
||
6 years ago
|
} else {
|
||
|
deleteButton.removeFromSuperview()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
override func configure(item: GalleryRailItem, delegate: GalleryRailCellViewDelegate) {
|
||
|
super.configure(item: item, delegate: delegate)
|
||
|
|
||
|
var hasCaption = false
|
||
|
if let attachmentItem = item as? SignalAttachmentItem {
|
||
|
if let captionText = attachmentItem.captionText {
|
||
|
hasCaption = captionText.count > 0
|
||
|
}
|
||
|
} else {
|
||
|
owsFailDebug("Invalid item.")
|
||
|
}
|
||
|
|
||
|
if hasCaption {
|
||
|
addSubview(captionIndicator)
|
||
|
|
||
|
captionIndicator.autoPinEdge(toSuperviewEdge: .top, withInset: cellBorderWidth)
|
||
|
captionIndicator.autoPinEdge(toSuperviewEdge: .leading, withInset: cellBorderWidth + 4)
|
||
|
} else {
|
||
|
captionIndicator.removeFromSuperview()
|
||
|
}
|
||
|
}
|
||
|
}
|