VideoDownLoadListCell.m 4.1 KB

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