// // HDLEZVideoDoorToolView.m // EZSDK // // Created by Davin on 2023/6/21. // #import "HDLEZVideoDoorToolView.h" #import "HDLEZOPButton.h" @interface HDLEZVideoDoorToolView () @property (nonatomic, strong) HDLEZOPButton *hangUpButton; // 挂断按钮 @property (nonatomic, strong) UIView *baseToolView; // 工具视图 @property (nonatomic, strong) HDLEZOPButton *playButton; // 播放/暂停 @property (nonatomic, strong) HDLEZOPButton *volumeButton; // 音量开启/关闭 @property (nonatomic, strong) HDLEZOPButton *qualityButton; // 清晰度 @property (nonatomic, strong) HDLEZOPButton *fullSceneButton; // 退出全屏 @property (nonatomic, strong) HDLEZVideoQualityBoxView *qualityBox; // 清晰度弹框视图 @property (nonatomic, assign) BOOL isPlaying; // 是否正在播放 @property (nonatomic, assign) BOOL soundOn; // 音量是否开启 @property (nonatomic, assign) NSInteger videoLevel; // 清晰度 @property (nonatomic, copy) void(^fullOperation)(HDLEZVideoFullSceneOperation operationType); @end @implementation HDLEZVideoDoorToolView - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { [self createSubviews]; } return self; } - (void)createSubviews { self.backgroundColor = [UIColor clearColor]; [self addSubview:self.hangUpButton]; [self addSubview:self.baseToolView]; [self addSubview:self.playButton]; [self addSubview:self.volumeButton]; [self addSubview:self.qualityButton]; [self addSubview:self.fullSceneButton]; [self addSubview:self.qualityBox]; [self.hangUpButton mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.mas_equalTo(self.baseToolView.mas_top).offset(-40); make.centerX.mas_equalTo(self.mas_centerX); make.width.mas_equalTo(70); make.height.mas_equalTo(110); }]; [self.baseToolView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(self.mas_left).offset(16.); make.bottom.mas_equalTo(self.mas_bottom).offset(-37.); make.right.mas_equalTo(self.mas_right).offset(-16.); make.height.mas_equalTo(102); }]; [self.playButton mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(self.baseToolView.mas_left).offset(12.); make.centerY.mas_equalTo(self.baseToolView.mas_centerY); make.height.mas_equalTo(70); }]; [self.volumeButton mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(self.playButton.mas_right).offset(21.); make.centerY.mas_equalTo(self.baseToolView.mas_centerY); make.width.mas_equalTo(self.playButton.mas_width).multipliedBy(1.); make.height.mas_equalTo(self.playButton.mas_height).multipliedBy(1.); }]; [self.qualityButton mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(self.volumeButton.mas_right).offset(21.); make.centerY.mas_equalTo(self.baseToolView.mas_centerY); make.width.mas_equalTo(self.playButton.mas_width).multipliedBy(1.); make.height.mas_equalTo(self.playButton.mas_height).multipliedBy(1.); }]; [self.fullSceneButton mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(self.qualityButton.mas_right).offset(21.); make.right.mas_equalTo(self.baseToolView.mas_right).offset(-12); make.centerY.mas_equalTo(self.baseToolView.mas_centerY); make.width.mas_equalTo(self.playButton.mas_width).multipliedBy(1.); make.height.mas_equalTo(self.playButton.mas_height).multipliedBy(1.); }]; [self.qualityBox mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.mas_equalTo(self.baseToolView.mas_top); make.centerX.mas_equalTo(self.qualityButton.mas_centerX); make.width.mas_equalTo(80); make.height.mas_equalTo(168); }]; [self.hangUpButton addTarget:self action:@selector(hangUpAction) forControlEvents:UIControlEventTouchUpInside]; [self.playButton addTarget:self action:@selector(playAction) forControlEvents:UIControlEventTouchUpInside]; [self.volumeButton addTarget:self action:@selector(volumeAction) forControlEvents:UIControlEventTouchUpInside]; [self.qualityButton addTarget:self action:@selector(qualityAction) forControlEvents:UIControlEventTouchUpInside]; [self.fullSceneButton addTarget:self action:@selector(fullSceneAction) forControlEvents:UIControlEventTouchUpInside]; __weak HDLEZVideoDoorToolView *weakself = self; [self.qualityBox videoQualityChange:^(HDLEZVideoFullSceneOperation operationType) { if (weakself.fullOperation) { weakself.fullOperation(operationType); } [weakself qualityAction]; if (operationType == HDLEZVideoFullSceneOperationOfSmooth) { [weakself videoLevel:0]; } else if (operationType == HDLEZVideoFullSceneOperationOfSmooth) { [weakself videoLevel:1]; } else if (operationType == HDLEZVideoFullSceneOperationOfSmooth) { [weakself videoLevel:2]; } }]; } #pragma mark - PublishMethod - (void)configPlayStatus:(BOOL)isPlaying soundOn:(BOOL)soundOn videoLevel:(NSInteger)videoLevel toolOperation:(void(^)(HDLEZVideoFullSceneOperation operationType))fullOperation { // self.isPlaying = isPlaying; // self.soundOn = soundOn; // self.videoLevel = videoLevel; self.fullOperation = fullOperation; [self playStatus:isPlaying]; [self soundOn:soundOn]; [self videoLevel:videoLevel]; } /// 设置播放状态 /// - Parameter isPlaying: 播放状态 - (void)playStatus:(BOOL)isPlaying { self.isPlaying = isPlaying; self.playButton.selected = !isPlaying; } /// 音量设置 /// - Parameter soundOn: 是否开启音量 - (void)soundOn:(BOOL)soundOn { self.soundOn = soundOn; self.volumeButton.selected = !soundOn; NSLog(@"######%@声音", soundOn ? @"开启" : @"关闭"); } /// 清晰度设置 /// - Parameter videoLevel: 清晰度 - (void)videoLevel:(NSInteger)videoLevel { self.videoLevel = self.videoLevel; if (videoLevel == 0) { [self.qualityButton setImage:[UIImage imageNamed:@"hdl_ez_cat_eyes_full_smooth"] forState:UIControlStateNormal]; } else if (videoLevel == 1) { [self.qualityButton setImage:[UIImage imageNamed:@"hdl_ez_cat_eyes_full_balance"] forState:UIControlStateNormal]; } else if (videoLevel == 2) { [self.qualityButton setImage:[UIImage imageNamed:@"hdl_ez_cat_eyes_full_hd_full"] forState:UIControlStateNormal]; } } - (void)ringRingRing:(BOOL)isRing { self.hangUpButton.hidden = !isRing; } /// 设置清晰度调节 /// - Parameter isSupport: 是否支持调整清晰度 - (void)supportVideoLevelChange:(BOOL)isSupport { self.qualityButton.userInteractionEnabled = isSupport; } #pragma mark - PrivateMethod - (void)hangUpAction { if (self.fullOperation) { self.fullOperation(HDLEZVideoFullSceneOperationOfHangUp); } } - (void)playAction { [self playStatus:!self.isPlaying]; [self qualityStatusChanged:YES]; if (self.fullOperation) { self.fullOperation(self.isPlaying ? HDLEZVideoFullSceneOperationOfPause : HDLEZVideoFullSceneOperationOfPlay); } } - (void)volumeAction { [self soundOn:!self.soundOn]; [self qualityStatusChanged:YES]; if (self.fullOperation) { self.fullOperation(self.soundOn ? HDLEZVideoFullSceneOperationOfSound : HDLEZVideoFullSceneOperationOfSoundOff); } } - (void)qualityAction { // self.qualityButton.selected = !self.qualityButton.selected; // self.qualityBox.hidden = !self.qualityButton.selected; // self.hangUpButton.enabled = !self.qualityButton.selected; // self.hangUpButton.alpha = self.qualityButton.selected ? 0.5 : 1; [self qualityStatusChanged:self.qualityButton.selected]; } - (void)qualityStatusChanged:(BOOL)isSelected { self.qualityButton.selected = !isSelected; self.qualityBox.hidden = isSelected; self.hangUpButton.enabled = isSelected; self.hangUpButton.alpha = !isSelected ? 0.5 : 1; } - (void)fullSceneAction { [self qualityStatusChanged:YES]; if (self.fullOperation) { self.fullOperation(HDLEZVideoFullSceneOperationOfExitFull); } } #pragma mark - Getter - (HDLEZOPButton *)hangUpButton { if (!_hangUpButton) { _hangUpButton = [HDLEZOPButton buttonWithType:UIButtonTypeCustom]; _hangUpButton.imagePosition = HDLEZOPButtonImagePositionTop; _hangUpButton.spacingBetweenImageAndTitle = 12.; [_hangUpButton setTitle:NSLocalizedString(@"device_callout_hang_up", @"挂断") forState:UIControlStateNormal]; [_hangUpButton setTitleColor:HDLEZ_COLOR_TEXT_WHITE forState:UIControlStateNormal]; _hangUpButton.titleLabel.font = HDLEZ_Get_FontRegularWithSize(HDLEZ_FontSize_14); [_hangUpButton setImage:[UIImage imageNamed:@"hdl_ez_cat_eyes_full_hang_up"] forState:UIControlStateNormal]; _hangUpButton.hidden = YES; } return _hangUpButton; } - (UIView *)baseToolView { if (!_baseToolView) { _baseToolView = [[UIView alloc] init]; _baseToolView.backgroundColor = HDLEZHEXCOLOR(0xFFFFFF, 0.16); _baseToolView.layer.cornerRadius = 16.; _baseToolView.clipsToBounds = YES; } return _baseToolView; } - (HDLEZOPButton *)playButton { if (!_playButton) { _playButton = [HDLEZOPButton buttonWithType:UIButtonTypeCustom]; _playButton.imagePosition = HDLEZOPButtonImagePositionTop; _playButton.spacingBetweenImageAndTitle = 8.; [_playButton setTitle:NSLocalizedString(@"device_full_scene_pause", @"暂停") forState:UIControlStateNormal]; [_playButton setTitle:NSLocalizedString(@"device_full_scene_play", @"播放") forState:UIControlStateSelected]; [_playButton setTitleColor:HDLEZ_COLOR_TEXT_WHITE forState:UIControlStateNormal]; _playButton.titleLabel.font = HDLEZ_Get_FontRegularWithSize(HDLEZ_FontSize_14); [_playButton setImage:[UIImage imageNamed:@"hdl_ez_cat_eyes_full_pause"] forState:UIControlStateNormal]; [_playButton setImage:[UIImage imageNamed:@"hdl_ez_cat_eyes_full_play"] forState:UIControlStateSelected]; _playButton.selected = NO; } return _playButton; } - (HDLEZOPButton *)volumeButton { if (!_volumeButton) { _volumeButton = [HDLEZOPButton buttonWithType:UIButtonTypeCustom]; _volumeButton.imagePosition = HDLEZOPButtonImagePositionTop; _volumeButton.spacingBetweenImageAndTitle = 8.; [_volumeButton setTitle:NSLocalizedString(@"device_full_scene_sound", @"音量") forState:UIControlStateNormal]; [_volumeButton setTitle:NSLocalizedString(@"device_full_scene_sound_off", @"静音") forState:UIControlStateSelected]; [_volumeButton setTitleColor:HDLEZ_COLOR_TEXT_WHITE forState:UIControlStateNormal]; _volumeButton.titleLabel.font = HDLEZ_Get_FontRegularWithSize(HDLEZ_FontSize_14); [_volumeButton setImage:[UIImage imageNamed:@"hdl_ez_cat_eyes_full_volume"] forState:UIControlStateNormal]; [_volumeButton setImage:[UIImage imageNamed:@"hdl_ez_cat_eyes_full_sound_off"] forState:UIControlStateSelected]; _volumeButton.selected = NO; } return _volumeButton; } - (HDLEZOPButton *)qualityButton { if (!_qualityButton) { _qualityButton = [HDLEZOPButton buttonWithType:UIButtonTypeCustom]; _qualityButton.imagePosition = HDLEZOPButtonImagePositionTop; _qualityButton.spacingBetweenImageAndTitle = 8.; [_qualityButton setTitle:NSLocalizedString(@"device_full_scene_quality", @"清晰度") forState:UIControlStateNormal]; [_qualityButton setTitleColor:HDLEZ_COLOR_TEXT_WHITE forState:UIControlStateNormal]; _qualityButton.titleLabel.font = HDLEZ_Get_FontRegularWithSize(HDLEZ_FontSize_14); [_qualityButton setImage:[UIImage imageNamed:@"hdl_ez_cat_eyes_full_smooth"] forState:UIControlStateNormal]; _qualityButton.selected = NO; } return _qualityButton; } - (HDLEZOPButton *)fullSceneButton { if (!_fullSceneButton) { _fullSceneButton = [HDLEZOPButton buttonWithType:UIButtonTypeCustom]; _fullSceneButton.imagePosition = HDLEZOPButtonImagePositionTop; _fullSceneButton.spacingBetweenImageAndTitle = 8.; [_fullSceneButton setTitle:NSLocalizedString(@"device_full_scene_exit_full", @"退出全屏") forState:UIControlStateNormal]; [_fullSceneButton setTitleColor:HDLEZ_COLOR_TEXT_WHITE forState:UIControlStateNormal]; _fullSceneButton.titleLabel.font = HDLEZ_Get_FontRegularWithSize(HDLEZ_FontSize_14); [_fullSceneButton setImage:[UIImage imageNamed:@"hdl_ez_cat_eyes_full_exit"] forState:UIControlStateNormal]; } return _fullSceneButton; } - (HDLEZVideoQualityBoxView *)qualityBox { if (!_qualityBox) { _qualityBox = [[HDLEZVideoQualityBoxView alloc] init]; _qualityBox.hidden = YES; } return _qualityBox; } @end