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
		
	
| 
											7 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) | ||
| 
											7 years ago
										 |     func canRemoveApprovalRailCellView(_ approvalRailCellView: ApprovalRailCellView) -> Bool | ||
| 
											7 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 { | ||
| 
											7 years ago
										 |             if let approvalRailCellDelegate = self.approvalRailCellDelegate, | ||
|  |                 approvalRailCellDelegate.canRemoveApprovalRailCellView(self) { | ||
| 
											7 years ago
										 | 
 | ||
| 
											7 years ago
										 |                 addSubview(deleteButton) | ||
|  |                 deleteButton.autoPinEdge(toSuperviewEdge: .top, withInset: cellBorderWidth) | ||
|  |                 deleteButton.autoPinEdge(toSuperviewEdge: .trailing, withInset: cellBorderWidth + 4) | ||
|  |             } | ||
| 
											7 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() | ||
|  |         } | ||
|  |     } | ||
|  | } |