VideoDownLoadListCell.m 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. //
  2. // VideoDownLoadListCell.m
  3. // jiaPei
  4. //
  5. // Created by 张嵘 on 2018/11/5.
  6. // Copyright © 2018 JCZ. All rights reserved.
  7. //
  8. #import "VideoDownLoadListCell.h"
  9. @interface VideoDownLoadListCell ()
  10. @property (nonatomic, strong) RQDownloadModel *downloadModel;
  11. @end
  12. @implementation VideoDownLoadListCell
  13. #pragma mark - Life Circle
  14. - (void)awakeFromNib {
  15. [super awakeFromNib];
  16. self.backgroundColor = backGroundColor;
  17. }
  18. - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
  19. [super setSelected:selected animated:animated];
  20. // Configure the view for the selected state
  21. }
  22. #pragma mark - About UI
  23. - (void)refreshUIWithDownloadModel:(RQDownloadModel *)downloadModel{
  24. RQDownloadStatus downloadStatus = downloadModel.status;
  25. CGFloat progress = downloadModel.progress;
  26. NSInteger progressInt = (NSInteger)(progress * 100);
  27. dispatch_async(dispatch_get_main_queue(), ^{
  28. // [self.progressView setProgress:progress];
  29. self.stateLabel.text = downloadModel.statusText;
  30. [self.downLoadBtn setTitle:nil forState:UIControlStateNormal];
  31. if(downloadStatus == RQDownloadStatus_None){
  32. [self.downLoadBtn setImage:[UIImage imageNamed:@"RQ_download_ready"] forState:UIControlStateNormal];
  33. }else if(downloadStatus == RQDownloadStatus_Running){
  34. [self.downLoadBtn setImage:nil forState:UIControlStateNormal];
  35. NSString *title = [NSString stringWithFormat:@"%zd%%",progressInt];
  36. [self.downLoadBtn setTitle:title forState:UIControlStateNormal];
  37. }else if(downloadStatus == RQDownloadStatus_Suspended){
  38. [self.downLoadBtn setImage:[UIImage imageNamed:@"RQ_download_pause"] forState:UIControlStateNormal];
  39. }else if(downloadStatus == RQDownloadStatus_Completed){
  40. [self.downLoadBtn setImage:[UIImage imageNamed:@"RQ_download_finished"] forState:UIControlStateNormal];
  41. }else if(downloadStatus == RQDownloadStatus_Failed){
  42. [self.downLoadBtn setImage:[UIImage imageNamed:@"RQ_download_fail"] forState:UIControlStateNormal];
  43. }else if(downloadStatus == RQDownloadStatus_Waiting){
  44. [self.downLoadBtn setImage:[UIImage imageNamed:@"RQ_download_waiting"] forState:UIControlStateNormal];
  45. }else{
  46. }
  47. [self layoutSubviews];
  48. });
  49. }
  50. #pragma mark - Pravite Method
  51. - (RQDownloadModel *)downloadModel {
  52. _downloadModel = [kRQDownloadDataBaseManager getModelWithUrl:self.model.urlString];
  53. if(!_downloadModel && _model){
  54. _downloadModel = [[RQDownloadModel alloc] init];
  55. _downloadModel = _model;
  56. }
  57. __weak typeof(self) weakSelf = self;
  58. _downloadModel.statusChanged = ^(RQDownloadModel *downloadModel) {
  59. [weakSelf refreshUIWithDownloadModel:downloadModel];
  60. };
  61. _downloadModel.progressChanged = ^(RQDownloadModel *downloadModel) {
  62. [weakSelf refreshUIWithDownloadModel:downloadModel];
  63. };
  64. return _downloadModel;
  65. }
  66. #pragma mark - Event response
  67. - (IBAction)downloadAction:(id)sender {
  68. RQDownloadStatus downloadStatus = self.downloadModel.status;
  69. if(downloadStatus == RQDownloadStatus_None){
  70. [kRQDownloadManager startDownloadTask:self.downloadModel];
  71. }else if(downloadStatus == RQDownloadStatus_Running){
  72. [kRQDownloadManager pauseDownloadTask:self.downloadModel];
  73. }else if(downloadStatus == RQDownloadStatus_Suspended){
  74. [kRQDownloadManager startDownloadTask:self.downloadModel];
  75. }else if(downloadStatus == RQDownloadStatus_Completed){
  76. VideoPlayViewController *vc = [[VideoPlayViewController alloc] init];
  77. vc.currentModel = self.downloadModel;
  78. [[RQ_SHARE_FUNCTION topViewController] navPushHideTabbarToVC:vc];
  79. }else if(downloadStatus == RQDownloadStatus_Failed){
  80. [kRQDownloadManager startDownloadTask:self.downloadModel];
  81. }else if(downloadStatus == RQDownloadStatus_Waiting){
  82. }else if(downloadStatus == RQDownloadStatus_Cancel){
  83. [kRQDownloadManager startDownloadTask:self.downloadModel];
  84. }
  85. }
  86. #pragma mark - Delegate methods
  87. #pragma mark - Getters/Setters/Lazy
  88. - (void)setModel:(RQDownloadModel *)model{
  89. _model = model;
  90. self.titleLabel.text = model.title;
  91. [self.ImageView sd_setImageWithURL:[NSURL URLWithString:model.imageUrl] placeholderImage:[UIImage imageNamed:@"NOIMG"]];
  92. [self refreshUIWithDownloadModel:model];
  93. }
  94. // 更新视图
  95. - (void)updateViewWithModel:(RQDownloadModel *)model {
  96. [self refreshUIWithDownloadModel:model];
  97. }
  98. @end