123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436 |
- //
- // YMGreetingSettingCell.m
- // MSYOUPAI
- //
- // Created by YoMi on 2024/2/24.
- // Copyright © 2024 MS. All rights reserved.
- //
- #import "YMGreetingSettingCell.h"
- #import "YMGreetingSettingCellViewModel.h"
- @interface YMGreetingSettingCell ()<YMAudioPlayerDelegate,YBImageBrowserDelegate>
- /// 打招呼设置模板VM
- @property (nonatomic, strong) YMGreetingSettingCellViewModel *viewModel;
- /// 基础视图
- @property (nonatomic, strong) UIView *baseView;
- /// 打招呼模板名称标签
- @property (nonatomic, strong) UILabel *greetingTemplateNameLb;
- /// 操作堆叠视图
- @property (nonatomic, strong) UIStackView *operationStackView;
- /// 编辑模板名称
- @property (nonatomic, strong) UIButton *editTemplateNameBtn;
- /// 删除模板按钮
- @property (nonatomic, strong) UIButton *deleteTemplateBtn;
- /// 默认模板按钮
- @property (nonatomic, strong) UIButton *defaultTemplateBtn;
- /// 打招呼模板文本标签
- @property (nonatomic, strong) UILabel *greetingTemplateTextLb;
- /// 内容堆叠视图
- @property (nonatomic, strong) UIStackView *contentStackView;
- /// 打招呼模板图片
- @property (nonatomic, strong) UIImageView *greetingTemplateImage;
- /// 打招呼模板语音视图
- @property (nonatomic, strong) UIView *greetingTemplateVoiceView;
- /// 打招呼模板语音播放图标
- @property (nonatomic, strong) UIImageView *greetingTemplateVoicePlayIcon;
- /// 打招呼模板语音声波图标
- @property (nonatomic, strong) UIImageView *greetingTemplateVoiceSonicIcon;
- /// 打招呼模板语音秒数
- @property (nonatomic, strong) UILabel *greetingTemplateVoiceSecondsLb;
- /// 打招呼模板图片
- @property (nonatomic, strong) UIImageView *greetingTemplateReviewStatusIcon;
- @end
- @implementation YMGreetingSettingCell
- - (void)awakeFromNib {
- [super awakeFromNib];
- // Initialization code
- }
- - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
- [super setSelected:selected animated:animated];
- // Configure the view for the selected state
- }
- - (void)ym_setupViews{
- self.backgroundColor = UIColor.clearColor;
- self.contentView.backgroundColor = UIColor.clearColor;
-
- [self.contentView addSubview:self.baseView];
- [self.baseView addSubview:self.greetingTemplateNameLb];
-
- [self.baseView addSubview:self.operationStackView];
- [self.operationStackView addArrangedSubview:self.editTemplateNameBtn];
- [self.operationStackView addArrangedSubview:self.deleteTemplateBtn];
- [self.operationStackView addArrangedSubview:self.defaultTemplateBtn];
-
- [self.baseView addSubview:self.greetingTemplateTextLb];
-
- [self.baseView addSubview:self.contentStackView];
- [self.contentStackView addArrangedSubview:self.greetingTemplateImage];
- [self.contentStackView addArrangedSubview:self.greetingTemplateVoiceView];
-
- [self.greetingTemplateVoiceView addSubview:self.greetingTemplateVoicePlayIcon];
- [self.greetingTemplateVoiceView addSubview:self.greetingTemplateVoiceSonicIcon];
- [self.greetingTemplateVoiceView addSubview:self.greetingTemplateVoiceSecondsLb];
-
- [self.baseView addSubview:self.greetingTemplateReviewStatusIcon];
- [self setNeedsUpdateConstraints];
- [self updateConstraintsIfNeeded];
- }
- - (void)updateConstraints{
-
- [self.baseView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.contentView).offset(adapt(10));
- make.left.equalTo(self.contentView).offset(adapt(10));
- make.right.equalTo(self.contentView).offset(adapt(-10));
- make.bottom.equalTo(self.contentView);
- }];
-
- [self.greetingTemplateNameLb mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.baseView).offset(adapt(15));
- make.left.equalTo(self.baseView).offset(adapt(15));
- make.height.mas_equalTo(adapt(25));
- }];
-
- [self.operationStackView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.centerY.equalTo(self.greetingTemplateNameLb.mas_centerY);
- make.right.equalTo(self.baseView).offset(adapt(-15));
- make.height.mas_equalTo(adapt(25));
- }];
-
- [self.editTemplateNameBtn mas_makeConstraints:^(MASConstraintMaker *make) {
- // make.centerY.equalTo(self.greetingTemplateNameLb.mas_centerY);
- // make.right.equalTo(self.deleteTemplateBtn.mas_left).offset(adapt(-10));
- make.width.height.mas_equalTo(adapt(25));
- }];
-
- [self.deleteTemplateBtn mas_makeConstraints:^(MASConstraintMaker *make) {
- // make.centerY.equalTo(self.greetingTemplateNameLb.mas_centerY);
- // make.right.equalTo(self.defaultTemplateBtn.mas_left).offset(adapt(-10));
- make.width.height.mas_equalTo(adapt(25));
- }];
-
- [self.defaultTemplateBtn mas_makeConstraints:^(MASConstraintMaker *make) {
- // make.centerY.equalTo(self.greetingTemplateNameLb.mas_centerY);
- // make.right.equalTo(self.baseView).offset(adapt(-15));
- make.width.mas_equalTo(adapt(100));
- make.height.mas_equalTo(adapt(25));
- }];
-
- [self.greetingTemplateTextLb mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.greetingTemplateNameLb.mas_bottom).offset(adapt(15));
- make.left.equalTo(self.baseView).offset(adapt(15));
- make.right.equalTo(self.baseView).offset(adapt(-15));
- }];
-
- [self.contentStackView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.greetingTemplateTextLb.mas_bottom).offset(adapt(15));
- make.left.equalTo(self.baseView).offset(adapt(15));
- make.bottom.equalTo(self.baseView).offset(adapt(-15)).priorityHigh();
- make.height.mas_equalTo(adapt(60));
- }];
-
- [self.greetingTemplateImage mas_makeConstraints:^(MASConstraintMaker *make) {
- make.width.height.mas_equalTo(adapt(60));
- }];
-
- // [self.greetingTemplateVoiceView mas_makeConstraints:^(MASConstraintMaker *make) {
- // make.bottom.equalTo(self.greetingTemplateImage.mas_bottom);
- // make.left.equalTo(self.greetingTemplateImage.mas_right).offset(adapt(10));
- // }];
-
- [self.greetingTemplateVoicePlayIcon mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.greetingTemplateVoiceView).offset(adapt(3));
- make.left.equalTo(self.greetingTemplateVoiceView).offset(adapt(3));
- make.bottom.equalTo(self.greetingTemplateVoiceView).offset(adapt(-3));
- make.width.height.mas_equalTo(adapt(20));
- }];
-
- [self.greetingTemplateVoiceSonicIcon mas_makeConstraints:^(MASConstraintMaker *make) {
- make.centerY.equalTo(self.greetingTemplateVoiceView.mas_centerY);
- make.left.equalTo(self.greetingTemplateVoicePlayIcon.mas_right).offset(adapt(5));
- make.width.height.mas_equalTo(adapt(20));
- }];
-
- [self.greetingTemplateVoiceSecondsLb mas_makeConstraints:^(MASConstraintMaker *make) {
- make.centerY.equalTo(self.greetingTemplateVoiceView.mas_centerY);
- make.left.equalTo(self.greetingTemplateVoiceSonicIcon.mas_right).offset(adapt(5));
- make.right.equalTo(self.greetingTemplateVoiceView).offset(adapt(-3));
- }];
-
- [self.greetingTemplateReviewStatusIcon mas_makeConstraints:^(MASConstraintMaker *make) {
- make.bottom.equalTo(self.baseView).offset(adapt(-15));
- make.right.equalTo(self.baseView).offset(adapt(-15));
- make.width.height.mas_equalTo(adapt(60));
- }];
-
- [super updateConstraints];
- }
- - (void)ym_bindViewModel:(YMGreetingSettingCellViewModel *)viewModel{
- if (!viewModel) {
- return;
- }
-
- _viewModel = viewModel;
-
- [YMAudioPlayer sharedInstance].delegate = self;
-
- self.greetingTemplateNameLb.text = self.viewModel.greetingTemplateName;
- self.greetingTemplateTextLb.text = self.viewModel.greetingTemplateText;
-
- if (self.viewModel.isReviewStatus && !self.viewModel.isReviewFailure) {
- self.editTemplateNameBtn.hidden = YES;
- self.deleteTemplateBtn.hidden = YES;
- self.defaultTemplateBtn.hidden = YES;
- }else if (!self.viewModel.isReviewStatus && self.viewModel.isReviewFailure) {
- self.editTemplateNameBtn.hidden = NO;
- self.deleteTemplateBtn.hidden = NO;
- self.defaultTemplateBtn.hidden = NO;
- }else if (self.viewModel.isReviewStatus && self.viewModel.isReviewFailure) {
- self.editTemplateNameBtn.hidden = YES;
- self.deleteTemplateBtn.hidden = NO;
- self.defaultTemplateBtn.hidden = YES;
- }
-
- self.greetingTemplateReviewStatusIcon.image = self.viewModel.greetingTemplateReviewStatusIcon;
- self.greetingTemplateReviewStatusIcon.hidden = self.viewModel.isReviewStatus == YES ? NO : YES;
-
- if (self.viewModel.isDefaultGreetingTemplate) {
- [self.defaultTemplateBtn setImage:ImageByName(@"ym_greeting_setting_selected_icon") forState:UIControlStateNormal];
- } else {
- [self.defaultTemplateBtn setImage:ImageByName(@"ym_greeting_setting_normal_icon") forState:UIControlStateNormal];
- }
-
- if (OCStringIsEmpty(self.viewModel.greetingTemplateImage)) {
- self.greetingTemplateImage.hidden = YES;
- }else{
- self.greetingTemplateImage.hidden = NO;
- [self.greetingTemplateImage sd_setImageWithURL:[LCTools getImageUrlWithAddress:self.viewModel.greetingTemplateImage]];
- }
-
- if (OCStringIsEmpty(self.viewModel.greetingTemplateVoice)) {
- self.greetingTemplateVoiceView.hidden = YES;
- }else{
- self.greetingTemplateVoiceView.hidden = NO;
- }
-
- self.greetingTemplateVoiceSecondsLb.text = stringFormat(@"%ld",self.viewModel.greetingTemplateVoiceSeconds);
- }
- #pragma mark - YMAudioPlayerDelegate
- - (void)audioPlayerDidPlayMusicCompleted{
- [YMTimer removeAllTimer];
- }
- - (void)audioPlayer:(YMAudioPlayer *)player stateChangeWithState:(FSAudioStreamState)state{
-
- }
- - (void)dealloc{
- [[YMAudioPlayer sharedInstance] stop];
- [YMTimer removeAllTimer];
- }
- - (UIView *)baseView{
- if (!_baseView) {
- _baseView = [[UIView alloc]init];
- _baseView.backgroundColor = HexColorFromRGB(0xFFFFFF);
- _baseView.layer.cornerRadius = adapt(10);
- _baseView.layer.masksToBounds = YES;
- }
- return _baseView;
- }
- - (UILabel *)greetingTemplateNameLb{
- if (!_greetingTemplateNameLb) {
- _greetingTemplateNameLb = [[UILabel alloc]init];
- _greetingTemplateNameLb.font = LCFont(14);
- _greetingTemplateNameLb.textColor = HexColorFromRGB(0x333333);
- _greetingTemplateNameLb.textAlignment = NSTextAlignmentLeft;
- _greetingTemplateNameLb.text = @"我的模板";
- }
- return _greetingTemplateNameLb;
- }
- - (UIStackView *)operationStackView{
- if(!_operationStackView){
- _operationStackView = [[UIStackView alloc]init];
- _operationStackView.translatesAutoresizingMaskIntoConstraints = NO;
- _operationStackView.axis = UILayoutConstraintAxisHorizontal;
- _operationStackView.alignment = UIStackViewAlignmentCenter;
- _operationStackView.spacing = adapt(10);
- }
- return _operationStackView;
- }
- - (UIButton *)editTemplateNameBtn{
- if (!_editTemplateNameBtn) {
- _editTemplateNameBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- [_editTemplateNameBtn setImage:ImageByName(@"ym_greeting_setting_edit_icon") forState:UIControlStateNormal];
- WS(weakSelf)
- [[[_editTemplateNameBtn rac_signalForControlEvents:UIControlEventTouchUpInside] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(id x) {
- [weakSelf.viewModel updateGreetingTemplateName];
- }];
- }
- return _editTemplateNameBtn;
- }
- - (UIButton *)deleteTemplateBtn{
- if (!_deleteTemplateBtn) {
- _deleteTemplateBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- [_deleteTemplateBtn setImage:ImageByName(@"ym_greeting_setting_delete_icon") forState:UIControlStateNormal];
- WS(weakSelf)
- [[[_deleteTemplateBtn rac_signalForControlEvents:UIControlEventTouchUpInside] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(id x) {
- [weakSelf.viewModel deleteGreetingTemplate];
- }];
- }
- return _deleteTemplateBtn;
- }
- - (UIButton *)defaultTemplateBtn{
- if (!_defaultTemplateBtn) {
- _defaultTemplateBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- _defaultTemplateBtn.titleLabel.font = LCFont(14);
- [_defaultTemplateBtn setTitle:@"使用此模板" forState:UIControlStateNormal];
- [_defaultTemplateBtn setTitleColor:HexColorFromRGB(0x333333) forState:UIControlStateNormal];
- [_defaultTemplateBtn setImage:ImageByName(@"ym_greeting_setting_normal_icon") forState:UIControlStateNormal];
- _defaultTemplateBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;
- [_defaultTemplateBtn setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight];
- CGFloat margin = 3;
- _defaultTemplateBtn.imageEdgeInsets = UIEdgeInsetsMake(0, -margin, 0, margin);
- WS(weakSelf)
- [[[_defaultTemplateBtn rac_signalForControlEvents:UIControlEventTouchUpInside] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(__kindof UIButton * _Nullable sender) {
- [weakSelf.viewModel defualGreetingTemplate];
- }];
- }
- return _defaultTemplateBtn;
- }
- - (UILabel *)greetingTemplateTextLb{
- if (!_greetingTemplateTextLb) {
- _greetingTemplateTextLb = [[UILabel alloc]init];
- _greetingTemplateTextLb.font = LCFont(13);
- _greetingTemplateTextLb.textColor = HexColorFromRGB(0x333333);
- _greetingTemplateTextLb.textAlignment = NSTextAlignmentLeft;
- _greetingTemplateTextLb.numberOfLines = 0;
- }
- return _greetingTemplateTextLb;
- }
- - (UIStackView *)contentStackView{
- if(!_contentStackView){
- _contentStackView = [[UIStackView alloc]init];
- _contentStackView.translatesAutoresizingMaskIntoConstraints = NO;
- _contentStackView.axis = UILayoutConstraintAxisHorizontal;
- _contentStackView.alignment = UIStackViewAlignmentBottom;
- _contentStackView.spacing = adapt(10);
- }
- return _contentStackView;
- }
- - (UIImageView *)greetingTemplateImage{
- if (!_greetingTemplateImage) {
- _greetingTemplateImage = [[UIImageView alloc]init];
- _greetingTemplateImage.contentMode = UIViewContentModeScaleAspectFill;
- _greetingTemplateImage.layer.cornerRadius = adapt(8);
- _greetingTemplateImage.layer.masksToBounds = YES;
- _greetingTemplateImage.userInteractionEnabled = YES;
- WS(weakSelf)
- UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];
- [_greetingTemplateImage addGestureRecognizer:tap];
- [[[tap rac_gestureSignal] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(id x) {
- NSMutableArray *tempArr = [NSMutableArray array];
- YBIBImageData *model = [YBIBImageData new];
- model.imageURL = [LCTools getImageUrlWithAddress:weakSelf.viewModel.greetingTemplateImage];
- model.projectiveView = weakSelf.greetingTemplateImage;
- [tempArr addObject:model];
- YBImageBrowser* youpaipbrowser = [YBImageBrowser new];
- youpaipbrowser.dataSourceArray = tempArr;
- youpaipbrowser.currentPage = 0;
- youpaipbrowser.delegate = weakSelf;
- [youpaipbrowser show];
- }];
- }
- return _greetingTemplateImage;
- }
- - (UIView *)greetingTemplateVoiceView{
- if (!_greetingTemplateVoiceView) {
- _greetingTemplateVoiceView = [[UIView alloc]init];
- _greetingTemplateVoiceView.backgroundColor = HexColorFromRGB(0xfd7bc5);
- _greetingTemplateVoiceView.layer.cornerRadius = adapt(25)/2;
- _greetingTemplateVoiceView.layer.masksToBounds = YES;
- _greetingTemplateVoiceView.userInteractionEnabled = YES;
- WS(weakSelf)
- UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];
- [_greetingTemplateVoiceView addGestureRecognizer:tap];
- [[[tap rac_gestureSignal] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(id x) {
- if (!OCStringIsEmpty(weakSelf.viewModel.greetingTemplateVoice)){
- [YMAudioPlayer sharedInstance].playUrlStr = [LCTools getImageUrlWithAddress:weakSelf.viewModel.greetingTemplateVoice].absoluteString;
-
-
- // [YMTimer addDiskTimerForTime:self.viewModel.greetingTemplateVoiceSeconds identifier:self.viewModel.greetingTemplateVoice handle:^(NSString * _Nonnull day, NSString * _Nonnull hour, NSString * _Nonnull minute, NSString * _Nonnull second, NSString * _Nonnull ms) {
- // FSStreamPosition current = [YMAudioPlayer sharedInstance].audioStream.currentTimePlayed;
- // FSStreamPosition end = [YMAudioPlayer sharedInstance].audioStream.duration;
- // CGFloat loadTime = current.minute * 60 + current.second;
- // CGFloat endTime = end.minute * 60 + end.second;
- // CGFloat seconds = endTime - loadTime;
- // self.greetingTemplateVoiceSecondsLb.text = stringFormat(@"%0.0f",seconds);
- // } finish:^(NSString * _Nonnull identifier) {
- // if (identifier == self.viewModel.greetingTemplateVoice) {
- // self.greetingTemplateVoiceSecondsLb.text = stringFormat(@"%ld",self.viewModel.greetingTemplateVoiceSeconds);
- // }
- // } pause:^(NSString * _Nonnull identifier) {
- //
- // }];
- }else{
- NSLog(@"路径错误");
- }
- }];
- }
- return _greetingTemplateVoiceView;
- }
- - (UIImageView *)greetingTemplateVoicePlayIcon{
- if (!_greetingTemplateVoicePlayIcon) {
- _greetingTemplateVoicePlayIcon = [[UIImageView alloc]init];
- _greetingTemplateVoicePlayIcon.image = ImageByName(@"ym_greeting_setting_voice_play_icon");
- }
- return _greetingTemplateVoicePlayIcon;
- }
- - (UIImageView *)greetingTemplateVoiceSonicIcon{
- if (!_greetingTemplateVoiceSonicIcon) {
- _greetingTemplateVoiceSonicIcon = [[UIImageView alloc]init];
- _greetingTemplateVoiceSonicIcon.image = ImageByName(@"ym_greeting_setting_voice_sonic_icon");
- }
- return _greetingTemplateVoiceSonicIcon;
- }
- - (UILabel *)greetingTemplateVoiceSecondsLb{
- if (!_greetingTemplateVoiceSecondsLb) {
- _greetingTemplateVoiceSecondsLb = [[UILabel alloc]init];
- _greetingTemplateVoiceSecondsLb.font = LCFont(12);
- _greetingTemplateVoiceSecondsLb.textColor = HexColorFromRGB(0xFFFFFF);
- _greetingTemplateVoiceSecondsLb.textAlignment = NSTextAlignmentCenter;
- _greetingTemplateVoiceSecondsLb.text = @"**";
- }
- return _greetingTemplateVoiceSecondsLb;
- }
- - (UIImageView *)greetingTemplateReviewStatusIcon{
- if (!_greetingTemplateReviewStatusIcon) {
- _greetingTemplateReviewStatusIcon = [[UIImageView alloc]init];
- _greetingTemplateReviewStatusIcon.image = ImageByName(@"ym_greeting_setting_reviewing_icon");
- }
- return _greetingTemplateReviewStatusIcon;
- }
- @end
|