mirror of
				https://github.com/SoPat712/YTLitePlus.git
				synced 2025-10-30 20:34:03 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			117 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
| //
 | |
| //  FLEXNetworkTransactionCell.m
 | |
| //  Flipboard
 | |
| //
 | |
| //  Created by Ryan Olson on 2/8/15.
 | |
| //  Copyright (c) 2020 FLEX Team. All rights reserved.
 | |
| //
 | |
| 
 | |
| #import "FLEXColor.h"
 | |
| #import "FLEXNetworkTransactionCell.h"
 | |
| #import "FLEXNetworkTransaction.h"
 | |
| #import "FLEXUtility.h"
 | |
| #import "FLEXResources.h"
 | |
| 
 | |
| NSString * const kFLEXNetworkTransactionCellIdentifier = @"kFLEXNetworkTransactionCellIdentifier";
 | |
| 
 | |
| @interface FLEXNetworkTransactionCell ()
 | |
| 
 | |
| @property (nonatomic) UIImageView *thumbnailImageView;
 | |
| @property (nonatomic) UILabel *nameLabel;
 | |
| @property (nonatomic) UILabel *pathLabel;
 | |
| @property (nonatomic) UILabel *transactionDetailsLabel;
 | |
| 
 | |
| @end
 | |
| 
 | |
| @implementation FLEXNetworkTransactionCell
 | |
| 
 | |
| - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
 | |
|     self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
 | |
|     if (self) {
 | |
|         self.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
 | |
| 
 | |
|         self.nameLabel = [UILabel new];
 | |
|         self.nameLabel.font = UIFont.flex_defaultTableCellFont;
 | |
|         [self.contentView addSubview:self.nameLabel];
 | |
| 
 | |
|         self.pathLabel = [UILabel new];
 | |
|         self.pathLabel.font = UIFont.flex_defaultTableCellFont;
 | |
|         self.pathLabel.textColor = [UIColor colorWithWhite:0.4 alpha:1.0];
 | |
|         self.pathLabel.lineBreakMode = NSLineBreakByTruncatingMiddle;
 | |
|         [self.contentView addSubview:self.pathLabel];
 | |
| 
 | |
|         self.thumbnailImageView = [UIImageView new];
 | |
|         self.thumbnailImageView.layer.borderColor = UIColor.blackColor.CGColor;
 | |
|         self.thumbnailImageView.layer.borderWidth = 1.0;
 | |
|         self.thumbnailImageView.contentMode = UIViewContentModeScaleAspectFit;
 | |
|         [self.contentView addSubview:self.thumbnailImageView];
 | |
| 
 | |
|         self.transactionDetailsLabel = [UILabel new];
 | |
|         self.transactionDetailsLabel.font = [UIFont systemFontOfSize:10.0];
 | |
|         self.transactionDetailsLabel.textColor = [UIColor colorWithWhite:0.65 alpha:1.0];
 | |
|         [self.contentView addSubview:self.transactionDetailsLabel];
 | |
|     }
 | |
|     return self;
 | |
| }
 | |
| 
 | |
| - (void)setTransaction:(FLEXNetworkTransaction *)transaction {
 | |
|     if (_transaction != transaction) {
 | |
|         _transaction = transaction;
 | |
|         [self setNeedsLayout];
 | |
|     }
 | |
| }
 | |
| 
 | |
| - (void)layoutSubviews {
 | |
|     [super layoutSubviews];
 | |
| 
 | |
|     const CGFloat kVerticalPadding = 8.0;
 | |
|     const CGFloat kLeftPadding = 10.0;
 | |
|     const CGFloat kImageDimension = 32.0;
 | |
| 
 | |
|     CGFloat thumbnailOriginY = round((self.contentView.bounds.size.height - kImageDimension) / 2.0);
 | |
|     self.thumbnailImageView.frame = CGRectMake(kLeftPadding, thumbnailOriginY, kImageDimension, kImageDimension);
 | |
|     self.thumbnailImageView.image = self.transaction.thumbnail;
 | |
| 
 | |
|     CGFloat textOriginX = CGRectGetMaxX(self.thumbnailImageView.frame) + kLeftPadding;
 | |
|     CGFloat availableTextWidth = self.contentView.bounds.size.width - textOriginX;
 | |
| 
 | |
|     self.nameLabel.text = [self nameLabelText];
 | |
|     CGSize nameLabelPreferredSize = [self.nameLabel sizeThatFits:CGSizeMake(availableTextWidth, CGFLOAT_MAX)];
 | |
|     self.nameLabel.frame = CGRectMake(textOriginX, kVerticalPadding, availableTextWidth, nameLabelPreferredSize.height);
 | |
|     self.nameLabel.textColor = self.transaction.displayAsError ? UIColor.redColor : FLEXColor.primaryTextColor;
 | |
| 
 | |
|     self.pathLabel.text = [self pathLabelText];
 | |
|     CGSize pathLabelPreferredSize = [self.pathLabel sizeThatFits:CGSizeMake(availableTextWidth, CGFLOAT_MAX)];
 | |
|     CGFloat pathLabelOriginY = ceil((self.contentView.bounds.size.height - pathLabelPreferredSize.height) / 2.0);
 | |
|     self.pathLabel.frame = CGRectMake(textOriginX, pathLabelOriginY, availableTextWidth, pathLabelPreferredSize.height);
 | |
| 
 | |
|     self.transactionDetailsLabel.text = [self transactionDetailsLabelText];
 | |
|     CGSize transactionLabelPreferredSize = [self.transactionDetailsLabel sizeThatFits:CGSizeMake(availableTextWidth, CGFLOAT_MAX)];
 | |
|     CGFloat transactionDetailsOriginX = textOriginX;
 | |
|     CGFloat transactionDetailsLabelOriginY = CGRectGetMaxY(self.contentView.bounds) - kVerticalPadding - transactionLabelPreferredSize.height;
 | |
|     CGFloat transactionDetailsLabelWidth = self.contentView.bounds.size.width - transactionDetailsOriginX;
 | |
|     self.transactionDetailsLabel.frame = CGRectMake(transactionDetailsOriginX, transactionDetailsLabelOriginY, transactionDetailsLabelWidth, transactionLabelPreferredSize.height);
 | |
| }
 | |
| 
 | |
| - (NSString *)nameLabelText {
 | |
|     return self.transaction.primaryDescription;
 | |
| }
 | |
| 
 | |
| - (NSString *)pathLabelText {
 | |
|     return self.transaction.secondaryDescription;
 | |
| }
 | |
| 
 | |
| - (NSString *)transactionDetailsLabelText {
 | |
|     return self.transaction.tertiaryDescription;
 | |
| }
 | |
| 
 | |
| + (CGFloat)preferredCellHeight {
 | |
|     return 65.0;
 | |
| }
 | |
| 
 | |
| + (NSString *)reuseID {
 | |
|     return kFLEXNetworkTransactionCellIdentifier;
 | |
| }
 | |
| 
 | |
| @end
 | 
