Files
featherVoice/QXLive/Room(房间)/View/点歌/QXRoomSongListSubView.m

197 lines
7.0 KiB
Mathematica
Raw Normal View History

2025-08-08 10:49:36 +08:00
//
// QXRoomSongListSubView.m
// QXLive
//
// Created by on 2025/6/9.
//
#import "QXRoomSongListSubView.h"
#import "QXRoomSongListCell.h"
#import "QXAgoraEngine.h"
#import "QXMineNetwork.h"
@interface QXRoomSongListSubView()<UITableViewDataSource,UITableViewDelegate,UITextFieldDelegate>
@property (nonatomic,strong)UIView *searchBgView;
@property (nonatomic,strong)UIImageView *searchIcon;
@property (nonatomic,strong)UITextField *textField;
@property (nonatomic,strong)NSMutableArray *dataArray;
@property (nonatomic,assign)NSInteger page;
@end
@implementation QXRoomSongListSubView
-(UIView *)listView{
return self;
}
-(void)listWillAppear{
if (!self.isSearch) {
[self getSongList];
}
}
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self initSubviews];
}
return self;
}
-(void)initSubviews{
self.page = 1;
self.searchBgView = [[UIView alloc] initWithFrame:CGRectMake(16, 6, self.width-32, 35)];
self.searchBgView.backgroundColor = RGB16(0xEFF2F8);
[self.searchBgView addRoundedCornersWithRadius:17.5];
[self addSubview:self.searchBgView];
self.searchIcon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_song_search"]];
self.searchIcon.frame = CGRectMake(10, 10, 15, 15);
[self.searchBgView addSubview:self.searchIcon];
self.textField = [[UITextField alloc] initWithFrame:CGRectMake(self.searchIcon.right+2, 0, self.width-self.searchIcon.right-2-10, 35)];
self.textField.textColor = RGB16(0x333333);
self.textField.placeholder = QXText(@"请输入歌名搜索");
self.textField.font = [UIFont systemFontOfSize:13];
self.textField.returnKeyType = UIReturnKeyDone;
[self.textField addTarget:self action:@selector(textDidChange:) forControlEvents:UIControlEventEditingChanged];
self.textField.delegate = self;
[self.searchBgView addSubview:self.textField];
self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, self.searchBgView.bottom+10, self.width, self.height-self.searchBgView.bottom-10) style:(UITableViewStylePlain)];
self.tableView.delegate = self;
self.tableView.dataSource = self;
self.tableView.backgroundColor = [UIColor clearColor];
self.tableView.rowHeight = 72;
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
MJWeakSelf
self.tableView.mj_footer = [MJRefreshBackStateFooter footerWithRefreshingBlock:^{
weakSelf.page++;
[weakSelf getSongList];
}];
self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
weakSelf.page = 1;
[weakSelf getSongList];
}];
[self addSubview:self.tableView];
// [self getSongList];
}
-(void)setIsBgMusic:(BOOL)isBgMusic{
_isBgMusic = isBgMusic;
[self.tableView reloadData];
}
#pragma mark - UITextFieldDelegate
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
return YES;
}
-(void)textFieldDidBeginEditing:(UITextField *)textField{
if (self.beiginEditBlock) {
self.beiginEditBlock();
}
}
-(void)textFieldDidEndEditing:(UITextField *)textField{
if (self.endEditBlock) {
self.endEditBlock();
}
}
-(void)setIsSearch:(BOOL)isSearch{
_isSearch = isSearch;
self.searchBgView.hidden = !isSearch;
self.tableView.frame = CGRectMake(0, isSearch?self.searchBgView.bottom+10:6, self.width, isSearch?(self.height-self.searchBgView.bottom-10):self.height - 6);
}
-(void)setRoomId:(NSString *)roomId{
_roomId = roomId;
[self getSongList];
}
-(void)getSongList{
MJWeakSelf
if (self.isSearch) {
if (self.textField.text.length == 0) {
return;
}
[[QXAgoraEngine sharedEngine] searchSongWithKeyword:self.textField.text page:self.page resultBlock:^(NSArray<AgoraMusic *> * _Nonnull songList, BOOL isReload) {
dispatch_async(dispatch_get_main_queue(), ^{
if (isReload) {
[weakSelf.dataArray removeAllObjects];
}
for (AgoraMusic*music in songList) {
if ([music.singer isEqualToString:@"彭丽媛"]) {
continue;
}
QXSongListModel *model = [[QXSongListModel alloc] init];
model.song_code = music.songCode;
model.song_name = music.name;
model.poster = music.poster;
model.singer = music.singer;
model.duration = music.durationS;
[weakSelf.dataArray addObject:model];
}
[weakSelf.tableView reloadData];
if (songList.count == 0) {
weakSelf.tableView.mj_footer.state = MJRefreshStateNoMoreData;
}else{
[weakSelf.tableView.mj_footer endRefreshing];
}
[weakSelf.tableView.mj_header endRefreshing];
});
}];
}else{
if (self.isBgMusic) {
self.dataArray = [NSMutableArray arrayWithArray:[QXAgoraEngine sharedEngine].bgMusicArray];
[self.tableView reloadData];
[self.tableView.mj_header endRefreshing];
self.tableView.mj_footer.state = MJRefreshStateNoMoreData;
}else{
[QXMineNetwork roomSongListWithRoomId:self.roomId successBlock:^(NSArray<QXSongListModel *> * _Nonnull list) {
[weakSelf.dataArray removeAllObjects];
[weakSelf.dataArray addObjectsFromArray:list];
[weakSelf.tableView reloadData];
weakSelf.tableView.mj_footer.state = MJRefreshStateNoMoreData;
[weakSelf.tableView.mj_header endRefreshing];
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
[weakSelf.tableView.mj_header endRefreshing];
}];
}
}
}
-(void)textDidChange:(UITextField*)textField{
[self getSongList];
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return self.dataArray.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
MJWeakSelf
QXRoomSongListCell *cell = [QXRoomSongListCell cellWithTableView:tableView];
cell.isBgMusic = self.isBgMusic;
cell.isCompere = self.isCompere;
cell.roomId = self.roomId;
cell.isSearch = self.isSearch;
cell.model = [self.dataArray objectAtIndex:indexPath.row];
cell.moveSuccessBlock = ^{
[weakSelf getSongList];
};
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
// QXSongListModel *model = self.dataArray[indexPath.row];
// [[QXAgoraEngine sharedEngine] ktv_EndSing];
// [[QXAgoraEngine sharedEngine] ktv_StartSing:YES withSong:model];
}
-(NSMutableArray *)dataArray{
if (!_dataArray) {
_dataArray = [NSMutableArray array];
}
return _dataArray;
}
@end