CSFileCell.m 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. //
  2. // CSFileCell.m
  3. // zhuxun
  4. //
  5. // Created by winsoft on 17/6/16.
  6. //
  7. //
  8. #import "CSFileCell.h"
  9. @interface CSFileCell()
  10. @property (nonatomic , weak) UIImageView *headerIconImageView;
  11. @property (nonatomic , weak) UILabel *fileNameLabel;
  12. @property (nonatomic , weak) UILabel *fileCreateTimeLabel;
  13. @property (nonatomic , weak) UILabel *fileSizeLabel;
  14. @property (nonatomic , weak) UIButton *fileExtensionSwitchImageView;
  15. @property (nonatomic , weak) CSFileExtensionViewForCell *fileExtensionView;
  16. @end
  17. @implementation CSFileCell
  18. + (CSFileCell *)fileCellWithTableView:(UITableView *)tableView indexPath:(NSIndexPath *)indexPath identifier:(NSString *)identifier opItems:(NSArray *)opItems
  19. {
  20. CSFileCell *fileCell = [tableView dequeueReusableCellWithIdentifier:identifier];
  21. if (!fileCell) {
  22. fileCell = [[CSFileCell alloc]initFileCellWithTableView:tableView indexPath:indexPath identifier:identifier opItems:opItems];
  23. }
  24. //csFileCell.indexPath = indexPath
  25. return fileCell;
  26. }
  27. - (instancetype)initFileCellWithTableView:(UITableView *)tableView indexPath:(NSIndexPath *)indexPath identifier:(NSString *)identifier opItems:(NSArray *)opItems
  28. {
  29. if (self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]) {
  30. self.tableView = tableView;
  31. UIImageView *headerIconImageView = [[UIImageView alloc]init];
  32. [headerIconImageView setImage:[UIImage imageNamed:@"file_unknown_icon"]];
  33. [self.contentView addSubview:headerIconImageView];
  34. self.headerIconImageView = headerIconImageView;
  35. UILabel *fileNameLabel = [[UILabel alloc]init];
  36. fileNameLabel.numberOfLines = 0;
  37. fileNameLabel.font = FileNameFont;
  38. [self.contentView addSubview:fileNameLabel];
  39. self.fileNameLabel = fileNameLabel;
  40. UILabel *fileCreateTimeLabel = [[UILabel alloc]init];
  41. fileCreateTimeLabel.textColor = LineForSubLineViewColor;
  42. fileCreateTimeLabel.font = FileCreateTimeFont;
  43. [self.contentView addSubview:fileCreateTimeLabel];
  44. self.fileCreateTimeLabel = fileCreateTimeLabel;
  45. UILabel *fileSizeLabel = [[UILabel alloc]init];
  46. fileSizeLabel.textAlignment = NSTextAlignmentRight;
  47. fileSizeLabel.textColor = LineForSubLineViewColor;
  48. fileSizeLabel.font = FileCreateTimeFont;
  49. [self.contentView addSubview:fileSizeLabel];
  50. self.fileSizeLabel = fileSizeLabel;
  51. if (opItems) {
  52. UIButton *fileExtensionSwitchImageView = [[UIButton alloc]init];
  53. [fileExtensionSwitchImageView addTarget:self action:@selector(extensionSwithOnOff) forControlEvents:UIControlEventTouchUpInside];
  54. [fileExtensionSwitchImageView setImage:[UIImage imageNamed:@"list_Group_Arrow_Down"] forState:UIControlStateNormal];
  55. [self.contentView addSubview:fileExtensionSwitchImageView];
  56. self.fileExtensionSwitchImageView = fileExtensionSwitchImageView;
  57. CSFileExtensionViewForCell *fileExtensionView = [[CSFileExtensionViewForCell alloc]initWithItmes: opItems];
  58. __weak typeof(self)weakSelf = self;
  59. fileExtensionView.extensionOpBlock = ^(ExtensionOP extensionOP,CSFileFrameModel *csFileFrameModel){
  60. if (weakSelf.extensionOpBlock) {
  61. weakSelf.extensionOpBlock(extensionOP, weakSelf.csFileFrameModel);
  62. }
  63. };
  64. [self.contentView addSubview:fileExtensionView];
  65. self.fileExtensionView = fileExtensionView;
  66. }
  67. }
  68. return self;
  69. }
  70. - (void)setCsFileFrameModel:(CSFileFrameModel *)csFileFrameModel
  71. {
  72. _csFileFrameModel = csFileFrameModel;
  73. [self initData];
  74. [self setNeedsLayout];
  75. }
  76. - (void)initData
  77. {
  78. //header iamge
  79. if (self.csFileFrameModel.fileModel.isdir) {
  80. [self.headerIconImageView setImage:[UIImage imageNamed:@"file_folder_icon"]];
  81. self.fileSizeLabel.hidden = YES;
  82. }else{
  83. [self.headerIconImageView setImage:[UIImage imageNamed:@"file_unknown_icon"]];
  84. self.fileSizeLabel.hidden = NO;
  85. }
  86. self.fileNameLabel.text = self.csFileFrameModel.fileModel.name;
  87. self.fileCreateTimeLabel.text = self.csFileFrameModel.strServerTime;
  88. double kbSize = self.csFileFrameModel.fileModel.size * 1.00f/1024 * 1.00f;
  89. if (kbSize>1024) {
  90. CGFloat mSize = kbSize / 1024 * 1.0f;
  91. self.fileSizeLabel.text = [NSString stringWithFormat:@"%.2lfM",floor(mSize*100) / 100 ];
  92. }else
  93. {
  94. self.fileSizeLabel.text = [NSString stringWithFormat:@"%.2lfkb",floor(kbSize*100) / 100];
  95. }
  96. //animation?
  97. if (self.csFileFrameModel.isFileExtensionOP) {
  98. self.fileExtensionView.hidden = NO;
  99. [self.fileExtensionSwitchImageView setImage:[UIImage imageNamed:@"list_Group_Arrow_Normal"] forState:UIControlStateNormal];
  100. }else {
  101. self.fileExtensionView.hidden = YES;
  102. [self.fileExtensionSwitchImageView setImage:[UIImage imageNamed:@"list_Group_Arrow_Down"] forState:UIControlStateNormal];
  103. }
  104. if (self.allowsMultipleSelection) {
  105. self.fileExtensionSwitchImageView.hidden = YES;
  106. }else self.fileExtensionSwitchImageView.hidden = NO;
  107. self.cellSelected = self.csFileFrameModel.isSelected;
  108. }
  109. - (void)extensionSwithOnOff
  110. {
  111. if (self.extensionSwitchBlock) {
  112. self.extensionSwitchBlock(self.csFileFrameModel);
  113. }
  114. }
  115. - (void)layoutSubviews
  116. {
  117. [super layoutSubviews];
  118. _headerIconImageView.frame = self.csFileFrameModel.headerIconImageViewFrame;
  119. _fileNameLabel.frame = self.csFileFrameModel.fileNameLabelFrame;
  120. _fileCreateTimeLabel.frame = self.csFileFrameModel.fileCreateTimeLabelFrame;
  121. _fileSizeLabel.frame = self.csFileFrameModel.fileSizeLabelFrame;
  122. //animation?
  123. __weak typeof(self)weakself = self;
  124. if(self.fileExtensionView){
  125. _fileExtensionSwitchImageView.frame = self.csFileFrameModel.fileExtensionSwithImageViewFrame;
  126. [UIView animateWithDuration:0.5 animations:^{
  127. weakself.fileExtensionView.frame = weakself.csFileFrameModel.fileExtensionViewFrame;
  128. }];
  129. }
  130. }
  131. @end