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
		
	
//
 | 
						|
//  Copyright (c) 2019 Open Whisper Systems. All rights reserved.
 | 
						|
//
 | 
						|
 | 
						|
import Foundation
 | 
						|
import UIKit
 | 
						|
 | 
						|
protocol ApprovalRailCellViewDelegate: class {
 | 
						|
    func approvalRailCellView(_ approvalRailCellView: ApprovalRailCellView, didRemoveItem attachmentItem: SignalAttachmentItem)
 | 
						|
    func canRemoveApprovalRailCellView(_ approvalRailCellView: ApprovalRailCellView) -> Bool
 | 
						|
}
 | 
						|
 | 
						|
// 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 {
 | 
						|
            if let approvalRailCellDelegate = self.approvalRailCellDelegate,
 | 
						|
                approvalRailCellDelegate.canRemoveApprovalRailCellView(self) {
 | 
						|
 | 
						|
                addSubview(deleteButton)
 | 
						|
                deleteButton.autoPinEdge(toSuperviewEdge: .top, withInset: cellBorderWidth)
 | 
						|
                deleteButton.autoPinEdge(toSuperviewEdge: .trailing, withInset: cellBorderWidth + 4)
 | 
						|
            }
 | 
						|
        } 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()
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |