Files

109 lines
4.0 KiB
Swift

//
// ViewController+UITableViewDelegate.swift
// SimpleVideoEditor
//
// Created by RenZhu Macro on 2020/7/9.
// Copyright © 2020 RenZhu Macro. All rights reserved.
//
import Foundation
import MetalVideoProcess
extension ViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
//selected
if tableView == self.mainTableView {
let item = self.mainResources[indexPath.row]
self.mainSelectedItem = item
currentPostion = item.transformFilter?.translation ?? Position(0.0, 0.0)
self.mainEditButton.isEnabled = true
self.mainDeleteButton.isEnabled = true
self.subEditButton.isEnabled = false
self.subDeleteButton.isEnabled = false
self.subSelectedItem = nil
guard let subIndex = self.subTableView.indexPathForSelectedRow else {
return
}
self.subTableView.deselectRow(at: subIndex, animated: true)
} else {
let item = self.subResources[indexPath.row]
self.subSelectedItem = item
currentPostion = item.transformFilter?.translation ?? Position(0.0, 0.0)
self.mainEditButton.isEnabled = false
self.mainDeleteButton.isEnabled = false
self.subEditButton.isEnabled = true
self.subDeleteButton.isEnabled = true
self.mainSelectedItem = nil
guard let mainIndex = self.mainTableView.indexPathForSelectedRow else {
return
}
self.mainTableView.deselectRow(at: mainIndex, animated: true)
}
}
}
extension ViewController: TableViewDraggerDelegate {
func dragger(_ dragger: TableViewDragger, moveDraggingAt indexPath: IndexPath, newIndexPath: IndexPath) -> Bool {
if dragger == self.mainDragger! {
let item = self.mainResources[indexPath.row]
self.mainResources.remove(at: indexPath.row)
self.mainResources.insert(item, at: newIndexPath.row)
mainTableView.moveRow(at: indexPath, to: newIndexPath)
} else {
let item = self.subResources[indexPath.row]
self.subResources.remove(at: indexPath.row)
self.subResources.insert(item, at: newIndexPath.row)
subTableView.moveRow(at: indexPath, to: newIndexPath)
}
return true
}
func dragger(_ dragger: TableViewDragger, didEndDraggingAt indexPath: IndexPath) {
dragger.tableView?.reloadData()
}
func dragger(_ dragger: TableViewDragger, willEndDraggingAt indexPath: IndexPath) {
self.rebuildPipeline()
}
}
extension ViewController: TableViewDraggerDataSource {
}
extension ViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if self.mainTableView == tableView {
return self.mainResources.count
} else {
return self.subResources.count
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if self.mainTableView == tableView {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "mainCell", for: indexPath) as? ResourceItemTableViewCell else {
return UITableViewCell()
}
let item = self.mainResources[indexPath.row]
cell.textLabel?.text = NSString(format: "t:%d s:%@ d:%@", item.trackID, item.startTimeText, item.durationText) as String
return cell
} else {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "pipCell", for: indexPath) as? ResourceItemTableViewCell else {
return UITableViewCell()
}
let item = self.subResources[indexPath.row]
cell.textLabel?.text = NSString(format: "t:%d s:%@ d:%@", item.trackID, item.startTimeText, item.durationText) as String
return cell
}
}
}