|
@@ -48,15 +48,15 @@ class PlaylistDetailViewController: LWBGViewController, UITableViewDelegate {
|
|
|
}()
|
|
|
|
|
|
lazy var emptyView: MusicEmptyView = .init(algin: .center, needButton: false)
|
|
|
-// lazy var filterVc: FilterBarViewController = {
|
|
|
-// let vModel = FilterBarViewModel(videos: viewModel?.videos ?? [], barTyle: .default, selectedVideos: [], sortType: .downTime)
|
|
|
-// vModel.isFromPlaylist = true
|
|
|
-// vModel.playlist = viewModel?.playlist
|
|
|
-// let top = FilterBarViewController(viewModel: vModel)
|
|
|
-// top.needSearch = false
|
|
|
-// top.delegate = self
|
|
|
-// return top
|
|
|
-// }()
|
|
|
+ lazy var filterVc: FilterBarViewController = {
|
|
|
+ let vModel = FilterBarViewModel(videos: viewModel?.videos ?? [], barTyle: .default, selectedVideos: [], sortType: .downTime)
|
|
|
+ vModel.isFromPlaylist = true
|
|
|
+ vModel.playlist = viewModel?.playlist
|
|
|
+ let top = FilterBarViewController(viewModel: vModel)
|
|
|
+ top.needSearch = false
|
|
|
+ top.delegate = self
|
|
|
+ return top
|
|
|
+ }()
|
|
|
|
|
|
lazy var topView: SongListTopView = {
|
|
|
let top = SongListTopView()
|
|
@@ -132,12 +132,8 @@ class PlaylistDetailViewController: LWBGViewController, UITableViewDelegate {
|
|
|
guard let self = self else {
|
|
|
return
|
|
|
}
|
|
|
- let isEmpty = self.viewModel?.videos.isEmpty == true
|
|
|
- self.emptyView.isHidden = !isEmpty
|
|
|
- self.topView.isHidden = isEmpty
|
|
|
- self.sortButton.isHidden = isEmpty
|
|
|
- self.manageButton.isHidden = isEmpty
|
|
|
- self.listView.reloadData()
|
|
|
+ self.emptyView.isHidden = self.viewModel?.videos.isEmpty == false
|
|
|
+ self.refreshViews()
|
|
|
}).store(in: &canncellable)
|
|
|
|
|
|
NotificationCenter.default.addObserver(self, selector: #selector(reloadDatas), name: .K_RefreshNotifaction, object: nil)
|
|
@@ -218,12 +214,29 @@ class PlaylistDetailViewController: LWBGViewController, UITableViewDelegate {
|
|
|
}
|
|
|
|
|
|
@objc func showManageViewController() {
|
|
|
-
|
|
|
+ }
|
|
|
+
|
|
|
+ func refreshViews() {
|
|
|
+ if viewModel?.videos.isEmpty == true {
|
|
|
+ filterVc.view.isHidden = true
|
|
|
+ } else {
|
|
|
+ filterVc.view.isHidden = false
|
|
|
+ }
|
|
|
+ filterVc.viewModel?.selectedVideos = []
|
|
|
+ filterVc.viewModel?.videos = viewModel?.videos ?? []
|
|
|
+ filterVc.updateBarInfo()
|
|
|
+ filterVc.mutiDoneButtonClicked()
|
|
|
+ listView.reloadData()
|
|
|
+ resetViews()
|
|
|
}
|
|
|
|
|
|
override func addChildren() {
|
|
|
super.addChildren()
|
|
|
+ addChild(filterVc)
|
|
|
view.addSubview(navBar)
|
|
|
+ view.addSubview(filterVc.view)
|
|
|
+ filterVc.didMove(toParent: self)
|
|
|
+
|
|
|
// navBar.appendRightItem(item: sortButton)
|
|
|
// navBar.appendRightItem(item: manageButton)
|
|
|
// navBar.appendRightItem(item: moreButton)
|
|
@@ -246,9 +259,14 @@ class PlaylistDetailViewController: LWBGViewController, UITableViewDelegate {
|
|
|
// make.top.equalTo(navBar.snp.bottom).offset(16)
|
|
|
// make.height.equalTo(44)
|
|
|
// }
|
|
|
+ filterVc.view.snp.makeConstraints { make in
|
|
|
+ make.horizontalEdges.equalToSuperview().inset(16)
|
|
|
+ make.top.equalTo(navBar.snp.bottom)
|
|
|
+ make.height.equalTo(40)
|
|
|
+ }
|
|
|
|
|
|
listView.snp.makeConstraints { make in
|
|
|
- make.top.equalTo(navBar.snp.bottom).offset(12)
|
|
|
+ make.top.equalTo(filterVc.view.snp.bottom).offset(12)
|
|
|
make.bottom.leading.trailing.equalToSuperview()
|
|
|
}
|
|
|
emptyView.snp.makeConstraints { make in
|
|
@@ -262,6 +280,7 @@ class PlaylistDetailViewController: LWBGViewController, UITableViewDelegate {
|
|
|
let model = vM.videos[indexPath.row]
|
|
|
if viewModel?.isMuti == true {
|
|
|
vM.addToSelectedList(video: model)
|
|
|
+ filterVc.viewModel?.selectedVideos = vM.selectedVideos
|
|
|
listView.reloadData()
|
|
|
} else {
|
|
|
PlayerManager.shared.playVideo(video: model, list: vM.videos, scene: .local, onceAdKey: viewModel?.playlist?.id?.uuidString ?? "DefaultPlaylist")
|
|
@@ -275,3 +294,58 @@ class PlaylistDetailViewController: LWBGViewController, UITableViewDelegate {
|
|
|
canncellable.removeAll()
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+extension PlaylistDetailViewController: FilterBarViewControllerDelegate {
|
|
|
+ func selectedAllVideo() {
|
|
|
+ guard let viewModel = viewModel else { return }
|
|
|
+ if filterVc.viewModel?.selectedVideos.count == viewModel.videos.count {
|
|
|
+ viewModel.selectedVideos = []
|
|
|
+ } else {
|
|
|
+ viewModel.selectedVideos = viewModel.videos
|
|
|
+ }
|
|
|
+ filterVc.viewModel?.selectedVideos = viewModel.selectedVideos
|
|
|
+ listView.reloadData()
|
|
|
+ }
|
|
|
+
|
|
|
+ func doneMutiManage() {
|
|
|
+ guard let viewModel = viewModel else { return }
|
|
|
+
|
|
|
+ viewModel.selectedVideos = []
|
|
|
+ filterVc.viewModel?.selectedVideos = viewModel.selectedVideos
|
|
|
+ listView.reloadData()
|
|
|
+ }
|
|
|
+
|
|
|
+ func resetViews() {
|
|
|
+ listView.snp.updateConstraints { make in
|
|
|
+ if viewModel?.isMuti == true {
|
|
|
+ make.bottom.equalToSuperview().offset(-180)
|
|
|
+ } else {
|
|
|
+ make.bottom.equalToSuperview()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ emptyView.snp.updateConstraints { make in
|
|
|
+ if viewModel?.isMuti == true {
|
|
|
+ make.bottom.equalToSuperview().offset(-180)
|
|
|
+ } else {
|
|
|
+ make.bottom.equalToSuperview()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ func localSearchDidClicked() {
|
|
|
+ }
|
|
|
+
|
|
|
+ func topBarTypeDidChange(barType: MineRingTopType) {
|
|
|
+ viewModel?.isMuti = barType == .mutiselect
|
|
|
+ listView.reloadData()
|
|
|
+ resetViews()
|
|
|
+ }
|
|
|
+
|
|
|
+ func sortTypeDidChange(sortType: SortType) {
|
|
|
+ viewModel?.sortType = sortType
|
|
|
+ viewModel?.requestData()
|
|
|
+ if viewModel?.videos.isEmpty == false {
|
|
|
+ listView.scrollToRow(at: .init(row: 0, section: 0), at: .top, animated: false)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|