Music_Player3/MusicPlayer/MP/MPSideA/ViewControllers/Center(个人资源)/MPSideA_CenterViewController.swift
2024-05-11 09:48:37 +08:00

195 lines
7.8 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// CenterViewController.swift
// MusicPlayer
//
// Created by Mr.Zhou on 2024/3/27.
//
import UIKit
///
class MPSideA_CenterViewController: MPSideA_BaseViewController {
@IBOutlet weak var tableView: UITableView!{
didSet{
if #available(iOS 15.0, *) {
tableView.sectionHeaderTopPadding = 0
}
tableView.estimatedRowHeight = 200
tableView.rowHeight = UITableView.automaticDimension
//tableView
tableView.contentInset = .init(top: 27*width, left: 0, bottom: 100*width, right: 0)
tableView.dataSource = self
tableView.delegate = self
tableView.register(UINib(nibName: CenterTableViewCellID, bundle: nil), forCellReuseIdentifier: CenterTableViewCellID)
}
}
@IBOutlet weak var noticeView: UIView!
private let CenterTableViewCellID = "MPSideA_CenterTableViewCell"
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .init(hex: "#000000")
//
nullMusicAction = {
[weak self] in
//
self?.reload()
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
NotificationCenter.notificationKey.add(observer: self, selector: #selector(successfullCreateAction), notificationName: .sideA_creat_music)
NotificationCenter.notificationKey.add(observer: self, selector: #selector(fileMissAction(_ :)), notificationName: .sideA_null_music)
reload()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
NotificationCenter.default.removeObserver(self)
}
//
private func reload() {
MPSideA_LoadDataMusic.shared.reloadListData()
//
if MPSideA_LoadDataMusic.shared.userlistMusics.count == 0 {
//
noticeView.isHidden = false
}else {
noticeView.isHidden = true
}
tableView.showMessage(MPSideA_LoadDataMusic.shared.userlistMusics.count)
tableView.reloadData()
}
//
@objc private func successfullCreateAction() {
DispatchQueue.main.async {
[weak self] in
self?.reload()
}
}
//
@IBAction func setActionClick(_ sender: UIButton) {
let setVC = MPSideA_SettingViewController()
navigationController?.pushViewController(setVC, animated: true)
}
///
@IBAction func addClick(_ sender: UIButton) {
MPSideA_ModalType = .Choice
let addVC = MPSideA_AddViewController()
addVC.modalPresentationStyle = .custom
addVC.transitioningDelegate = self
present(addVC, animated: true)
}
}
//MARK: - tableView
extension MPSideA_CenterViewController: UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return MPSideA_LoadDataMusic.shared.userlistMusics.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: CenterTableViewCellID, for: indexPath) as! MPSideA_CenterTableViewCell
cell.musicView = MPSideA_LoadDataMusic.shared.userlistMusics[indexPath.row]
cell.moreBlock = {
[weak self] (sender) in
self?.moreAction(sender, music: MPSideA_LoadDataMusic.shared.userlistMusics[indexPath.row])
}
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let music = MPSideA_LoadDataMusic.shared.userlistMusics[indexPath.row].music
//
guard MPSideA_MediaCenterManager.shared.getMusic()?.identifier != music.identifier else {
//
switch MPSideA_MediaCenterManager.shared.getPlayerState() {
case .Null://
MPSideA_MediaCenterManager.shared.playerStart(music, actionType: .Normal)
case .Playing://
break
case .Pause://
MPSideA_MediaCenterManager.shared.playerResume()
}
reload()
return
}
//
MPSideA_MediaCenterManager.shared.playerStart(music, actionType: .Normal)
reload()
}
}
//MARK: - Popover
extension MPSideA_CenterViewController: UIPopoverPresentationControllerDelegate, UIViewControllerTransitioningDelegate {
//
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return .none
}
//
private func moreAction(_ sender:UIButton, music:MPSideA_MusicViewModel) {
//popover
let moreVC = MPSideA_MoreViewController()
//moreVC
moreVC.preferredContentSize = .init(width: 130*width, height: 65*width)
moreVC.modalPresentationStyle = .popover
moreVC.renameBlock = {
[weak self] in
self?.renameAction(music)
}
moreVC.deleteBlock = {
[weak self] in
self?.deleteAction(music)
}
let popoverVC = moreVC.popoverPresentationController
popoverVC?.delegate = self
//
popoverVC?.sourceView = sender
popoverVC?.backgroundColor = .init(hex: "#434343")
//
popoverVC?.permittedArrowDirections = .right
present(moreVC, animated: true)
}
//
private func renameAction(_ music:MPSideA_MusicViewModel) {
MPSideA_ModalType = .Rename
let renameVC = MPSideA_RenameViewController()
renameVC.renameBlock = {
[weak self] (name) in
music.music.title = name
MPSideA_MusicModel.save()
//
if music.music.identifier == MPSideA_MediaCenterManager.shared.getMusic()?.identifier {
//
MPSideA_MediaCenterManager.shared.setMusic(music.music)
NotificationCenter.notificationKey.post(notificationName: .sideA_rename_music)
}
//
self?.reload()
}
renameVC.transitioningDelegate = self
renameVC.modalPresentationStyle = .custom
present(renameVC, animated: true)
}
//
private func deleteAction(_ music:MPSideA_MusicViewModel) {
MPSideA_ModalType = .Delete
let deleteVC = MPSideA_DeleteViewController()
deleteVC.deleteBlock = {
[weak self] in
//
if music.music.identifier == MPSideA_MediaCenterManager.shared.getMusic()?.identifier {
MPSideA_MediaCenterManager.shared.setMusic(nil)
//
MPSideA_MediaCenterManager.shared.playerStop()
//
NotificationCenter.notificationKey.post(notificationName: .sideA_close_show)
}
MPSideA_MusicModel.delete(music.music)
//
self?.reload()
}
deleteVC.transitioningDelegate = self
deleteVC.modalPresentationStyle = .custom
present(deleteVC, animated: true)
}
func presentationController(forPresented presented: UIViewController, presenting: UIViewController?, source: UIViewController) -> UIPresentationController? {
return MPSideA_PresentationController(presentedViewController: presented, presenting: presenting)
}
}